{ "posts" : [
{
"title": "Flexibits Premium giveaway!",
"url": "/2024/03/18/flexibits-premium-giveaway/",
"tags": ["giveaway","macos"],
"date": "Mar 18th, 2024",
"ts": "1710766800",
"summary": "I 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 re reading this via RSS, you 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/22/24 at 12:00 PM. Name: Yes, sign me up for the BrettTerpstra.com mailing list. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you 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","brettterpstra","calendar","cardhop","central","check","email","entries","fantastical","flexibits","friday","giveaway","mastodon","premium","scheduling","winners","access","across","address","among","appreciated","awesome","below","beyond","breeze","brettterpstra","calendars","calls","codes","contacts","cooperation","developer","devices","drawing","email","enter","entry","excited","featured","features","first","generating","giveaway","giveaways","incredibly","license","mailing","makes","maybe","meetings","misuse","names","offer","organizing","person","powerful","premium","productive","randomly","reading","replacement","required","robot","series","signups","single","skipped","subscription","subscriptions","tasks","through","tuned","unlocks","useful","valid","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 16th, 2024",
"ts": "1710612000",
"summary": "I wanted short urls for Dimspirations , and I wanted a custom domain name (dim.moi), but didn 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 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 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 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 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 s such a simple concept that I m sure there are dozens, if not hundreds, of permutations of it. This is just the one I found the easiest to hack away at and",
"keywords": ["bitly","domain","hyperlink","mysql","shortner","accept","allow","amazon","check","cloudfront","default","dimspirations","dreamhost","dropzone","github","hopefully","readme","shortly","shorty","subdomain","added","adding","additions","append","appending","aside","automatically","bandwidth","basic","before","bucket","build","built","called","calls","changes","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","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","running","script","seemed","server","servers","settings","setup","share","shared","sharing","short","shorten","shortened","shortener","shortening","shortens","simple","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 15th, 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 t hear anything! If you didn 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 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","series","simple","sorry","suggest","through","today","upcoming","winners","worth"]
},{
"title": "Bike giveaway!",
"url": "/2024/03/11/bike-giveaway/",
"tags": ["giveaway","macos","support"],
"date": "Mar 11th, 2024",
"ts": "1710162000",
"summary": "I 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 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 re reading this via RSS, you 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 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","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 8th, 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 t hear anything! If you didn 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 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","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 4th, 2024",
"ts": "1709560800",
"summary": "I 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 re reading this via RSS, you 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 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 2nd, 2024",
"ts": "1709395920",
"summary": "I ve created the initial round of merchandise for the Dimspirations Store . I know my sense of humor isn t for everyone, which is why this whole project is on a different site. I ve started with some of my personal favorites as tees, mugs, and a 2024 calendar. The collection will grow over time (it s print-on-demand, no cost to me to expand the selection). I ll also adjust pricing based on feedback. I think the prices are pretty competitive based on what I ve spent on merch myself. I m using Sellfy for the printing and delivery. I 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 s hope it works out. If it does, I 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 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 .",
"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","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 1st, 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 t hear anything! If you didn 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 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","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 29th, 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 m not an Alfred user myself, so I haven 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 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","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 29th, 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 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 re addressing a colleague, client, or team member, a friendly salutation can go a long way in fostering goodwill. 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 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 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 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 cannot attend, kindly let us know so we can make the necessary arrangements. If you are concerned",
"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","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","sales","salutation","sanebox","scheduled","seamlessly","serve","slides","sometimes","sounding","specific","specificity","specify","sponsored","sponsoring","steps","strong","success","takes","tasks","thank","thanks"]
},{
"title": "Dimspire.me on Product Hunt",
"url": "/2024/02/29/dimspire-dot-me-on-product-hunt/",
"tags": ["dimspirations"],
"date": "Feb 29th, 2024",
"ts": "1709218320",
"summary": "On a whim I ve put the new Dimspire.me site up on Product Hunt . I ve been putting a lot of love into it and even if I were to stop now, I think it s a great collection of nihilist inspirations (and wallpapers), enough to last quite a while. I d love it if you d take a second and leave a review.",
"keywords": ["inspirational","nihilism","nihilist","dimspire","product","thanks","collection","enough","great","inspirations","leave","nihilist","putting","second","think","wallpapers","while"]
},{
"title": "Black Ink giveaway!",
"url": "/2024/02/26/black-ink-giveaway/",
"tags": ["giveaway","macos"],
"date": "Feb 26th, 2024",
"ts": "1708956000",
"summary": "I 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 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 re reading this via RSS, you 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 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","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 24th, 2024",
"ts": "1708794480",
"summary": "I 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 s new stuff: Thanks for supporting this little project. I 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 ve received some flack for occasionally going political with the Dimspirations. I don 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 don 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","merch","monetize","occasionally","online","outrage","pithy","political","posters","project","promise","reader","receive","received","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 23rd, 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 t hear anything! If you didn 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 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","series","sorry","subscription","suggest","through","upcoming","winners","worth","yesterday"]
},{
"title": "Dimspire.me",
"url": "/2024/02/22/dimspire-dot-me/",
"tags": ["dimspirations","personal"],
"date": "Feb 22nd, 2024",
"ts": "1708630980",
"summary": "I couldn t sleep last night. I m not manic, I m just going through this months-long bout of insomnia. At least I don t think I m manic. It doesn t have any of the characteristics of my usual mania. And up until last night I wasn t even getting out of bed when I couldn t sleep. But last night I did, and I made you a website. Introducing Dimspire.me . It 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 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 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 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 s a good solution. I hope you enjoy it. It s cathartic for me to create these, and they re getting better with time. I m not going to try to monetize any of this at this point, but I 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 but it always freaks me out how much data social sites collect when you include their button, so I ll need to figure out ways around that. We ll call that next step.",
"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","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","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 22nd, 2024",
"ts": "1708610400",
"summary": "Thanks to Keep It for sponsoring BrettTerpstra.com this week! If you 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 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 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 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 things by tags easy, and works",
"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 19th, 2024",
"ts": "1708351200",
"summary": "I 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 re reading this via RSS, you 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 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","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 17th, 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 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 R keys of the left half are Canal Blue, the right half is Water Blue. One nice thing about ceramic keycaps isthe way they glow when backlit. If you don t have a backlit keyboard, you ll only be concerned with the sound and weight, which I ll detail below. But if you have backlighting: Unlike shine-through keycaps, the legends are actually harder to read when backlit. I m a touch typist and never look at my keys, so it s kind of a moot point for me. The only time I need to look at the keyboard is when I m typing a number without my fingers on the home row (e.g. 2FA auth code when I 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 ve seen. This will depend on personal preference, and there are plenty of backlighting setups I ve never tried, but: The keys have a shine to them. They look like a polished plastic. I guess they look like what you d expect a laquered ceramic surface to look like. I find it pleasing, but again, it s going to depend on personal preference. If you like multi-colored keyboards, you 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 white switches with ceramic keys have less click. At first blush, this is a con to me. I picked the box white switches for my UHK because they had what I found to be the perfect amount of clickiness with PBT",
"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","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","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 16th, 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 t hear anything! If you didn 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 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","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 12th, 2024",
"ts": "1707760920",
"summary": "I 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 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 re in the mood to be dimspired, check them out. By the way, if you 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 t know if anyone would actually pay for these. I 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 m very adept at), but would be open to any suggestions as to what the best way to accomplish this would be. I m not even opposed to WordPress with some custom plugins (which I 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","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 12th, 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 ve mentioned HoudahSpot plenty of times, but there s an app that s been around since about 2005 that has been continually updated and only costs $6-10 that 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 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 uses a pay-what-you-can shareware model (oh, the old days!). Here s a great review from Allison Sheridan with much more detail. toketaWare has ceased trading If you 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 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 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 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","hidden","ithoughts","image","indexing","library","little","major","makes","mapping","mentioned","model","moved","multiple","needs","partnership","photo","photos","platform","plenty","preferences","productivity","releases","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 12th, 2024",
"ts": "1707746400",
"summary": "I 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 s a tool no aspiring productivity enthusiast should be without. Most people don t know that they need FastScripts until, well, they need it. Whether you re an experienced Mac scripter or just have one script that somebody wrote for you once that you 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 re reading this via RSS, you 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 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","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 9th, 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 t hear anything! If you didn 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 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 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","hundreds","notifications","received","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 8th, 2024",
"ts": "1707412980",
"summary": "I 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 be it nvUltra, Obsidian, or anything Markdown-based 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 t what you hoped for, or nvALT is no longer working on your machine and you re stuck with a bunch of RTF files, I 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 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 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 t worry, the Shortcut isn t actually accessing those domains or sending any information to them. Once the conversion has run, you ll get another file dialog at which point you ll create or select an output folder for the Markdown files. I ve tested this on a collection of about 500 notes and it works pretty well. There are some things that don t convert quite right, especially when lists are created in RTF using individual bullet markers. Those aren 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 More info Give it a shot. If you re a Shortcuts pro and have suggestions for improving it, let me know. If you re new to this stuff (like I am) and run into problems, leave a comment or join the forum and let me know. We 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","helping","hoped","implementations","improving","individual","information","install","jackwellborn","leave","lists","longer","machine","markers","mostly","notes","nvalt","nvultra","output","parses","people","permissions","point","presented","problems","pulled","recognized","resulting","right","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 5th, 2024",
"ts": "1707141600",
"summary": "I 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 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 re reading this via RSS, you 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 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","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 2nd, 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 t hear anything! If you didn t win, sorry, but MarsEdit is still worth checking out . If you re a blogger, especially one who uses WordPress, you won 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 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","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 30th, 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 s a better way to do it. I discovered it shortly after posting (StackExchange thread), and received a few comments mentioning it. So here 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","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 29th, 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 t. There 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 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 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 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 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 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","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 29th, 2024",
"ts": "1706536800",
"summary": "I 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 re reading this via RSS, you 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 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 26th, 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 t hear anything! If you didn t win, sorry, but OmniFocus is still worth checking out . If you 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 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","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 25th, 2024",
"ts": "1706191200",
"summary": "Thanks to ScreenFloat for sponsoring BrettTerpstra.com this week! I was a frequent user of the original version, and I m very excited to see version 2 released. It s chock full of new features and tools that set it apart from the competition. Hi, my name s Matthias, I 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 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 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 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. 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","metadata","optionally","options","organize","original","others","painstakingly","picture","points","rebuilt","record","recordings","redacted","redactions","reframing","release","released","repetitive","resize","restore","retinize","right","rotate","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 22nd, 2024",
"ts": "1705932000",
"summary": "I m excited to offer the next giveaway, three Standard licenses for all platforms ($74.99 value) for OmniFocus 4 . If you ve played around with productivity apps on Mac or iOS, you ve seen OmniFocus. It s the most complete task management system available on macOS and iOS. Tagging, projects, quick entry, easy search, extensive automation there s nothing it can t do. Among many other improvements, the latest version streamlines the interface, makes keyboard usage on iOS compatible with macOS, and doesn 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 re reading this via RSS, you 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 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","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","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 19th, 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 t hear anything! If you didn 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 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","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 18th, 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 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 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","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 17th, 2024",
"ts": "1705523160",
"summary": "I ve been putting a little more time into CurlyQ this week, as I m able. First thing to note is a breaking change: it will always return an array now, even if there 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 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 s screenshot capability in the intro post, but it 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 t know offhand why you d do that, but it s",
"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","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 15th, 2024",
"ts": "1705327200",
"summary": "I 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 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 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 re reading this via RSS, you 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 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","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 12th, 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 t hear anything! If you didn 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 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","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 10th, 2024",
"ts": "1704905280",
"summary": "Today I m releasing an initial version of my latest tool, CurlyQ . It 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 s missing, and what you d like to do with it that it can t handle yet. Join me in the forum to discuss 1 ! 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 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 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 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 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 are also tools for extracting content between two",
"keywords": ["element","javascript","selenium","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","based","because","before","between","block","blocked","breakdown","browser","built","capabilities","capability","certain","children","choice","chores","class","command","comment","configured","contained","containing","content","contents","create","curling","custom","cycle","designed","details","detects","doesn","dynamic","easily","elegantly","element","empty","errors","examine","example","except","expectations","extra","extract","extracting","fails","fallback","feedback","filtered","flags","flesh","forum","functionality","getting","greatly","gzipped","handle","handles","handling","header","headers","headless","helper","hierarchy","image","images","immediate","incorporates","information","initial","input","inside","installation","instance","language","largest","latest","limited","links","loaded","located","major","making","manipulation","matches","metadata","miniature","missing","multiple","necessary","negative","offer","optional","output","pages","paragraph","parent","parsing","passing","pipeline","positive","possible","print","printed","process","processor","project","queried","queries","query","quietly","regular","releasing","rendered","requests","required","respond","response","responses","results","retrieve","retry","return","returned","returning","right","scraping","screenshot","screenshots","script","scripting","selected","selection","selectors","several","shoot","showing","simple","sites","someday","source","specific","specify","strings","stylesheets","subcommand","support","target","through","thumbnails","title","tools","topic","types","usage","useful","using","validate","various","version","versions","visible"]
},{
"title": "Keyboard Maestro giveaway!",
"url": "/2024/01/08/keyboard-maestro-giveaway/",
"tags": ["automator","giveaway","keyboard","macos"],
"date": "Jan 8th, 2024",
"ts": "1704722400",
"summary": "I 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 re reading this via RSS, you 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 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 5th, 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 t hear anything! If you didn t win, sorry, but App Tamer is still worth checking out . If you want your apps to run faster, it 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 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","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 1st, 2024",
"ts": "1704117600",
"summary": "I 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 re using most. App Tamer will automatically slow down or pause your applications whenever you 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 re reading this via RSS, you 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 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","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 29th, 2023",
"ts": "1703883600",
"summary": "Another silly little rabbit hole I ve gone down 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 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","'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'","little","local","lyricjs","lyrics","lyrics'","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 29th, 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 t hear anything! If you didn t win, sorry, but Curio is still worth checking out . You can still save 27% (in honor of Curio 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 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","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 26th, 2023",
"ts": "1703599200",
"summary": "I 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 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 t just obscured for readers and recipients, they 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 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: To get your token, log into your Bit.ly account. If you don t have one, you can create a free one. The whole point of using Bit.ly for this is to have trackable links, so you definitely need an associated account. Once logged in, go to https://app.bitly.com/settings/api . You ll see a field where you can enter your account password (the same one you logged in with), then click Generate Token. Assuming a correct password, you ll be presented with a long alphanumeric string. That s what you ll copy into the setting in your config file. The setting is for users who ve set up a custom domain. If you haven t, you can just leave this set to bit.ly . Once configured, just select any text containing at least one valid URL, run Services- Bitlyize (either from app menu or by right clicking) and give it a couple seconds to contact the API. If you re curious about how I m running Services these days, as shown in the movie above,",
"keywords": ["clipboard","shortener","shortening","amazon","anyway","apple","assuming","available","bitly","bitlyize","changelog","checkurls","clipboard","command","donate","download","expand","extension","homebrew","installing","paletro","popclip","preview","published","rails","searchlink","service","services","setapp","shorten","token","tools","updated","above","account","affiliate","alphanumeric","analytics","anymore","article","associated","attributes","before","below","bitly","blogging","called","changing","click","clicking","clipboard","codes","command","comments","config","configuration","configured","connected","contact","containing","contains","country","couple","create","creating","curious","custom","deeper","default","definitely","descriptive","designed","detect","detected","doesn","domain","double","download","downside","editable","either","enter","expand","field","fields","figured","function","gives","haven","holidays","https","itunes","included","includes","individually","information","input","install","installing","latter","leave","lengthen","lengthened","links","little","located","logged","longer","macos","makes","modify","movie","multiple","needs","obscured","often","opaque","origin","original","outputs","pallete","parses","passed","password","paste","point","presented","preview","previews","programmatically","quick","quickly","rather","readable","readers","recipients","recommend","referrer","replaces","requires","right","running","safety","script","seconds","section","selected","separate","service","services","setting","settings","short","shorten","shortened","shortener","shown","simply","single","sketchy","string","swapping","taking","title","token","trackable","tradeoffs","trying","updated","users","using","utility","valid","verification","version","versions","weigh","whatever","where","whole"]
},{
"title": "Weather forecasts for SearchLink",
"url": "/2023/12/25/weather-forecasts-for-searchlink/",
"tags": ["plugin","search","searchlink","weather"],
"date": "Dec 25th, 2023",
"ts": "1703531400",
"summary": "It s unseasonably warm for Christmas here in Minnesota. It 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 embed style, it won t provide a URL for your forecast. It 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 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 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 ll see your API key at the top. Add that to your config file like so: Note the setting, which can be c or f 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 re interested in creating your own plugins for any kind of search, it 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 25th, 2023",
"ts": "1703512800",
"summary": "🎄 Merry Christmas! I 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 re reading this via RSS, you 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 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 23rd, 2023",
"ts": "1703353860",
"summary": "I do most of my automation and string manipulation scripting using Ruby. I know it s not the most popular language these days, but it s the one I know the best (thanks to my days of hacking on TextMate bundles) and it 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 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 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 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 t do anything if the key is already a symbol. I hope that s useful for aspiring Ruby scripters. If there 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 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","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 22nd, 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 t hear anything! If you didn 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 ll love it. It 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 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","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 22nd, 2023",
"ts": "1703264040",
"summary": "Ok, this one will probably wrap up this little run of key binding tricks. It s been fun, though, and I d love to answer any questions I can in the forum . If you ve ever examined my master (or even looked at the readme), you ll see that I make use of a lot of multi-stroke key combos. There are only so many key combinations available, and you re bound to run out of ones that don 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 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 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","blogsmith","bundle","deeper","going","keybindings","markdown","mnemonics","plist","searchlink","textmate","again","answer","assign","assignment","available","binding","bindings","bound","brackets","check","child","clipboard","combination","combinations","combos","commands","conflict","container","context","continue","create","creating","either","examined","example","followed","forum","grouping","initial","inserted","insertions","inserts","inside","inspiration","keyboard","keyed","keystrokes","letter","letters","limitless","little","logical","looked","magic","master","meaningful","memorably","mnemonic","modifier","multi","mutli","nested","nesting","paste","possibilities","press","project","questions","readme","remember","search","secondary","selected","sequences","setting","shortcut","shortcuts","single","stroke","syntax","system","throwback","track","tricks","weird","where","whole"]
},{
"title": "More keybindings: Text editing shortcuts",
"url": "/2023/12/21/more-keybindings-text-editing-shortcuts/",
"tags": ["keybindings","shortcuts","sublimetext","textmate"],
"date": "Dec 21st, 2023",
"ts": "1703195820",
"summary": "I guess it s keybinding week this week. I ve talked about the kill ring and repeat binding , but I 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 s basically their sole purpose), but I wanted to highlight just a few that I use so often I don t even think about it. First, . TextMate was the first place I ever saw this, but now it 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 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 ll show you is the most universal. The reason for this is that is frequently used by apps for special purposes, and the app 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 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 t just type the slashed-O symbol () anymore 1 . If you never type that symbol, then you 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 ll just add them to , a directory and text file you can create if it doesn t exist. The examples include the outer curly brackets, but if you 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 re combining multiple examples from this post, you only want one set of curly brackets at the root, and then the contents can be appended within those curly brackets. Remember that any time you edit the file, you have to restart open apps for the new bindings to be",
"keywords": ["arrow","indentation","keyboard","shortcut","sublime","'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","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","endnote","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 21st, 2023",
"ts": "1703167200",
"summary": "Thanks to HoudahSpot for sponsoring BrettTerpstra.com this week! I ve been using it for years and swear by it as a way to find files that Spotlight can t, quickly and easily. HoudahSpot is a powerful tool for finding and managing files on your Mac, with features beyond Spotlight. Have you shifted by choice or by default 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 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 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 19th, 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 s a mnemonic quality with r for repeat. Choose whatever you like 1 . Once the above command is run, relaunch whatever app you want to test it in. It will work in TextEdit, nvUltra, Bear, Pages 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 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 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 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 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 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 t work for V, which is disappointing because one very common use I could see for it would be to copy something and then paste it X number of times. I can t explain why that doesn t work.",
"keywords": ["repeat","shortcut","another","apple","choose","cocoa","command","control","drang","launchbar","modifier","pages","shift","symbol","textedit","weirdly","above","action","backwards","because","before","binding","bindings","buffer","change","character","characters","combination","combinations","command","comments","common","conflicts","conscious","consider","control","count","couple","defining","different","digits","disappointing","doesn","easily","effort","elsewhere","emoji","enter","estimating","example","explain","faster","favorite","feature","field","figure","folks","guess","honing","increased","individually","insertions","interested","keyboard","keystrokes","leads","length","macos","mnemonic","movement","native","niche","noted","nvultra","operations","operator","overwrite","password","paste","picker","process","productivity","quality","reachable","readers","recognized","recommend","redacted","relaunch","repeat","repeated","required","restart","restore","second","selected","share","shortcut","shortcuts","similar","special","specify","stick","stored","string","symbol","symbols","takes","thought","times","trick","tricks","typed","undoing","using","whatever","while","willing","words","works","writing","wrong"]
},{
"title": "macOS keybinding tricks: The kill ring",
"url": "/2023/12/18/macos-keybinding-tricks-the-kill-ring/",
"tags": ["editor","keybindings","keyboard","tricks"],
"date": "Dec 18th, 2023",
"ts": "1702929420",
"summary": "So you may have seen my KeyBindings project before. It s an insanely large collection of keybinding tricks that work in any macOS text field. Well, any native cocoa field. You won 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 caret 1 (cursor) is in the line. I ve written a bit about all of this before (and see the KeyBinding series ), but I ll recap the basics for this tip, since it 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 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 t have to do anything to enable this, it s always been built into macOS. I think it also works on iOS, but I don 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 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 ve copied elsewhere, rather than just the last thing you copied. I wouldn t want to function without one. Those apps don t work with the kill commands, though. So here 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 that number anything you want, but be aware that to use items stored in the kill ring, you ll have to",
"keywords": ["arrow","clipboard","cocoa","keyboard","launchbar","shortcut","system","termcap","textmate","'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","comes","command","commands","comments","contain","copied","create","creates","curly","cursor","cycle","cycled","cycling","defaults","details","documents","easily","editing","editor","editors","either","elsewhere","emacs","empty","endnote","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","series","several","shared","shortcuts","since","slots","somewhere","source","srcset"]
},{
"title": "Kaleidoscope giveaway!",
"url": "/2023/12/18/kaleidoscope-giveaway/",
"tags": ["giveaway","macos"],
"date": "Dec 18th, 2023",
"ts": "1702908000",
"summary": "I 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 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 re reading this via RSS, you 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 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","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 17th, 2023",
"ts": "1702849080",
"summary": "This post will only be of interest to people writing scripts in Ruby. Seriously, zero utility if you re not using Ruby. Though I would be curious how you accomplish the same thing in other languages like Rust and Python, because I 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 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 t include groups (i.e. ). So a while back I figured out the solution, and I thought I 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. That 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","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 15th, 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 t hear anything! If you didn t win, sorry, but SpamSieve is still worth checking out . If you re tired of spam, it s a purchase you won 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 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","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 14th, 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 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 11th, 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 t written about tagging for a long time because I felt like, at this point, I 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 m an OmniFocus guy, but I 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 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 11th, 2023",
"ts": "1702303200",
"summary": "I 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 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 re reading this via RSS, you 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 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 9th, 2023",
"ts": "1702156680",
"summary": "I decided to make a Brett 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 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 t list everything I 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 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 ve been doing a lot of therapy this year and only recently discovered Internal Family Systems, which has been a game changer. I won 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 s kind of its own version of therapy (though it can t replace actual therapy.) If you have issues of",
"keywords": ["cookware","elgato","amazon","bipolar","bones","brett","cptsd","carbon","chinese","christina","christmas","cleaner","complex","cookbook","cooking","cordless","corner","darst","decks","definitely","diamond","doing","dyson","elgato","family","favorites","fiction","hardware","healing","health","healthy","homekit","infinite","insteon","internal","jeremy","jesse","kindle","kitchen","klune","knife","lightweight","little","markdown","memoir","mental","minoston","misen","missed","nakiri","noteplan","outlet","overtired","parts","pedal","puppets","richard","robinson","rolling","schwartz","sharpener","smart","socket","steel","stream","street","systems","thanks","therapuetic","timing","tineco","trauma","truly","tumbler","twitch","vacuum","vegan","wicked","yeung","youtube","admit","aluminum","amazing","appreciate","aspiring","audiobook","audiobooks","author","automatically","automating","automation","available","awful","beautiful","because","becoming","before","between","blade","blocking","books","bought","brainstorming","breaking","button","buttons","carbon","caring","cause","chain","changer","channel","cheaper","check","checking","chemical","clean","cluing","coating","combines","combining","computer","control","convenience","cooking","cookware","cough","countless","couple","cover","dairy","decided","definitely","delicious","destroy","digital","dipping","discovered","doing","dominated","dragging","dropping","everything","excellent","executed","explain","favorite","files","filled","first","forefinger","found","gluten","going","great","gripping","guided","handle","hardware","headlight","heartwarming","heats","heavy","helps","human","iphone","importer","impressed","insidiously","investment","issues","journey","jumped","keeping","keywords","kitchen","knife","knives","latter","launch","learn","lighting","lights","little","lives","living","looking","losing","maintenance","makes","meditations","memoir","miles","missed","missing","mostly","moving","multiple","myself","natural","needed","nicely"]
},{
"title": "The Soulver giveaway winners!",
"url": "/2023/12/08/the-soulver-giveaway-winners/",
"tags": ["giveaway"],
"date": "Dec 8th, 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 t hear anything! If you didn 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 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 8th, 2023",
"ts": "1702053060",
"summary": "Welcome to my yearly post about stuff I 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 t list every app I use in this post, it would take forever, but I can highlight some of the outstanding ones. I m going to do this all in one epic post this year. It s going to get long. You could always use Gather to convert it to Markdown, and then make use of all of Marked 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 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 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 m going to quickly list some repeats that are still favorites here at the top. These are apps I ve used for years and still rely on every day, but I ve talked about them plenty and you 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 s Day!). 1Password With the new Passkey and Authenticator possibilities in 1Password, it s a no-brainer for me. I ve trusted it for years and it s never let me down. BetterTouchTool Setapp I talk about BetterTouchTool all the time. Maybe too much. But it s the most amazing automation tool I 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 I ve never found anything close. Choosy Choosy is long in the tooth but still working great. Instead of opening a link in your default browser, you can pop up a",
"keywords": ["setapp","store","acorn","action","actions","affinity","amoeba","apple","aptonic","artifact","audio","authenticator","awesome","bartender","bettertouchtool","brainstorming","brett'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 7th, 2023",
"ts": "1701960540",
"summary": "Thanks to Backblaze for sponsoring BrettTerpstra.com this week! I ve been a user for years and it s saved my hide many times. It 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 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 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 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 for a two year license. Get",
"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 6th, 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 t work if you 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 s metadata, either as MultiMarkdown metadata, or as a YAML header: It 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","super","transclusion","useful","users","version"]
},{
"title": "The SaneBox giveaway winners!",
"url": "/2023/12/05/the-sanebox-giveaway-winners/",
"tags": ["sponsor"],
"date": "Dec 5th, 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 t win, I 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 ve only imagined was possible.",
"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 4th, 2023",
"ts": "1701698400",
"summary": "I 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 re reading this via RSS, you 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 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","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 1st, 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 t hear anything! If you didn 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 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","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 30th, 2023",
"ts": "1701362820",
"summary": "I just pushed v2.1.6 of mdless . Once all these 2.0 changes are confirmed to be stable, I ll let this project go for a while, but right now there s lots to improve on and I 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 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 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 s nothing left, it assumes it 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","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 30th, 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 t heard of SaneBox yet, it 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 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 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","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 27th, 2023",
"ts": "1701093600",
"summary": "I 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 re already well-versed in the command line. It includes great GitHub integration for pull requests and issues. All of Git 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 re reading this via RSS, you 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 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","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 26th, 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 t working. Like at all. I didn 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 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 re in trouble, and lists aren t rendered in sequence anyway, so an array structure to keep track of them is impossible. They 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 t yet been able to track down where that 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 whether it has at least 1 project and 6 total tasks",
"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","running","scrap","seems","sequence","sequencing","setting","settings","simple","since","solid","solution","solutions","sometimes","spacing","starts","structure","styled","surrounding","tasks","testing","theme","think","through","toggled","totally"]
},{
"title": "The Default Folder X giveaway winners!",
"url": "/2023/11/24/the-default-folder-x-giveaway-winners/",
"tags": ["giveaway"],
"date": "Nov 24th, 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 t hear anything! If you didn 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 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 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","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 23rd, 2023",
"ts": "1700752740",
"summary": "I ve updated to 2.0. Well, 2.0.5 at this point. It s a complete overhaul of the command line Markdown parser/viewer . It 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 re no longer indented), but overall it s a big step up. If you 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","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 20th, 2023",
"ts": "1700488800",
"summary": "I 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 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 re reading this via RSS, you 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 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","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 17th, 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 t hear anything! If you didn t win, sorry, but Noteplan is still worth checking out . If you like portable solutions for managing notes, todos, and projects, you can 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 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","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 16th, 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 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 13th, 2023",
"ts": "1699884000",
"summary": "I m excited to offer the next giveaway, 5 1-year subscriptions ($99 value each) for Noteplan . If you love plain text (and Markdown), you 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 re reading this via RSS, you 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 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","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 10th, 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 t hear anything! If you didn t win, sorry, but Hazel is still worth checking out (and I know you 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 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","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 9th, 2023",
"ts": "1699538400",
"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com again this week! Ever wanted to get into scripted snippets but didn 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 8th, 2023",
"ts": "1699465560",
"summary": "I ve had it out there for a while, but I thought I d point out that I ve ported my universal help command to Fish. removes the hassle of figuring out whether a command 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 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 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 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","screen","thought","universal","version","where","while","window","wraps"]
},{
"title": "Hazel giveaway!",
"url": "/2023/11/06/hazel-giveaway/",
"tags": ["giveaway","hazel","macos"],
"date": "Nov 6th, 2023",
"ts": "1699279200",
"summary": "I 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 re reading this via RSS, you 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 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 5th, 2023",
"ts": "1699223220",
"summary": "So it turns out Google now offers an API (once again). It s limited to 100 searches per day for the free version, so I don t want to put my API key into the public distribution of SearchLink, but if you want to tap into Google 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 s not a key set up, it will continue operating as it has using DuckDuckGo. As far as privacy concerns go, these searches don t include any tracking data, so using Google in this manner shouldn 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.65 Download SearchLink v2.3.65 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 01/16/24. Changelog Donate More info",
"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","install","issues","latest","leaving","limited","links","method","offers","operating","plugins","presence","privacy","public","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 3rd, 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 t hear anything! If you didn 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 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","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 2nd, 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. 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 s Merge Wizard, which provides clear context about the conflict. Review your repository s branches with Tower 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 1st, 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 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 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","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 1st, 2023",
"ts": "1698850860",
"summary": "First, I 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 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 s what I came up with. This plugin is a text filter that will turn into , randomly capitalizing characters. It 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 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 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","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 30th, 2023",
"ts": "1698675540",
"summary": "SearchLink 2.3.50 is out and contains fixes for some recent changes in DuckDuckGo 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 t fully understand). Don 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.65 Download SearchLink v2.3.65 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 01/16/24. Changelog Donate More info",
"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","identification","leaving","links","movie","neatly","organized","passes","plugin","project","rather","recent","responses","returning","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 30th, 2023",
"ts": "1698670800",
"summary": "I 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 re reading this via RSS, you 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 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 27th, 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 t hear anything! If you didn t win, sorry, but Scrivener is still worth checking out . If you re a writer, you really should be using Scrivener, and you can still save 20% off using the coupon at checkout. You 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 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","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 26th, 2023",
"ts": "1698325200",
"summary": "Thanks to Sanebox for sponsoring BrettTerpstra.com again this week! I don t know what I 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 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 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 t require immediate attention. Urgent but Not Important (Quadrant III): These tasks demand your immediate attention but aren 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 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 s functions, your inbox goes from being chaotic to organized and manageable. If you re among those buried under a mountain of emails, feeling the strain, it s worth trying the combination of SaneBox and the Eisenhower Matrix. And remember, signing up today can even get",
"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 24th, 2023",
"ts": "1698167640",
"summary": "I 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 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 re separated by project and there 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 m nervous about launching this because I fear nobody will talk and I ll feel unpopular, but I won 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 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 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 re ever interested in building your own. I m also using a free account at Mailgun to handle notification emails and such. I 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 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 ve lost all comment history, but it is what it is. I sincerely hope you ll join, participate, and make a community out of my readership. Don 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 I 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","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","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 23rd, 2023",
"ts": "1698066000",
"summary": "I 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 s the most fully-fledged writing app you 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 t tell you how to write 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 re reading this via RSS, you ll need to visit this post on brettterpstra.com to enter! Sorry, this giveaway has ended. If you have an app you 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","notes","novelists","offer","organization","provides","randomly","reading","ready","research","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 22nd, 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 s icon for artwork, but could be used by anyone with a need for such things. As part of automating the giveaways I m running, I ve had a need to start grabbing app icons again, so I 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 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 ve worked around that. And when a local icon can t be found, I 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 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 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 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 ll publish the rest of the giveaway automation in the future, as it uses some",
"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","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 20th, 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 t hear anything! If you didn 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 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 16th, 2023",
"ts": "1697461200",
"summary": "I 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 m very proud of that. It s the first app I install on a new Mac and I almost can 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 re reading this via RSS, you ll need to visit this post on brettterpstra.com to enter! Sorry, this giveaway has ended. If you have an app you 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 14th, 2023",
"ts": "1697288400",
"summary": "You may have noticed I m running a series of giveaways on this blog. Literally every developer I ve reached out to has been willing to put up 1-10 licenses or 1-year subscriptions for their app, and I m extremely pleased with the list I ve put together . In an effort to keep track of all of them, I ve built some (if I do say so myself) impressive automation around this project, and I thought I d share. It s some mad science, but it 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 s still time to enter A drawing of the winners, and notification emails sent to them, on Friday An announcement post listing the winner s names and upcoming giveaways, also on Friday 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 header 1 . (Social sharing images and WEBP versions are automatically generated from the header images using RetroBatch .) So that 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 I can easily jump back to it. It also creates a list of upcoming giveaways, saved twice, once to a Markdown file with the secret slugs used to populate and query",
"keywords": ["email","markdown","brettterpstra","easily","firebase","friday","giveaway","hazel","hookmark","imagemagick","jekyll","literally","markdown","monday","retrobatch","robot","sendy","slotting","social","sunday","terminal","thursday","wednesday","above","adding","adjust","alert","almost","alter","announcement","anyone","apply","array","aside","automate","automatically","automation","available","background","based","because","becomes","behind","blurb","blurbs","build","building","built","calendar","called","charge","check","clipboard","codes","command","containing","conversation","conversations","converted","copies","corporate","coupons","create","creates","creation","cushy","database","dates","depends","desktop","details","developer","discussion","doing","double","doubt","drafts","drawing","easily","effort","elapsed","email","emails","enter","entrants","entries","entry","execute","extract","fateful","files","folder","followup","format","freelance","fulfilling","fulfillment","fully","generated","generates","generation","giveaway","giveaways","going","grand","great","growing","handling","hardcoded","haven","header","holes","hooked","hourly","hours","ideas","images","impressive","includes","including","individual","kinda","letting","license","licenses","lined","linking","links","listing","literally","locally","looking","major","manually","master","media","mentioned","minutes","moving","multiple","myself","nailing","named","names","nearly","necessary","needs","notes","noticed","notification","opens","options","output","outputs","pasting","personal","pertinent","picking","pieces","pleased","plugin","point","populate","position","positioned","posts","preference","project","publicly","publish","pulled","query","rabbit","random","reached","reads","ready","reasonable","redeem","reminder","reminding","returned","right","robot","rotate","rotated","running","saved","saves","saving","schedule","scheduling","science","screenshot","script","scripts","secret","sends","series","setting","share","shared"]
},{
"title": "The Hookmark giveaway winner!",
"url": "/2023/10/13/the-hookmark-giveaway-winner/",
"tags": ["giveaway","hookmark"],
"date": "Oct 13th, 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 t hear anything! If you didn 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 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","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 12th, 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 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 9th, 2023",
"ts": "1696856400",
"summary": "I 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 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 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 re reading this via RSS, you ll need to visit this post on brettterpstra.com to enter! Sorry, this giveaway has ended. If you have an app you 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","information","keeping","license","linkable","links","lived","mailing","makes","maybe","minute","navigation","notes","objects","offer","provides","randomly","reading","related","research","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 8th, 2023",
"ts": "1696804260",
"summary": "Recent releases of Marked have fixed Bear compatibility on Sonoma. As part of this, I ve updated the Bear style for Marked, and written a little custom preprocessor to handle Bear s (CommonMark) syntax properly. If you want a Marked preview styled to look exactly like Bear (with all of Marked 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 s syntax properly interpreted, you can use the preprocessor with the style of your choosing 1 . 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 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 t the case for you and you need further help, please post on the support forum and I ll update the instructions as needed. For handling Bear s specific syntax, like , underlining, and strikethrough, you ll need a custom preprocessor. Save the following to a file called in a safe folder (one you won 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- Advanced preferences. (To get the absolute path for a file, right click it in Finder, hold down Option, and click Copy bear-preprocess.rb as Pathname . 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 ll want to set your Processor to MultiMarkdown and enable #Text is tag and the sub-item Style tags in Preferences- Processor. Note that the processing will only work if you re not using a custom processor (custom preprocessor like above won 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 . I might eventually add support for Bear (CommonMark) syntax directly to Marked, but the whole purpose of the preprocessor functionality was to handle cases like this, and linking",
"keywords": ["callback","languages","preprocessor","scripting","advanced","click","commonmark","custom","finder","gallery","install","marked","multimarkdown","obsidian","pathname","preferences","preprocessor","processor","recent","sonoma","style","terminal","updated","above","absolute","allows","available","believe","below","called","choosing","click","clickable","clicked","clipboard","combination","coming","command","compatibility","convert","custom","decision","desired","detailed","directly","distributed","documents","eventually","executable","export","features","field","fixed","folder","formatted","forum","fully","functionality","handle","handler","handles","handling","headers","instructions","internal","internally","interpreted","linked","linking","links","little","longer","macos","makes","making","markedapp","modify","navigation","needed","notes","nvultra","options","override","paste","point","preference","preferences","preprocess","preprocessor","preview","processing","processor","properly","releases","repurposed","requires","right","script","setting","special","specific","strikethrough","style","styled","styling","support","syntax","system","terminal","titles","underline","underlines","underlining","understandable","updated","using","whole","written"]
},{
"title": "The Timing giveaway winner!",
"url": "/2023/10/06/the-timing-giveaway-winner/",
"tags": ["giveaway"],
"date": "Oct 6th, 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 t hear anything! If you didn 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 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","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 5th, 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 or Bear 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 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 t working anymore. The current release of the Beta should solve it. I would love some feedback on whether it 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 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","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 5th, 2023",
"ts": "1696510800",
"summary": "Thanks to Dropzone for sponsoring BrettTerpstra.com this week! I 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 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 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. 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 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 2nd, 2023",
"ts": "1696251600",
"summary": "I m excited to offer the next giveaway, a 1-year subscription ($108 value) for Timing . I use Timing daily and it 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 re reading this via RSS, you ll need to visit this post on brettterpstra.com to enter! Sorry, this giveaway has ended. If you have an app you 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","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 30th, 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 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 ve noticed my mood and sleep shifts with the moon phase. I 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 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 s anything it doesn 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","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 29th, 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 t hear anything! If you didn t win, sorry, but CleanShot X is still worth checking out. It s by far the best app for screenshots on the Mac, no matter where or how you 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 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","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 28th, 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 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 s what SaneBox 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 s say you 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 s not just about categorizing. It s about creating an email ecosystem that aligns with your work habits and priorities. The more seamless a process is, the more likely you ll be to use it. So that adaptability is critical. In essence, SaneBox’s Custom Folder feature is more than just about organization. It s about crafting a personalized email experience. It s a testament to how adaptive technology can be when it s designed with the user at its core. If you re still juggling with emails and feeling the stress of a cluttered inbox, perhaps it’s time to give SaneBox’s Custom Folder feature a try. And",
"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 26th, 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 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","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 25th, 2023",
"ts": "1695646800",
"summary": "I 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 re reading this via RSS, you 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 ll draw random winners on Friday, September 29th. Sorry, this giveaway has ended. If you have an app you 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","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 22nd, 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 s purely chance.) Each winner should have received an email with a redeem link/code, please let me know if you didn t hear anything! If you didn t win, sorry, but Tap Forms is still worth checking out. You can easily store and work with any kind of data. It s the missing database app for Mac and iOS. If you didn 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 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","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 20th, 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 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 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 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 m parsing I just test for nil and skip entries that don t contain the information I m trying to output. Unanswered questions don 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 t exist it will now just use Readline for input. When using the inputs, you can t CTRL-c to cancel an entry, which I 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","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 18th, 2023",
"ts": "1695042000",
"summary": "I m starting up giveaways again on BrettTerpstra.com, and I m exited to kick it off with 2 free licenses for Tap Forms for Mac. It s an amazing database product that lets you organize and access your data on any device. It 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 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 14th, 2023",
"ts": "1694715240",
"summary": "So, a long time ago I wrote this Jekyll plugin that does countdowns and I don 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 m running a 40% off Marked sale using the coupon until Saturday, September 16th. Here 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's","apply","checkout","count","countdown","countdowns","coupon","directly","enter","inserts","marked","needed","plugin","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 14th, 2023",
"ts": "1694696400",
"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! I can 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 So you think you know productivity? Can you name 20 different productivity methods? Maybe you 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 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","hours","hyperlinks","including","industry","involves","messages","method","methods","productivity","repeatedly","report","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 11th, 2023",
"ts": "1694448600",
"summary": "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 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 t tested this, I just noted that it should be possible with the addition of the YAML data. For the time being I m not including any string responses in the YAML, as that seems redundant since they re also included in the body text and available to search. This update won 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","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 9th, 2023",
"ts": "1694268000",
"summary": "I 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 ve missed in previously, is my command line tool for reading and modifying TaskPaper files in your projects. I think the biggest thing I 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 t exist, and once it 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 ve added new commands like (see ), and a new option to several commands for removing the @done tag from actions. There s also a flag you can tie into to perform (wildcard-compatible) search and replace. Add to do a regex search and replace. There s a bunch of other new stuff, so I 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 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 t a TTY, don t enable pagination, regardless of global setting Disable pagination when using omnifocus Allow find or grep as synonyms for search option for If a search string contains @tags and exact or regex isn t specified, the @tags",
"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","negative","notes","occasional","omnifocus","output","outside","pagination","parenthesis","passed","placeholders","prefix","previously","project","projects","queries","reading","regardless","regex","removing","replace","represents","reserved","restored","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 7th, 2023",
"ts": "1694091600",
"summary": "Thanks to Timing for sponsoring BrettTerpstra.com this week! I 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 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 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 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 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 7th, 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 t the way it was supposed to work with the dot syntax. Version 1.0.15 fixes this, if a key is repeated it 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","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 6th, 2023",
"ts": "1693976400",
"summary": "I recently started couple 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 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 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 s very flexible (and will probably get more flexible as new needs arise). I haven t written the part of this that can query the datasets created yet. That 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 ll dig into it more once I ve collected enough data. In the meantime, it 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","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 30th, 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 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 t change anything for the user, but it 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 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 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","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 24th, 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 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 s personal news broadcaster, highlighting the headlines while filtering out the noise. With the Digest, you re empowered to take control of your emails and ensure you 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","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 22nd, 2023",
"ts": "1692709200",
"summary": "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 s basically a shortcut for . It s aliased as as well. Both the and commands have a switch that allows you to add a note (prompted if there 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 re among them and have a feature request, don 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","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 21st, 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 s what I ve stuck with for years. As I experiment with my regexes, I 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 s already paid off sufficiently. I just thought I d share 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","including","install","installed","invest","languages","manipulating","options","output","prepared","providing","range","regex","regexes","regular","replace","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 17th, 2023",
"ts": "1692277200",
"summary": "Thanks to Kaleidoscope for sponsoring BrettTerpstra.com again this week! The addition of Git History diffing is excellent, and I m excited to share it with everybody. 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. 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: 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 14th, 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 ve been using this instant coffee when traveling for years. It won 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 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 10th, 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 like Brett 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 3rd, 2023",
"ts": "1691067600",
"summary": "Thanks to Orchard Resales for sponsoring BrettTerpstra.com this week! If you 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 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 ll come out around $100. For a whole server, and it 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 t run the latest macOS, but for 99% of uses, they don t need to, and if you 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","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 1st, 2023",
"ts": "1690901100",
"summary": "Thanks to Sanebox for sponsoring BrettTerpstra.com again this week! I ve been using it for years and I can t imagine my email inbox without it. Drowning in emails? Enter SaneBox your lifesaver. It 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 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 30th, 2023",
"ts": "1690747440",
"summary": "I m afraid you ve been seeing a lot of sponsored posts and not enough posts from me lately, so I thought I 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 ve spent the last couple of weeks trying to unpack what this means for me. So much of the me I 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 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 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 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 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 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 she ll be much more helpful than my last therapist. I have",
"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","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","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","toward","trained"]
},{
"title": "BetterTouchTool: Introducing floating menus [Sponsor]",
"url": "/2023/07/20/bettertouchtool-introducing-floating-menus-sponsor/",
"tags": ["bettertouchtool","customization","sponsor"],
"date": "Jul 20th, 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 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 s nothing this little utility can t do. I think BetterTouchTool is well known to readers of this blog (thanks Brett!), so I won 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 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, so please report any bugs and",
"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 13th, 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 ve been using TextExpander since the very beginning, tips I ve learned, and which of my snippets are my favorites. I 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 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 29th, 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 m certain it won 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 t going to be my primary browser Xnapper I 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","hopes","hundreds","index","interaction","little","makes","monthly","opinions","partnership","photos","predefined","primary","prompts","ready","redacting","results","royalty","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 29th, 2023",
"ts": "1688043600",
"summary": "As I ve said before, I m a long time user and lover of Sanebox. Thanks to them for sponsoring again this week. Here s a user story from Thomas Yuan. Well, here 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 s well, sane. I know, I know SaneBox is like having your own personal email concierge. It s not just a filter - oh no, that s underselling it. It s like a highly-trained butler who goes through your mail, knows what 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 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 s like a second inbox, except it s where all the non-urgent emails go to hang out. Newsletter from that one store you bought socks from 3 years ago? That s a @SaneLater item. Automated system alert about a software update? You bet that s going in @SaneLater. What s more, you can customize it to your heart s content. There 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 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 s no reply in a week, it pops back up in your inbox. It 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 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 t want that? So, if you ve got an email inbox that s more like a black hole, give SaneBox a whirl. I promise you, you won t be disappointed. It s affordable, efficient, and pretty darn fun to use. And here s a pro tip: if you re",
"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 27th, 2023",
"ts": "1687882740",
"summary": "My cat died a couple weeks ago. I had him for 20 years and he 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 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 d take the one tuxedo in the litter. Aditi s mom suggested I also take this one bashful kitten who had a hairline similar to mine. I agreed. Jezebel (the Tuxedo) became Aditi s cat, and Yeti almost immediately became very bonded to me. I ve always been thankful I was talked into taking him. Both Yeti and Jezebel were polydactyl, and Yeti 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 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 ve never had a romantic relationship longer than about 13 years. So Yeti was my longest",
"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","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","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 17th, 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 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 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","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 8th, 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 3rd, 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 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 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 ll allow negative arguments as well, such as to exclude the Archive section. But for now it s just multiple sections. That s all for now, just figured I 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","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 27th, 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 t, maybe read on and be tempted by the possibilities 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 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 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 s performed when it 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 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 to using those instead of reaching for the",
"keywords": ["customization","hacking","keyboard","layer","mechanical","ultimate","agent","backspace","bettertouchtool","bonus","build","elements","enter","function","hacking","hyper","karabiner","keyboard","mouse","numpad","pgdown","refresh","return","space","splurge","ultimate","xcode","action","actions","added","affects","allows","angle","another","arrow","assign","assigned","becomes","block","bottom","boxes","brackets","button","buttons","change","characters","cheat","check","checking","clicking","cluster","coding","combination","comes","commonly","complex","controls","created","creating","curly","customizations","default","definition","develop","easily","entire","essentially","everything","example","expand","extensive","extra","fingers","first","function","functions","gives","handed","happen","haven","having","highly","holding","ideas","interest","interested","interesting","keymaps","latest","layer","layers","lefthand","letter","little","looked","mapped","mapping","maybe","media","memory","mentioning","mistake","modifier","module","muscle","natural","navigation","needs","performed","possibilities","practice","pressed","produce","programming","provides","reach","reached","reaching","realized","recently","recommend","remaining","remember","repositioned","right","scrolling","secondary","setup","sheets","simply","software","specifically","speed","square","tempted","thought","thumb","trackpad","trigger","triggers","turns","using","version","where","while","whole","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 18th, 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 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 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","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 11th, 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 4th, 2023",
"ts": "1683208260",
"summary": "Not so long ago I wrote a little script that would generate an HTML playground of any MacOS app 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 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","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 29th, 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 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 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 27th, 2023",
"ts": "1682600400",
"summary": "Thanks to SaneBox for sponsoring BrettTerpstra.com again this week! I don t know what I would do without it. Ever feel like you re drowning in a sea of emails? You 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 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 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 25th, 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 21st, 2023",
"ts": "1682099340",
"summary": "I use FeedPress to handle this blog 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 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 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 ll then see a client key, a client secret, and an access token. All you need is the access token for this script. You 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 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 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 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 won t post the same thing twice. Optionally, it",
"keywords": ["formats","again","announcing","closing","configuration","create","development","drang","feedpress","front","javascript","markdown","mastodon","optionally","posts","presumably","python","rakefile","rather","redirect","stderr","stdout","settings","thanks","twitter","updating","usage","ability","above","access","account","affordable","again","although","anyway","appended","associated","automatically","available","avoiding","before","below","binary","blogs","called","campaign","checking","choosing","clicking","client","commented","config","configuration","configure","configured","considered","constant","create","created","creates","dashes","decided","default","deploy","deployed","described","detect","directory","disable","disabled","doesn","doubled","easydns","editing","either","endpoint","endpoints","entirely","eventually","feeds","files","front","fully","geared","generally","generated","generates","getting","gives","going","great","hacky","handle","hardcoded","having","helpful","homepage","imagine","immediate","included","inject","instance","integration","lacks","latest","leave","library","likes","links","local","location","manual","match","meaning","media","minutes","mostly","multiple","named","naming","necessary","needs","newest","nojack","offer","optional","options","original","output","parameter","parse","people","permission","podcasts","posts","private","properly","publish","query","rather","reads","reasons","rebuild","recommend","record","referenced","removes","renders","reply","requires","resulting","returns","right","running","scenario","scheme","script","secret","services","setting","settings","setup","setups","share","sharing","since","slash","slashes","social","spending","started","static","statically","statistics","stats","status","string","subscriber","substitutes","systems","takes","template","tested","token","tooted","toots","toward","tracking","trailing","trigger","ttscoff","twice","unnecessary","updated","updates","updating","usage","using","wanted","wanting","website"]
},{
"title": "Markdown to Bike conversion",
"url": "/2023/04/18/markdown-to-bike-conversion/",
"tags": ["markdown"],
"date": "Apr 18th, 2023",
"ts": "1681841340",
"summary": "I m liking outlining in Jesse Grossjean s latest app, Bike , for my outlining needs. It 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 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 t played around with it much yet, but if you re into Shortcuts, check out what 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.",
"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","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 16th, 2023",
"ts": "1681659180",
"summary": "Over 20 years of writing scripts and apps I ve collected a lot of snippets of code that I save whenever I solve a problem and think I 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 s why I wrote Snibbets back in 2020 . I 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 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 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 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 s more than one match, you ll get a menu, and if the selected file contains more than one snippet, you 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 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, it will be used for the menu, allowing fuzzy searching to narrow",
"keywords": ["clipboard","highlighting","snippet","source","syntax","check","failing","files","filtering","github","highlighting","keeps","markdown","multimarkdown","obsidian","pygments","searching","skylighting","snibbets","snippets","spotlight","syntax","visor","above","access","again","allowing","allows","almost","appreciated","assuming","available","avoid","based","becomes","blocks","capabilities","clipboard","collected","combination","command","commands","config","configure","console","contain","contains","convenient","creating","dedicated","defeat","definitions","detected","directories","directory","displaying","document","easily","editing","editor","effort","either","enter","extensions","feasible","feature","features","fenced","filename","folder","format","fuzzy","generated","getting","gives","going","great","greatly","handle","headlines","highlighter","highlighting","hotkey","hours","iterm","improved","indented","installations","installed","installing","instant","keystrokes","language","links","looks","makes","management","manager","match","matches","metadata","multiple","narrow","needed","notes","nvultra","optional","optionally","options","organize","output","overview","panel","picked","piped","problem","project","quick","quickly","recommend","redirected","refactored","reports","requests","results","scripts","search","searching","second","selected","separate","separated","shown","simple","simplicity","single","snippet","snippets","solution","solve","specifier","specifiers","store","superior","support","syntax","theme","think","title","titles","using","vastly","video","wanted","whenever","where","wouldn","writing","wrote","years"]
},{
"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 14th, 2023",
"ts": "1681504800",
"summary": "Over the last couple of days I got obsessed with wrangling my code snippet collection, once again. It 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 m realizing that it s getting bloated enough that it needs to become a gem before I 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 s not what I 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 ve posted a standalone version to GitHub . I m going to be using it when I m doing technical writing and including code samples in languages I don 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 s Terraform code and I m unsure whether that 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 t have extensions listed and I don 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 s more documentation in the comments of the script. Just thought I d share it! Check out the gist if you 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","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 13th, 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 ve been adding title-casing to various projects and plugins and keep writing new code for it 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 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 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 s all. It s a silly little thing, but if I 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","incorporate","little","plugins","projects","quick","returns","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 13th, 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 12th, 2023",
"ts": "1681332060",
"summary": "I haven 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 they result in a severe sleep deficit that is shortening my life. But I 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 t lead to a lot of fun software releases, blog posts, or new ideas in general. Sleep is good, stagnation kills me. I ve recently been realizing that my version of stable is more akin to depression. The thing is, I can 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 I removed the meat of this post because it was causing friction with my loved ones. I don t want my activities to cause any undue harm, so I ll save further sharing on this topic until everything is decriminalized. So that s my check-in for now. You can hear more up-to-the-minute updates on my progress (as well as Jeff and Christina s) by tuning into the Mental Health Corner on Overtired . I appreciate all of the support (monetary, pull requests, and even just kind emails) that you all have continued to provide for me. It really helps me stay motivated to maintain my 100+ projects and create new stuff!",
"keywords": ["behavior","depression","disorders","health","human","mania","christina","corner","health","mental","overtired","sleep","activities","antidepressants","appreciate","because","benefit","besides","binges","bipolar","blogging","bursting","cause","causing","check","checkin","coding","commercial","constant","continued","correlate","create","creating","decriminalized","deficit","depressed","depression","disorder","doesn","downside","effects","either","emails","episodes","especially","everything","excursions","figured","financial","fluctuation","friction","general","haven","helps","ideas","inescapable","kills","leaves","loved","maintain","manic","minute","monetary","motivated","night","offer","phase","position","posting","posts","potential","project","projects","realizing","recently","regularly","releases","remarkably","removed","reported","requests","risking","severe","share","sharing","shortening","sleep","software","solution","sponsored","spurts","stable","stagnation","stuff","support","think","topic","triggering","tuning","undue","updates","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 6th, 2023",
"ts": "1680786000",
"summary": "Thanks to MacUpdater for sponsoring BrettTerpstra.com this week! I 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 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 you can control MacUpdater from the main app, the menubar, or the command line It 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 Apple Silicon -native if you update or upgrade to the latest version Find out which of your Rosetta based apps could be Silicon-native if you reinstall them Track supported branches other than the Latest Version 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","major","makes","manual","media","menubar","migration","native","plugins","popular","provides","reinstall","requests","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 4th, 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 ve implemented his changes in the original script and it s once again working fine. To use the script, save it to a text file called , then run on it. Once you 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 re not already a Setapp user, here 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","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 16th, 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 s what we 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 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 s Search shelf has been completely overhauled to support this powerful query language. And the query language itself, also used by Curio s instant Quick Find feature, has been greatly extended with even more functionality to help you find exactly what you 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","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 14th, 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 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 s the Chrome extension to do it 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 9th, 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 7th, 2023",
"ts": "1678210320",
"summary": "I had a sleepless morning and decided to flesh out a Howzit feature I ve been meaning to get around to. In case you 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 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 ll serve as fallbacks if no argument is given (but only when using the syntax command line arguments have",
"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","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 6th, 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 m imagining (I m not great at prompts). Fast sketch-to-image render times, too. First look: Mac mini with M2 Pro MacStadium 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","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 23rd, 2023",
"ts": "1677160800",
"summary": "Thanks to Kaleidoscope for sponsoring BrettTerpstra.com this week! 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 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 22nd, 2023",
"ts": "1677090660",
"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. catppuccin/catppuccin It 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 james-stoup/heatwave Visualize your git commits with a heat map in the terminal, similar to GitHub 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","highly","james","macos","navigate","partnership","quickly","reading","refactor","reliably","replacement","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 16th, 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 7th, 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 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 t have to be created with the flag. You can use in Shortcuts/Services. You 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 ve successfully installed via Homebrew, you should be able to just run . Gather CLI v2.1.6 Download Gather CLI v2.1.6 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 09/18/23. Changelog Donate More info",
"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","input","installed","latest","looks","makes","manually","meaning","mentioning","options","package","pages","recall","remember","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 6th, 2023",
"ts": "1675701900",
"summary": "I ve updated the Increment Templated Service and PopClip extension. It 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 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 t think this little tool deserved more attention, the update on its own wouldn t be enough to prompt a post. But it s one of those tools that you don t use every day, but when you need it, it 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 ll be inserted based on the result of the index reference (zero-indexed, so 0 is the first element). For example: 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 More info Brett's PopClip Extensions v1.45.2 Download Brett's PopClip Extensions v1.45.2 A few PopClip extensions for Markdown writing and other useful tools Published 11/30/14. Updated 02/07/23. Changelog Donate More info",
"keywords": ["action","extension","increment","quick","action","becomes","brett's","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","highlight","increment","index","indexed","inserted","insertion","iteration","little","mathematical","minute","modifier","modulus","multiple","numbering","numbers","operator","parallel","placeholder","placeholders","points","prompt","released","repeat","replacing","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 3rd, 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 ve always wished IMDb had. Free for non-commercial use. Effective GPT - Get accurate ChatGPT prompts I ve been really into exploring ChatGPT lately. It 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 t seem to have a lot of voting clout yet, but it 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 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","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 1st, 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 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 t cost you any extra it 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 ll love it. So if you 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","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 1st, 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 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 his ideas sounded very appealing. Brett's PopClip Extensions v1.45.2 Download Brett's PopClip Extensions v1.45.2 A few PopClip extensions for Markdown writing and other useful tools Published 11/30/14. Updated 02/07/23. Changelog Donate More info",
"keywords": ["extension","modifier","brett's","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","holding","ideas","impossible","lists","mentioned","modes","modifier","modifiers","multi","numbered","options","override","overriding","paste","pasting","preferences","providing","recent","remember","right","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 24th, 2023",
"ts": "1674574500",
"summary": "I 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 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 s designed for plain text. The SearchLink extension requires that SearchLink be installed, but if it doesn 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 t installed when you run it, it will download the package for you and walk you through installation. I 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 s happening, but will update as needed once I get some answers. Brett's PopClip Extensions v1.45.2 Download Brett's PopClip Extensions v1.45.2 A few PopClip extensions for Markdown writing and other useful tools Published 11/30/14. Updated 02/07/23. Changelog Donate More info",
"keywords": ["macos","pilot","popclip","brett's","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","holding","includes","incorporate","install","installation","installed","latest","location","missed","needed","notebook","noticed","nvultra","package","pasting","permanent","popup","putting","recently","requires","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 22nd, 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 ve done some major refactoring, added some new searches, and I wrote a full test suite that revealed some bugs that needed fixing. First and this won t affect you much but I m pretty happy with it 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 t matter to most people in the least, but it s great for my testing (I also wrote a complete test suite that s easily updated). Now that the code is broken up into logical pieces, it 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 s a Very Good System . 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 s all automated with Howzit . Another Very Good System . While most of the recent work has gone into refactoring the code, I did add a few new things. A bunch actually, but here are the highlights: First, I",
"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","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","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","returning","revealed"]
},{
"title": "SearchLink -- better searches, better results",
"url": "/2023/01/16/searchlink-better-searches-better-results/",
"tags": ["browser","markdown","search","searchlink","video"],
"date": "Jan 16th, 2023",
"ts": "1673910120",
"summary": "The better your search, the better your results. You 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 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","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 16th, 2023",
"ts": "1673903460",
"summary": "I made you a video with some SearchLink tips. Note that I m using SearchLink 2.3.15+ in these videos. First up, how would you like to be able to instantly access any page you ve visited in any browser? Or be able to instantly recall pages you 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","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 16th, 2023",
"ts": "1673879040",
"summary": "I ve bumped SearchLink up to v2.3, with a whole bunch of new features. I m going to continue the SearchLink tips series as I have time, but for now, here s a rundown of what s new. I ve moved the entire project into a GitHub repository where you can view the code and download the codesigned Services, and I 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 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 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/ttscoff/searchlink/releases/latest . The",
"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","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","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 13th, 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 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 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 ve added 4 new searches to SearchLink. Just in case you ve been using SearchLink (or want to get started) but didn t know about this handy trick: you can quickly see a list of all available searches, including any custom searches you 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 t see any major difference between the TMDb and IMDb info, at least for my uses. It s just presented a little differently (and I think I like TMDb s presentation better). The API does not like fuzzy matching. If you misspell a title or name, you ll get no results. It s perfect if you know exactly what you want to link, but not great if you re guessing. It is good at",
"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","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","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","running","saves","search","searches","searching","season","section","seems","selected","selecting","settings","shows","similar","specific","spell","spelling","spellings","started","starting","stomach","string","stuck","studio"]
},{
"title": "Delight customers in less time with TextExpander [Sponsor]",
"url": "/2023/01/12/delight-customers-in-less-time-with-textexpander/",
"tags": ["sponsor"],
"date": "Jan 12th, 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 3rd, 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 t found any notable repercussions to this, so I 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 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 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","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","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 31st, 2022",
"ts": "1672515780",
"summary": "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. (Aside: to run macOS Services in TextBuddy, you need to run a little command in Terminal. . Also, I don 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 More info",
"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","ignored","includes","little","macos","markers","markup","options","quick","recently","right","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 31st, 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 ve ever owned. $3200 US. On the budget side of the list, I have to mention these handy little gear ties. I 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 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 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 s going to be even more fun to be had. $200 USD. It 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 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 s wall warts, and has smart charging for multiple devices. $60 US. We ve had a few power outages over the last year. Having a power source",
"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","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","upgraded"]
},{
"title": "Shooting Stars with iTelescope.net",
"url": "/2022/12/21/shooting-stars-with-itelescope-dot-net/",
"tags": ["astronomy","astrophotography","learning","photography"],
"date": "Dec 21st, 2022",
"ts": "1671648900",
"summary": "I 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 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 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 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 re obviously at the mercy of the weather and telescope malfunctions, but there s no charge if your run isn 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 s a learning curve to all of this. Honestly, it s taken me years of using the service to",
"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","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","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 21st, 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 30th, 2022",
"ts": "1669826340",
"summary": "Here s a rundown of the personal projects I 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 ve done, and how much time you spent on it. Doing saw more updates than I could possibly list. It 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 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 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 ve ever made. It allows you to write very simple syntax in a Markdown file and link text to the right web page without",
"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","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 25th, 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 s a bunch! By the way, if you re looking for the Black Friday software deals, check out Michael Tsai 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 t the most popular language these days, but it s what I 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 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 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 ve implemented support for these in a few of my CLIs, including na . Rewind Find anything you ve seen, said",
"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 24th, 2022",
"ts": "1669306320",
"summary": "I 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 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 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 s expensive, but if you know you need an app like this, totally worth it. Curio Another app stole Curio s name this year, but I 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 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 ve mentioned it many times before, so I won t bore you, but I use it so often I 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 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 autocomplete, terminal sharing, and the ability to copy blocks",
"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","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","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 17th, 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 10th, 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 27th, 2022",
"ts": "1666875600",
"summary": "Thanks to MacUpdater for sponsoring BrettTerpstra.com this week! I 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 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 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","menubar","needs","packages","panes","plugin","plugins","popular","preference","provides","quicklook","readers","recent","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 25th, 2022",
"ts": "1666730100",
"summary": "I released a new version of Marked 2 this week, featuring integration with Hookmark (formerly known as Hook). First, I 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 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 s especially handy in notes where you re referencing a local image that might move in the future 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 you re done. I m still working on fixing some of Marked 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 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","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","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 25th, 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 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 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 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 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 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","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 22nd, 2022",
"ts": "1666447260",
"summary": "So I 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 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 everything from adding/removing tags to completing/deleting/archiving. You can even add notes to existing actions. It s pretty nifty. There are still plenty of times where it 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 menus 1 . 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 s a gem, so the simplest install is , but there are tips for using in there as well. If you 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 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, allow the negation to match any part of the path,",
"keywords": ["added","allow","changed","changes","check","display","doing","error","fixed","improved","inbox","installation","installing","offer","prefer","project","taskpaper","unable","action","actions","adding","additionally","allow","append","archive","archiving","argument","arguments","available","based","between","brace","changelog","changes","command","commands","completed","completing","concatenated","containing","contains","couldn","created","curly","defaults","deleting","depending","directory","editor","elegant","element","entered","entry","everything","extension","fallbacks","faster","feature","files","finally","finished","fleshed","great","handling","having","hierarchies","history","install","installed","instructions","interface","interpreted","itself","leave","listing","longer","loosen","making","marking","match","matching","menus","moving","multi","multiple","narrow","negation","negations","niftier","nifty","notes","optional","output","parent","parenthetical","partial","people","plenty","prerequisites","priority","project","projects","query","querying","quick","quickly","readline","recent","regex","removing","replacing","responsibility","results","returns","running","saved","search","searched","searches","seeing","selections","setting","significantly","simplest","smaller","specifically","specifies","supplied","switch","tagged","tasks","think","times","todos","token","using","value","version","viewing","where","works"]
},{
"title": "Why I use SaneBox [Sponsor]",
"url": "/2022/10/20/why-i-use-sanebox-sponsor/",
"tags": ["email","sponsor"],
"date": "Oct 20th, 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 ve used SaneBox over the last decade. First of all, if you still haven t heard of SaneBox, it 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 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 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 s important, and my Smart Mailboxes show only unread or flagged messages, or messages I ve tagged To Reply and haven 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 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","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 17th, 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 7th, 2022",
"ts": "1665177480",
"summary": "This might be the last big na update for a little while, but it s got some great stuff in it. I m really aiming to make this a great companion to TaskPaper, and I think it 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 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 like 2 days ago? I 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 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 6th, 2022",
"ts": "1665053580",
"summary": "I 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 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 s only one project in the current directory (or subdirectories if using ), you don 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 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","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 3rd, 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 t do anything else with Ruby and just want to use tools distributed as gems are almost definitely using the system Ruby, which won 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 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 ll be updating my various README 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","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 28th, 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 t had a single problem. Basically, you 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 .",
"keywords": ["installer","macos","symbolic","gather","homebrew","symlink","accessible","anymore","because","binaries","command","contents","count","directory","doing","either","eventually","everyone","everything","folder","forget","hardcoded","haven","install","installer","installs","leave","little","mirror","nervous","nilly","often","outside","problem","problems","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 28th, 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 t already heard of na. It 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 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 s actions with , even when you 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 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 for the sake of anyone who s already",
"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","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 26th, 2022",
"ts": "1664197200",
"summary": "Thanks to Rogue Amoeba for sponsoring BrettTerpstra.com this week! I 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 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 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 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 s also Airfoil (home audio streaming), Farrago (the Mac 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 ll save 20% off every purchase from Rogue Amoeba. You don t need any coupon codes or special URLs, but act fast. Visit MacAudio.com before the end of September to save. You 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 15th, 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 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 11th, 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 s customer support answers, sales emails, or document edits, typing things repetitively or using copy and paste can be a burden. That 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","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 2nd, 2022",
"ts": "1662131760",
"summary": "Gather is constantly improving at this point, and a lot of its rough edges have already been polished. I m loving all the feedback I m getting, both for fixing bugs and for adding new features. It 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 re worth). I d recommend upgrading to the latest version before trying anything in this post. As of this writing, that s v2.0.33. If you installed via Homebrew, you 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 ve seen. So anyway, one common thing that people want to clip from the web is paywalled content, which makes sense as it s harder to search and more convenient to have in your own personal, local notes. But Gather can t access a web page that isn t public. You can select all the text, copy it, then run Gather with to convert it, but it 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 wrote 1 . It 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 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 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 Gather, will grab the full visible HTML of the current page (what s actually rendered in",
"keywords": ["bullseye","shortcut","anyway","because","bullseye","bullseyegather","changelog","chrome","clicking","donate","download","firefox","gather","handler","homebrew","however","magicking","markdown","markdownifies","marked","medium","paywalls","pesky","preview","published","readability","revisited","stdin","safari","shortcut","shortcuts","today","updated","accept","accepts","access","actions","added","adding","another","anyone","anyway","appear","appreciate","assigned","available","based","before","beginning","below","bookmark","bookmarklet","bookmarklets","bookmarks","boxes","browser","browsers","build","building","built","called","canonical","captured","changes","characters","cleans","click","clicked","clipboard","command","commands","common","completely","comprised","constantly","content","contents","convenient","conversations","convert","couple","create","curious","cutting","dashes","definitely","demonstrated","dependencies","depending","designed","download","dynamically","edges","effort","eliminate","email","encapsulated","encoded","errors","everybody","example","executed","experimental","external","feature","features","feedback","filename","first","fixes","fixing","format","fully","garbage","gather","getting","handle","handler","harder","hearing","highlighted","ideas","illustrates","implementing","improving","including","injecting","innermost","input","install","installed","issues","items","jquery","kinks","larger","latest","layout","letting","library","little","loaded","loading","local","looking","loving","lowercased","makes","manic","markdown","markdownification","markup","meant","mention","mouse","named","needed","notebook","notes","nvultra","others","passes","paywalled","people","permutation","personal","pesky","placeholder","point","points","polished","possible","proof","public","punctuation","quirky","realized","recent","recommend","rendered","replaced","returned","rewrite","right","rough","running","sanitized","script","scripts","search","security","selecting","sends","sense","server","share","shortcuts","shows","simply","since","sites","slightly"]
},{
"title": "Gather to nvUltra",
"url": "/2022/08/31/gather-to-nvultra/",
"tags": ["gather","markdown","nvultra"],
"date": "Aug 31st, 2022",
"ts": "1661968860",
"summary": "I got a request to add a option to Gather . Makes sense when you re using it to save Markdown to notes, you 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 s been added in v2.0.29. That got me to thinking, though I clip all my notes to nvUltra. I ve been trying to convince Fletcher that we should build a web clipper into nvUltra, but until then I ve been using Gather to create Markdown notes out of web pages I want to reference. So, for purely selfish reasons, I 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 s URL handler). I even added it to a Shortcut that I can trigger with LaunchBar. Now I 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 ll even throw in a link to the Shortcut. Since it s a compatible URL handler, I also added options for creating Notational Velocity/nvALT links/notes. If this sounds great but you re not into nvALT/nvUltra, let me know if there s a note platform you use with a url handler that I could also incorporate. I m open to making your life simpler. By the way, if you 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",
"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","incorporate","install","keystrokes","links","locating","making","markdownify","notes","nvalt","nvultra","options","pages","parse","platform","project","purely","reasons","right","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 30th, 2022",
"ts": "1661901780",
"summary": "I considered calling this post Gather round for a brew but I says to myself, I says dammit, Brett, you 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 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 ll have a working copy of that you can keep updated using Homebrew. It s a way better solution than the Package installers, though that option will still be available for those who aren t brew-savvy. To learn more about Gather, visit the project page . Oh, and let me know if my brilliant solution doesn t work for some stupid reason. It 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","install","installation","installers","installing","intense","learn","little","minutes","myself","notarization","process","project","requiring","round","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 30th, 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 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 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 m doing with Gather itself now. A isn 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 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 s done, the new, improved WebMarkdown extension should work for you. Brett's PopClip Extensions v1.45.2 Download Brett's PopClip Extensions v1.45.2 A few PopClip extensions for Markdown writing and other useful tools Published 11/30/14. Updated 02/07/23. Changelog Donate More info",
"keywords": ["distribution","installer","package","software","apple","brett's","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","improved","install","installer","itself","libraries","local","looks","machine","mistake","notarization","notarize","notarized","offers","package","project","quarantine","requires","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 28th, 2022",
"ts": "1661705880",
"summary": "As promised, I 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 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 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 re on an Intel Mac, your best bet is . If you re on an M1 Mac, you 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 include the argument. It can also",
"keywords": ["clipboard","languages","launchbar","scripting","taking","action","actions","alfred","askdifferent","automator","binary","changelog","check","couldn","donate","download","frankenstinian","gather","gimme","github","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","terminal","twitter","unicode","universal","updated","whatever","ability","accepted","accepts","action","advanced","again","allows","answer","answers","anyone","apart","argument","arguments","article","automatically","available","based","because","before","binary","blocks","break","built","bunch","called","change","changes","class","clean","cleaned","clipboard","clipping","combination","command","comments","compatible","consistent","content","conversion","converted","copies","curated","custom","default","definition","design","designed","detailed","determining","difficult","directly","distribute","download","easier","elements","enough","entire","environment","eventually","everybody","everything","exact","excluded","executable","explanatory","extensions","first","flexible","floats","forks","formatting","formula","fragile","funky","getting","gotten","handle","handler","handling","hands","happen","haven","highlighted","highly","however","important","included","including","index","inline","input","install","interaction","interested","knowledge","learn","learning","letting","liked","links","lists","literally","little","longer","macos","makes","making","markdownifier","menus","merged","missed","moved","needed","needs","nefarious","nervous","notebook","notes","nvultra","obsessions","older","options","output","overboard","packages","pages","parsing","people","perfectly","piped","ports","possible","process","processor","products","programming","promised","properly","python","questions","ready","recall","remember","reports","requests","respond","revive","saving"]
},{
"title": "PopClip extensions: WebMarkdown fix",
"url": "/2022/08/27/popclip-extensions-webmarkdown-fix/",
"tags": ["extension","markdown","popclip","scripting"],
"date": "Aug 27th, 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 t installed the Command Line Tools are unable to use some of my tools. I ve slowly been working to rectify this, but it s going to take some time. The Python script I m most reliant on is Aaron Swartz 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 ll know I 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 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 m able to compile command line utilities as binaries that can be drop-in replacements for the various incarnations of the html2text script I 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 t tried it or it wasn t working for you previously, give it a shot and let me know how it goes. If people run into issues, I ll update this post with fixes. Brett's PopClip Extensions v1.45.2 Download Brett's PopClip Extensions v1.45.2 A few PopClip extensions for Markdown writing and other useful tools Published 11/30/14. Updated 02/07/23. Changelog Donate More info",
"keywords": ["markdown","python","taking","aaron","apple","brett's","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","incarnations","input","install","installed","interested","issues","macos","markup","meaning","nitty","output","people","placed","previously","publishing","rectify","reliant","rendering","replacement","replacements","rescue","right","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 23rd, 2022",
"ts": "1661252280",
"summary": "In case you 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 s been solid enough that it hasn 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 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 ll find it useful! SearchLink v2.3.65 Download SearchLink v2.3.65 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 01/16/24. Changelog Donate More info",
"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","inserting","installed","integration","latest","leaving","links","local","macos","makes","missed","morning","previously","project","required","requires","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 18th, 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 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 9th, 2022",
"ts": "1660045020",
"summary": "I 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 s become pretty obvious that not many non-me people have actually tried it, and I really think they should, so I figured I 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 ve forgotten how you set it up and what you automated? If you answered yes to all three questions, then you re a prime candidate for Howzit. If you answered yes to the first two and no to the third, congratulations, you re amazing. Either way, unless you checked all three, you can totally stop reading now. Go outside, enjoy life. Or whatever people who aren 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 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 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 m curious and want to know exactly what 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 Terminal with syntax highlighting, pagination, and easy searching. And",
"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","aliases","allows","almost","amazing","another","answered","apply","argument","arguments","automate","automated","automatically","automating","automation","automations","available","because","before","behind","block","blocks","branch","branching","breeze","build","building","bunch","called","candidate","central","certain","checked","checking","cleanup","command","commands","commas","common","completely","completions","complex","complicated","concatenated","config","configure","confirmation","congratulations","contain","content","control","couple","create","curious","daily","default","define","defined","defines","deploy","deploying","deploys","destinations","details","develop","different","differs","directives","directories","directory","display","displayed","document","documenting","doesn","doing","double","dynamic","easier","easiest","editor","efficient","either","emails","enjoy","enter","error","essentially","everyone","everything","evident","example","execute","executes","explained","explaining","extension","favorite","feature","fenced","figure","figured","files","first","flesh","folder","forgotten","found","friendly","function","functioning","fuzzy","global","going","great","handling","happening","hashes","haven","having","headers","heading","headlines","highlight","highlighting","hooking","howzit","included","includes","including","information","install","installed","instantly","instructions","interest","interpreted","items","language","level","lists","macos","manual","match","matches","matching","metadata","modify","mostly","multiple","names","necessary","notes","nvultra","obsessed","obvious","often","options","origin","output","outside","packaging","pagination","parent","partial"]
},{
"title": "A better Shortcuts command for Bunch",
"url": "/2022/08/08/new-in-the-bunch-beta/",
"tags": ["bunch","shortcuts"],
"date": "Aug 8th, 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 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","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 2nd, 2022",
"ts": "1659463920",
"summary": "It seems like just yesterday that I was saying I 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 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 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 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 anything I 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.",
"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","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","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 1st, 2022",
"ts": "1659358800",
"summary": "I 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 ve got a great editing workflow down and it s replicable, so now I can share the responsibilities with others without worrying about losing quality. I 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 ve never listened, or haven t for a while, now s a great time to dig back in . The last few episodes really highlight where we re going with the show. We ve really honed in on mental health as our driving force. We ve long had a Mental Health Corner segment, but now it s a weekly thing and I ve really appreciated the feedback from listeners. If nothing else, I think that talking about it does a service, and I m happy to be a part of that. We re no longer a Taylor Swift podcast that also talks about tech and maybe mentions ADHD, now we re a mental health podcast that also talks about tech and only occasionally mentions Taylor Swift. Or Miley. It 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 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 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 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 s interest. Once I have all the social accounts set up, I ll start promoting those here and elsewhere, so stay tuned. Right now you can follow: Instagram/ovrtrd I ll be posting snippets and clips here. I m able to select text from the transcript in Descript and output an audiogram to Headliner to generate visually interesting reels, complete with captions. I aim to find at least one compelling clip per episode, more when I can. I d appreciate any",
"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","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 31st, 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 s a general update, in case you were wondering. As I 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 m back on Vyvanse now, which I ve previously been on for years. As I ve said before, it s not the most effective ADHD drug for me, but it s also much less likely to trigger manic episodes, and that s held true. I ve been mostly stable for the last few months, with just a couple mild episodes that result at most 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 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 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 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 s any indication), and I d love to see more examples of what people are doing with it. Here s my formal plea on the forums . In the meantime, here 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 with !!Finder) I never did make a gem or package out of howzit , but you can grab the script from GitHub to",
"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","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","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","while","windows"]
},{
"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 21st, 2022",
"ts": "1658414340",
"summary": "Thanks to SaneBox for sponsoring BrettTerpstra.com this week! I ve been a SaneBox user for years now, and can 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 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","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 20th, 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 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 t cut it This CLI adds capabilities to that would otherwise require some or magic. It has an intuitive syntax and I 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 m not giving up nvUltra any time soon, but if you 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 14th, 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 2nd, 2022",
"ts": "1656766620",
"summary": "It was promised some time ago, and after a long wait 1 BetterTouchTool has added Stream Deck support , and it s awesome. It s a beta feature, but I ve already found it to be an amazing extension to my Stream Deck. I 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 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 t willing to let go of those quite yet, so I 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 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 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 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 ll probably eventually update the btt_stats script to handle this more elegantly, but here s the script I 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 ve also added buttons for volume control (using BetterTouchTool s media controls), which can now have key repeats, so I can just",
"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","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","basement","basic","because","before","begun","between","brightness","browser","bunch","button","buttons","capabilities","change","check","closed","color","command","completely","configuration","continued","control","controls","cough","couple","cover","covered","cumbersome","decrease","developed","device","disappearing","dynamic","easily","elegantly","eventually","experiment","extension","external","extra","feature","finished","folders","forecast","forecasts","found","fully","functionality","global","gotten","gradually","green","hacking","handle","having","hitting","hotkey","icons","imagine","immediate","includes","increase","incrementally","individual","integrating","integration","involved","larger","latter","lights","limited","little","longer","macos","macro","macros","makes","meant","media","method","missing","multi","multiple","named","namely","night","nvultra","office","opposed","options","pages","performant","playing","plenty","plugin","plugins","possibilities","powerful","preset","press","process","profile","profiles","promised","queries","quirky","receive","recreate","reflect","reflects","remove","repeats","replicate","resistance","response","responses","responsibility","return","returns","running","scope","screen","script","scriptability","scriptable","scripting","scripts","second","seeing","seems","selector","separate","settings","shell","shortcuts","shows","significant","simple","software","specific","states","stats"]
},{
"title": "Bunch 1.4.8",
"url": "/2022/06/14/bunch-1-dot-4-8/",
"tags": ["automation","bunch","scripting","tagging"],
"date": "Jun 14th, 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 t know wasn t working 1 is now working. 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 d like to see. Because they mostly relate to obscure features that, statistically, you likely don t know exist.",
"keywords": ["snippet","allow","applescript","because","bunch","bunches","check","desktop","editor","finder","modifier","nothing","tagging","updates","variable","variables","action","based","close","coming","commands","conditional","consists","defined","desktop","discussions","download","entirely","exist","features","fixes","general","going","groundbreaking","handler","handling","hiding","icons","ignoring","inherit","issues","latest","launching","likely","logic","mismatch","morning","mostly","nesting","obscure","officially","passed","quitting","relate","relaunch","released","reports","retries","running","sending","sensitivity","showing","snippet","statistically","stuff","testing","through","tooltip","variable","version","while","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 9th, 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 7th, 2022",
"ts": "1654614540",
"summary": "I ve always relied on 2-bit coloring for terminal output, sticking to eight foreground and eight background colors. It s nice because it conforms to any user s terminal theme. But there 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 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. 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","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 20th, 2022",
"ts": "1653074460",
"summary": "I haven t had a lot of time for personal projects lately. Partly because I switched my ADHD meds to Vyvanse, which isn t great for my attention but does keep my bipolar in check, meaning I 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 m at a point in my life where that s the preferable outcome. That said, I 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 re so close to getting nvUltra out the door. Between Fletcher and I, time for it has been tight, but we ve put a feature freeze on it and are just finalizing the MAS testing for the in-app purchase and subscription setup we re going to use to allow us to offer a free trial and a sustainable pricing structure. More soon. In the meantime, I ve gotten some new hardware recently that I thought warranted a quick post. First, I got my new Mac Studio . I didn 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 which is impressive mostly because what slows those tests down is a ton of file read/writes that processor speed can t improve anyway. So I m very happy with the purchase, and if you 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 m so blown away by the speed that I ll soon be purchasing a second one for myself. 1345 MB/s read and 1436 MB/s writes. It 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 Well, that s my update for now. I know my posting pace has slowed a bit, but I m grateful to all of the BrettTerpstra.com readers who support my work with monthly donations. I ll keep putting out (and supporting) new stuff, and I ll be working to post a bit more often.",
"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","impressive","improve","individual","leaves","looking","manic","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","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 12th, 2022",
"ts": "1652360400",
"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! 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 28th, 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 22nd, 2022",
"ts": "1647953700",
"summary": "I put some time into Bunch this weekend. It s been a little while since I ve worked on it I haven t needed it to do anything new lately, and the current release hasn t had any major bug reports. So it 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 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 t love that I have to do that, but Apple provides no API for such settings. And I haven 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 s a couple extra steps beyond having a Bunch command to handle it, but I don 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 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 s tagging features. Tag all of the Bunches in this subgroup with the same tag. Then, in each Bunch in the",
"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","missing","modes","multiple","needed","nested","offer","opens","possible","preferences","process","provides","receiving","release","released","reopen","replacing","reports","reverse","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 16th, 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 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. 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","member","members","memory","message","messaging","often","paced","paste","person","readers","reliable","remains","right","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 15th, 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 ve started a collection of scripts for Hook. It s small right now, but should grow in the future. Worth a bookmark or a star if you 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 21st, 2022",
"ts": "1645452000",
"summary": "I ve added some stuff to Doing lately. Like, a lot of stuff. To be fair, I 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 s going to be cool if I finish it). And some time on Bunch. But as I 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 t think it s right for the main packages repo, so you have to add the repository manually to try it out, but I think it 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 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 s changed next time you update, it 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 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 t use it regularly and I m sure it could use further improvements. If you 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 with every deploy into and then offers to symlink them into an appropriate auto-load",
"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","manual","manually","match","matching","minute","modified","modify","mostly","multi","multiple","names","natural","navigation","necessary","newest","notes","numbers","nvultra"]
},{
"title": "Keybindings cheat sheet for Dash",
"url": "/2022/02/18/keybindings-cheat-sheet-for-dash/",
"tags": ["cheatsheet","comments","keybindings","keyboard","scripting"],
"date": "Feb 18th, 2022",
"ts": "1645189080",
"summary": "It s been a while since I mentioned my macOS key bindings , so if you re new around here, let me point you to my previous work . I 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 m so used to them I make a mess typing on other people s computers. I try to avoid doing that. Typing on other people 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 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 m accidentally triggering them while doing something else, so I think it s just the right amount. It 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 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 flags. Just run to see the options. By default the script will",
"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","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 11th, 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 15th, 2022",
"ts": "1642264260",
"summary": "I m late getting my Top Apps of 2021 post out. I almost wasn t going to do it this year, mostly out of just being frequently and excessively tired of late. But I figured I 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. 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 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. CleanShot X This is the best screenshot app I ve ever used. Everything about it is elegant, intuitive, and powerful. Available on Setapp. Dato I can 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 t begin to enumerate all the new features Andreas has added in the last year. If you 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 they 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 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 ve said before, it 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 you re working without spending time searching, it s worth learning how Hook can help. Descript If you edit podcasts (or even video), you have to try Descript. It generates transcriptions automatically, and then",
"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","areas","array","audio","automatically","automation","available","awesome","background","batch","because","before","begin","below","between","bunch","button","buttons","calendar","calling","caught","check","clean","click","close","comes","companions","competitors","comprehensive","conflicts","control","couldn","couple","cream","create","cutting","daily","development","difference","diffs","direct","directory","documents","easiest","effects","elegant","email","employer","enhancement","enough","enumerate","excessively","explain","extensible","favorite","favorites","features","figured","files","fingertips","foregoing","forgoing","found","fully","games","generates","getting","going","great","guess","hands","handy","happen","happened","haven","highly","iterm","ideas","improved","improvements","improving","including","installed","installing","installment","intuitive","keeps","keyboard","launchd","learn","learned","learning","limitations","little","looked","looking","macos","major","makes","manageable","management","media","mentioning","merge","messaging","mighty","model","monthly","mostly","nicer","notch","nothing","nowhere","often","operations","optimized","packs","pasting","payment","performing","piece","podcasts","powerful","presentations","rather","recommend","regularly","released","relevant","remains","resolving","running","scans","screencasts","screenshot","searching","second","sentences","short","silly","social","solid","spending","started","subscription","switching","tasks","terminals","think","thought","through","tired","tools","transcriptions","tried","tutorials","under","updated","updates","upgrade","using","versed","version","versions","video"]
},{
"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 13th, 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 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 24th, 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 m constantly playing with ways to make navigating in Terminal easier. I 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 m sure you could duplicate it in any shell, but I haven 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 re not familiar with (originally by Joroen Janssen), it s basically a port of Bashmarks, which was probably a port of something else 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 s actually aliased to , so it 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 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). If there 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 the current directory or the base jump mark, switch to fasd and find matches for the search string if there s more than one match returned by any of the above, use fzf to allow quick selection",
"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","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","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 20th, 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 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 t want to switch to a prompt package 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 m switching from my convoluted custom prompt setup to this now. I don t know all the history, but I m pretty sure this is a port of powerlevel10k . romkatv/zsh4humans: A turnkey configuration for Zsh I don t want zsh users to feel left out. Here 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 re wondering. Descript - All-in-one audio/video editing, as easy as a doc. I ve mentioned Descript a bunch of times, but I m adding it to Web Excursions because they ve added so many amazing features since the last time I linked it that I really think any podcaster/youtuber/screencaster who s not using it should check",
"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","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","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 16th, 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 s customer support answers, sales emails, or document edits, typing things repetitively or using copy and paste can be a burden. That 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","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 25th, 2021",
"ts": "1637875560",
"summary": "You ve probably heard me mention fzf before. It 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 ve been using it in all kinds of scripts 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 re looking for and the menu closes and the commit s hash is inserted in your command. It s crazy handy. If you 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 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 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 s installed, open up a new session to load the init files, to a git repository, and type Ctrl-G Ctrl-H. You 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 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","mention","menus","message","modifications","modified","multi","navigation","needed","needs","numbered","preview","previews","prompt","reading","remote","remotes","repository","requires","return","right","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 23rd, 2021",
"ts": "1637677860",
"summary": "Bunch 1.4.6 is out now for automatic update (Bunch- Check for Updates) and for download . It s been in beta for a couple months, and I 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 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 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 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 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 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","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 20th, 2021",
"ts": "1637427000",
"summary": "I ve pushed Doing 2.0 out to the world. It 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 ve had a few manic episodes in recent months that have found me obsessively coding on personal projects for hours at a time. I 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 s been (glances at homepage) 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 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 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 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 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 s so much new stuff that I can t fit it all into an announcement post like this. Read on for the highlights, though. If you 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 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 improvements for formatting dates, titles, and notes in new ways. There s a whole formatting vibe going",
"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","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","maintain","major","making","manic","matching","memory","mention"]
},{
"title": "Introducing TextExpander 7.0",
"url": "/2021/11/18/introducing-textexpander-7-dot-0/",
"tags": ["sponsor","textexpander"],
"date": "Nov 18th, 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 ve been working hard on a few projects and haven t had time to write any of them up since the last sponsorship. Fun updates coming soon! In the meantime, here 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 21st, 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 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 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","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 20th, 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 s served me well over the years. I added a couple of things to it today and figured I 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 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 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 s it. An update simple simple enough that I actually have time to write about. Unlike what s happening with doing right now once I finish the current version of that, I m going to need a couple hours to detail what I 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","hidden","hours","identifier","included","installed","instant","little","machine","mattered","mention","output","pertinent","prettier","returned","right","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 19th, 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 t want to be without (I 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 s eventually available for iPhone as well 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 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 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 15th, 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 t know what Doing is and started reading this post anyway, go check it out first. I ve been playing with incorporating Doing into my iTerm status bar. It s already in my Touch Bar , but having it right below my prompt in my terminal seemed super handy. The method I m using might seem a bit convoluted, but it s working great. This whole thing is based around iTerm 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 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 m using the same view I set up for my Touch Bar with BetterTouchTool: Rather than repeatedly running this command I m storing the result in a cache file where I can just to retrieve it. It only needs to update when there s a change to my doing file. In recent version of there 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 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 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 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 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 s going to do is a tiny text file, there s no performance hit. I suppose you could set up some kind of polling, but this seems like the best",
"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","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 24th, 2021",
"ts": "1632484800",
"summary": "I ve done a lot of coding in the last two weeks. Playing with projects, adding features, fixing bugs, writing tests. I ve done a lot of learning Vim (I m writing this post in Vim, I think I like it). Some day I ll feel like I ve learned something in Vim that would actually surprise anybody and I ll write it up. For now, I m just playing catch up. I had a few manic days last week and am riding out this lull before depression hits. I ve had depression that wasn t preceded by mania, but I ve never had mania that wasn t followed by depression. Oh, in case you missed it, I m bipolar. And I m trying to talk about it more because, well, it s scary to talk about. I 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 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 s a rundown. QuickQuestion my little tool for building and querying a plain text database got a nice update. I won t bore you with the details, it just does what it s supposed to do better now. Better searching, only show the best (and hopefully correct) result, colorized output, and integration if it s available. (And it should be available. Everyone should have . If you don 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 my tool for tracking, referencing, and executing build notes for coding projects 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 , so that templates can specify what meta they need in order to execute their tasks. So if you have to have a variable defined in order to use the Markdown template s task, it will now warn you when that variable isn t assigned in the build notes.",
"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","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","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","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 16th, 2021",
"ts": "1631797200",
"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com again this week! They sponsor me every month, and they re one of my favorite sponsors 1 , but they re behind on getting me copy this week. It 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 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 t loaded, I shoot off emails with bizarre character combinations instead of any kind of signature. It 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 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 s not terribly useful, but it s a great example of the power of shell scripting in TextExpander snippets. I ll be publishing more of my favorite snippet groups as I have time, so keep an eye out. If you re not already a TextExpander user, this is a great time to give it a try. In less than a day you ll be wondering how you survived without it. BrettTerpstra.com readers get 20% off their first year by visiting this link . I swear you ll thank me. Ok, favorite sponsor, but I didn t want to hurt any other sponsor s feelings.",
"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","endnote","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 1st, 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 easily 1 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 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 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 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 s it. It 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 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 s also a version included that works on selected text using a keyboard shortcut (defaults",
"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'","textexpander","title","updated","users","ability","allows","animated","appeal","awake","backlink","backslashes","based","between","breaks","brettterpstra","bunch","caption","change","changelog","characters","choose","class","collections","commands","configuration","configured","consists","containing","create","cross","defaults","description","designed","directory","dlbox","document","documents","donate","download","downloads","easily","empty","endnote","endnotes","enter","esque","except","extensions","fathom","figure","files","first","flexible","fnref","folder","footnote","footnotes","format","fragment","frame","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","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","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 31st, 2021",
"ts": "1630414800",
"summary": "I had a bit of a manic coding week this last week. Which probably means I m headed for some depression soon, so I wanted to write about at least one of the things I ve worked on recently before I lose motivation. So let 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 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 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 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 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 Anyway, that was my Sunday morning project. If you 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 for build notes in parent directories and compiles any",
"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","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","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 30th, 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 s an old project (last saw an update 8 years ago), but I 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 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 26th, 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 re paying for a static IP, your IP is changing now and then, defeating any custom domains you point to it. Synology s DDNS integration comes with presets for quite a few services, but most of the free ones don 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 m lazy and vain, I guess). I already had some unused domains registered with Namecheap, which offers DDNS for your domains, but Synology didn 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 t offer a URL you can curl, though, and using doesn t work with that (I m not sure why). The good news is that it 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 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 t matter, the script we 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 ll use that in step 6. For this next part, you 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. Especially once you have a public domain associated with your IP, you ll get your ports scanned",
"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","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 23rd, 2021",
"ts": "1629723600",
"summary": "I 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 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 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 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 t there. If it s greater than the public release and less than or equal to the live beta build, it gets markup to indicate it s in the beta only. If it 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 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 re interested, the code is up on GitHub and you 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","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 12th, 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","'nofollow'","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 27th, 2021",
"ts": "1627388640",
"summary": "Last week I posted my craziest Mac experiment in a while 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 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 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 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 s scriptability, not any shortcoming in the original code). The scripts use Accessibility scripting to click the menu items, so you don 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","meeting","meetings","mostly","multiple","myriad","nicely","occasional","operated","original","outside","pandemic","perfectly","plugin","posted","refresh","rendered","replicate","requires","respective","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 22nd, 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 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 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 m lost. I have snippets I 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 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 ve used for so long that I don 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 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 s the thing about software you come to depend on: it s only as good as the developer s ability to support it. And TextExpander comes with support you can rely on. If you re not using TextExpander, I strongly recommend checking it out. It s available for Mac, iOS, Windows, and Chrome. And my readers can get 20% off on a subscription: check out TextExpander today. You won 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","offer","output","panic","party","personal","phrase","posts","rapid","readers","recommend","regret","remember","response","right","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 21st, 2021",
"ts": "1626890340",
"summary": "I ve recently put some 1 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 t write this post because I was worried it would indicate mental instability of some kind 2 . But how could I call myself a Mac Mad Scientist if things didn t get a little crazy? We 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 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 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 s not a terribly difficult trick, but there aren 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 ll address them one at a time. This one is obvious, but it s no longer a touch screen and there s no translation of mouse-to-touch gestures, so some of BetterTouchTool 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 typing at the top of an iTerm visor window I don t care about con #1,",
"keywords": ["bettertouchtool","dashboard","touch","widget","actions","activate","activity","advanced","again","apple","applescript","bartender","bettertouchtool","board","bunch","bunches","calendar","clicking","close","configuration","doing","deactivate","default","directly","doing","extra","first","getting","github","group","groups","handling","having","highlights","however","hyper","launch","launchbar","macbook","monitor","moving","music","named","network","opening","parts","playing","preferences","readme","restart","scientist","scripting","setapp","settings","shortcuts","simulator","sorry","space","special","specific","spotify","status","stuff","system","taskpaper","today","toggle","touch","treat","triggers","uuids","weather","ability","absolute","accept","access","acting","action","actions","active","added","adding","address","addresses","adjustable","affects","again","agree","allowed","allows","almost","alters","another","anyone","anyway","appear","appreciated","arguments","asking","assigned","assigning","assume","automatically","automation","available","average","awesome","background","backtick","based","because","behind","between","bipolar","bites","board","bottom","bright","bunch","button","buttons","capabilities","careful","centered","certain","certainly","chalk","changes","changing","charts","choices","choose","clean","click","clicked","clicking","closes","color","coloring","combo","coming","command","compensate","compiled","completely","completing","conditions","config","configuration","constantly","contains","contents","contextually","controlled","conveniently","copying","couple","crazy","create","curious","cursor","custom","dashboard","default","define","detailed","details","developed","diagnosed","different","difficult","directly","directory","disable","discontinuing","dismiss","disorder","display","diversions","docked","documented","doesn","doing","dropdown","easily","enough","entry","episode","episodes","equivalents","erased","eventually","everybody","everything","example","except","explain","external","extra","familiar","fates","features","fiddling","first"]
},{
"title": "Software mute for XLR mics",
"url": "/2021/07/17/software-mute-for-xlr-mics/",
"tags": ["hardware","keyboard","microphone","podcasting","solutions"],
"date": "Jul 17th, 2021",
"ts": "1626526020",
"summary": "Over the last couple of years I 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 t compatible with Shush , the cough button solution I 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 mics 1 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 me 2 . 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 m afraid I 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 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 ll get to that in a second. Loopback isn t cheap, but it s so handy and so powerful that if you re working with audio whether streaming, podcasting, producing music, or using audio routing for any reason it 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 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, that meant it was also muting my guest on a Skype call. That s not workable. I",
"keywords": ["audio","interface","podmic","amoeba","aside","audio","hacking","keyboard","komplete","loopback","mikrofon","nonetheless","podmic","rogue","rolls","shush","skype","switch","ultimate","added","adding","adventures","afraid","again","amount","another","arsenal","assign","audio","avoid","between","biggest","bummer","button","buying","called","calls","caused","change","changing","channel","channels","cheap","cheapest","checking","choice","click","cluster","compatible","continue","continuing","controlling","convenience","converts","cough","couple","create","dedicated","default","desktop","device","devices","doesn","drawback","empty","ended","extra","fantastic","feature","force","found","guest","handy","hardware","having","imagine","impossible","inconvenient","inevitably","input","inputs","interface","interfaces","investment","keyboard","landed","latching","leave","leaving","letting","lodge","looking","makes","mapped","meant","media","meeting","microphone","missed","module","money","music","mutable","muted","mutes","muting","myself","output","pedals","perfectly","podcasting","pointed","powerful","press","problem","producing","recommend","respond","routing","search","second","settling","setup","sharing","shortcut","significant","silent","sitting","social","solid","solution","solutions","somebody","spent","started","streaming","stuff","switch","switched","switching","takes","thumb","toggle","toggling","topper","track","trackball","treadmill","tried","troubleshooting","trying","unique","unmute","unmuted","upsetting","using","virtual","wandered","where","whilst","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 13th, 2021",
"ts": "1626185520",
"summary": "I asked on Twitter about rubberizing my keyboard tray. I didn t know where to begin solving this problem. I got some very helpful feedback and thought I 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 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 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 s not working for me anymore, with the combination of Big Sur and an M1 Mac mini (I can 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 m working with it angled forward to any degree. So I wanted to make the surface sticky. I didn t want to get into rubberized paints, but I 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 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 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 re easy to remove and clean when needed. It s kind of a perfect solution. Both rolls come with enough material to do this a few times over, which I doubt I ll need to do, but I assume that at some point in the future I m going to want to make something else less slippery. I m sure the cost will even out eventually. Just thought I d share,",
"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","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 7th, 2021",
"ts": "1625662800",
"summary": "I 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 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 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 exactly what doing is",
"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","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 6th, 2021",
"ts": "1625592420",
"summary": "Jay Miller has published his first video on Bunch. It s a walkthrough of a Bunch he uses for automating his email newsletter process, and is a great example of Bunch 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 s not like I m paying anybody for this stuff.",
"keywords": ["tutorial","youtube","bunch","keyboard","maestro","miller","thanks","advanced","anybody","appreciate","assigning","automating","calling","conditions","considered","email","embedded","example","features","first","great","highlights","making","newsletter","paying","pressure","process","published","results","script","snippets","stuff","usefulness","using","variables","video","walkthrough"]
},{
"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 1st, 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 t need, just great prices from great devs. Now is the time for new plans and fresh projects and great new ideas. Whether you 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 re hosting a gathering of software artisans who are working to transform research and writing for a new era. We ve all finished our latest updates, and we 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 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 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 t come from a factory. Neither does artisanal software. For a limited time, we 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 get great software while it lasts!",
"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","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 29th, 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 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 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 22nd, 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 ve made this easier on myself in various ways, but I think I ve finally perfected a Jekyll plugin to make the process simple and the results consistent across my sites. I m calling it, not too cleverly, kbd. A few years back I wrote about Apple 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 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 s no need for the , so it 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 s guidelines. The plugin also outputs plenty of markup to make styling easy, but it 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 m using in the plugin s directory in the repo (in Sass format). The markup is easy to style with any CSS, though: As an example, here are some screenshots from the Bunch keyboard",
"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 19th, 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 t because that seemed grandiose. I mean, it is a grandiose update, but let 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 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 s the idea. Everything you need to set up a context (writing, podcasting, zooming, relaxing whatever you 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 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 t rewrite that here, but if you 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 s New? page distills it enough to be a starting point for exploring new features. Side note: I m sure I 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 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 was, and this will just overwhelm them. Hopefully, though, everyone will be as",
"keywords": ["github","markdown","because","bloodbugs","bunch","download","everything","github","hopefully","jekyll","lastly","markdown","quick","recently","updated","version","added","adding","again","ahead","automatic","automation","automations","aware","basic","because","before","behind","betas","between","beyond","browsers","button","capability","changelog","changes","channel","check","click","conditional","context","continue","couple","craziness","creating","culled","definitely","delighted","detailed","dialogs","diffs","discussions","distills","doing","download","easily","editor","embedded","encourage","enough","entirely","entries","everyone","expansion","exploring","features","files","first","folder","frequent","frontmatter","grandiose","great","happy","hesitate","hopefully","hundred","ideas","improvements","inclusion","interactive","issues","items","itself","latest","launch","logic","longer","macos","major","making","markdown","matching","meaningful","mentioned","newcomers","offers","officially","ourselves","overwhelm","overwhelming","people","plugin","podcasting","point","posts","powerful","pressure","program","public","quantify","recap","regular","relaxing","release","releases","reports","rewrite","section","seemed","share","shiny","showing","shows","since","single","snippets","stable","starting","stuff","super","think","thoughts","touched","typing","under","unsuspecting","updates","upgrade","users","variables","version","videos","whatever","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 18th, 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 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 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 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 ve heard I 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 17th, 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 10th, 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 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","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 8th, 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 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 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 ll make stable releases more often, so those who don t choose the cutting edge won 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 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 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 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 ve officially redirected all Bunch links on this site to point to bunchapp.co , the new official home of Bunch. I ve decided to keep Bunch free (",
"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","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","updated"]
},{
"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 26th, 2021",
"ts": "1622062080",
"summary": "I 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 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 ll get a menu of all the apps that can handle that file type. It 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 re interested in a free copy, just sign up below to enter the drawing. I 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","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 25th, 2021",
"ts": "1621966500",
"summary": "I wrote a macOS Service way back in 2012 that I 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 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 ll see why in a second. Since you re likely unfamiliar with the original (given its age), I 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 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 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 More info",
"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","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","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 20th, 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 as Safari does 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 no password required 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 17th, 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 s Touch Bar with available tasks as I changed directories. It 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 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","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 15th, 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 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 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 ve created, it s among my most loved. Like top three. Maybe top two. I ll be honest, it might just be my favorite 1 . SearchLink v2.3.65 Download SearchLink v2.3.65 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 01/16/24. Changelog Donate More info If you re curious: something changed in the way DuckDuckGo s nginx server responds to header requests, so the line wasn 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 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 re talking SearchLink, I d like to point out a feature I added a while back but hadn 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 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 s readily available to my SearchLink searches, offering a nice, finite set of possibilities that all but guarantees I ll get the URL I was hoping for. Don t tell Marked 2 , nvUltra , or Bunch , they all currently think they re the favorite child",
"keywords": ["duckduckgo","macos","search","answers","bunch","changelog","donate","download","duckduckgo","google","gritty","hopefully","instant","markdown","marked","maybe","nitty","overtired","pinboard","published","searchlink","searches","since","updated","added","among","available","baffling","beast","because","below","between","bookmark","bookmarks","browser","canned","changed","check","child","config","create","created","curious","destination","doesn","doing","download","editor","engine","error","expected","favor","favorite","feature","finished","finite","forth","guarantees","hacking","header","headers","honest","hoping","impossible","interest","jumping","leaving","links","location","loved","match","nginx","notes","noticed","nvultra","offer","offering","point","possibilities","primitive","private","project","properly","published","readily","recently","redirect","redirects","requests","responds","response","results","return","returning","scraping","search","searches","server","showing","someday","sorted","talking","think","threw","tools","tried","tutorials","using","version","visit","weekend","while","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 13th, 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 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 s readiness 1 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 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 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 s it. That s all that will actually build. So I 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 which crash Logic on the M1 and hope they get their act together soon.) I spent the weekend rewriting Jekyll plugins, giving up a few that I didn 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 blog with about 2100 posts dating back to 2010. I had gotten",
"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","became","because","broke","build","builds","changes","command","community","compilation","consider","corporate","crash","crazy","create","custom","dating","deploy","developer","dotbot","either","enough","everything","fairly","finally","formulae","forthcoming","giving","gotten","great","hackery","handle","handles","hardcoded","haven","hopefully","however","iterm","impossible","inauguration","indexes","install","installed","instance","keeping","latest","launching","letting","libraries","library","little","looking","looks","machine","minutes","mostly","myriad","needed","newer","paths","plugins","posts","problem","projects","readiness","realize","related","required","revamping","reverted","rewriting","scheduling","scripts","search","seconds","seems","shell","shenanigans","ships","specific","spends","spent","squeezed","started","stickier","stuck","stuff","takes","templates","thanks","thoroughly","together","tools","transition","trouble","updated","updates","updating","using","various","version","versions","vital","weekend","where","whole","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 13th, 2021",
"ts": "1620910800",
"summary": "Thanks to PDFpen for sponsoring BrettTerpstra.com 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 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","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 28th, 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 t care about git, be sure to check out the last link anyway. dandavision/delta I 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 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","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 27th, 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 t know exactly how Peek is working this magic. All I know is that I ve really missed text selection in Quick Look, and Peek has solved it. (I 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 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 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 23rd, 2021",
"ts": "1619193780",
"summary": "In the last Marked newsletter I wrote a bit about Marked s Streaming Preview , a feature of Marked that flew under the radar for a few years before starting to gain some traction. It 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 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 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 s the Keyboard Maestro macro: Copy and Stream to Marked . In order to use it, you ll need Python 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 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 d love to hear about it. And if you d like to see Marked 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": ["'public","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","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","text'","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 15th, 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 14th, 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 d update with the new info. I 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","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 12th, 2021",
"ts": "1618243740",
"summary": "I was browsing my gists recently and found one I 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 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 t know why I ever decided that Bash scripting was the efficient way to write this one. It definitely isn 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 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 t force it to run in the foreground, but why would you do that, really?). This little script really isn 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 m supposed to be done for the day. I ll be back in 20 minutes, I promise. When I sit down I run and my Mac will make sure I 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 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","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 8th, 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 6th, 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 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 t as easy as just running . You d either have do some terribly insecure things to , or store your Mac 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 ll use a combination of macOS 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 s encrypted and secure, storing everything behind a single password. You have to unlock it (enter your password) at intervals, but once it 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 re not directly aware of it. The Keychain is the center of this tip. We 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 ll be asked to enter a password, but whenever it s already unlocked (which happens any time any app needs credentials), we 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 to tell it how long to remain unlocked after entering your password. If your Mac is private and you want it to remain unlocked for as long as you re logged in, disable Lock after",
"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","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","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 2nd, 2021",
"ts": "1617397080",
"summary": "Backstory: my co-host on Overtired , Christina Warren , has a constantly growing collection of repositories she 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 m not doing a lot of WordPress development these days, I figured I d dust off my PHP skills and whip up a plugin for this. It 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 s really simple markup and I 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 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 More info (I would add this to the WordPress plugin directory for fun, but you still have to set everything up in Subversion and I don 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 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","installed","keeps","latest","little","markup","overtiredpod","plugin","project","projects","pulse","remember","repositories","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 1st, 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 two external audio interfaces with a combination of 8 inputs and 6 outputs routing was a necessity. A few virtual Loopback devices and I haven 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 m a very happy, very impressed user. With Loopback , it 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 31st, 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 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 s a minor update, but as someone who interviews a lot of people, I m constantly turning handles into links for show notes. This saves me a bunch of steps, so I m not ashamed. SearchLink v2.3.65 Download SearchLink v2.3.65 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 01/16/24. Changelog Donate More info P.S. TextBuddy Stuff",
"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","implementation","interface","interviews","leaving","linked","links","making","methods","minor","missed","needed","notes","opened","people","placeholders","plugin","quickly","replaced","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 29th, 2021",
"ts": "1617038700",
"summary": "I know mind mapping isn t for everybody, but if it s for you, I 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 ve written about all of these integrations individually before, but it s been a while and I ve had enough people seem shocked to find out about Marked 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 d ever want to receive, so I m turning it into a blog post for everybody. If you 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 ) I use mind maps whenever I m planning out a project or a longer writing piece (in fact, I m using one for this blog post). When I 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 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 s coming together with Marked. You get all of Marked s writing tools, including spell check, text analysis, and document statistics. When you re done brainstorming and ready to start writing, just use Marked s export palette",
"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 26th, 2021",
"ts": "1616766480",
"summary": "A buddy of mine is ramping up his command-line fu lately. He s a thorough notetaker, and he 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 re more descriptive anyway, but I might add some formatting for those in the future. Figured I d share this, just in case it scratches anyone else 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 More info By the way, TextBuddy (this week 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 s a secret setting you have to enable from Terminal, but if you re curious scroll down this page a bit. You know, to the part where Tyler says in 21pt type Please Don t Tell Anyone About This",
"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","ignores","immaculately","liked","limited","little","mentioned","minus","multiple","notetaker","output","palette","particular","popup","provides","ramping","ready","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 25th, 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 23rd, 2021",
"ts": "1616522880",
"summary": "I know we haven 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 t foresee and is now a more complete solution than it would have been, but that s taken some time. As the feature set grew, we 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 s day job, and thus his development schedule, and he s had some events in his personal life that have been very important, but also time consuming. And nvUltra doesn t work without Fletcher, so his schedule affects timing. We 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 s something that would be better to achieve while we 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 t make any promises on timeline at this point, but despite this step back, we re still closer than we 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 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","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 18th, 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 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 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 it s very complete. Oh, and it s also on Setapp . Sip - URL Schemes I 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 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 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 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 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 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 17th, 2021",
"ts": "1615986000",
"summary": "If you re keeping track at all, you ve probably noticed that I haven t posted about Bunch since the beta for version 1.4 launched . This is not due to a lack of progress. It 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 s some big stuff in there. I m going to bullet point just a few of them, but first I want to extend the invitation to beta test again. There s a small but very helpful group of testers who ve helped out with getting the beta to where it is today. I 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 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 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 m also seriously considering making it a commercial app. Well, planning to would be more accurate at this point. I d like to charge enough to offset the hours I ve been putting into it as a passion project, but not so much that it s inaccessible. If you have thoughts on this, or suggestions for pricing or sales models, I m always open to hearing from users. In the meantime, I ve greatly appreciated the donations that have come in. Enough people have donated that I think there 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. 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 line with a pipe (). That item will be taken out of the sequence and run in the background while the rest of the Bunch proceeds in order. Parallel",
"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","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","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","running","sales","script","scripts"]
},{
"title": "An ode to Bartender",
"url": "/2021/03/16/an-ode-to-bartender/",
"tags": ["appreview","icons","keyboard","macos","setapp","shortcuts","status"],
"date": "Mar 16th, 2021",
"ts": "1615899600",
"summary": "Bartender has long been a contender for Most Valuable Utility on my Mac. I ve mentioned it a lot . It s up there with TextExpander and BetterTouchTool . And I can t believe it, but it somehow keeps getting better. If you don t know, Bartender is an app that helps manage all those icons in your menu bar. If you re any ilk of power user, you run a bunch of apps that don 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 t need to see, and gives you a hidden secondary menu bar so you can still access those apps you just don 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 re running Big Sur, you ll probably love it. It adds a whole new interface that 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 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 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 re feeling cheeky, you can also write your own shell scripts that display the item if the script returns true. And get this 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 s keyboard access for all kinds of apps that usually require clicking. From Time Machine status to opening the Timing menu to check the current task, it",
"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","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","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 15th, 2021",
"ts": "1615813200",
"summary": "Ok, so I still write Mac apps in Objective-C. I swear I ll buckle down and get more comfortable with Swift eventually, but for the time being, I 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 t found one that did the same since Apple updated Xcode 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 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 t do much with custom types, so you 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 ve only tested this on a few classes at this point, so I 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 More info I also created a TextBuddy script for this. I m growing very fond of that app. I 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 time 1 .",
"keywords": ["xcode","action","apple","assuming","automator","changelog","create","describe","donate","download","github","mueller","nsstring","published","quick","readme","service","smith","store","swift","textbuddy","textbuddyscripts","tyler","updated","xcode","adding","architecture","basic","below","brackets","buckle","class","classes","clean","click","clipboard","collecting","comfortable","contextual","copied","crazy","created","custom","description","doesn","double","eventually","example","explains","extensions","figure","files","first","format","found","freely","growing","haven","header","himself","implementation","implementing","install","installed","little","lookup","manually","method","methods","mismatched","missing","mostly","moved","overrides","paste","placeholder","placeholders","plugin","plugins","point","properties","public","ready","repository","requests","resulting","right","roamed","script","scripts","share","simple","simpler","since","solution","spirit","square","suggestions","swear","table","tested","types","unrecognized","updated","wanted","write"]
},{
"title": "Work smarter not harder with TextExpander",
"url": "/2021/03/11/work-smarter-not-harder-with-textexpander/",
"tags": ["sponsor","textexpander"],
"date": "Mar 11th, 2021",
"ts": "1615471200",
"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com again this week! Don 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","'nofollow'","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 2nd, 2021",
"ts": "1614726360",
"summary": "I ve started going through and cleaning up my large collection of TextExpander snippets, starting with the ones I share publicly. In the process I m moving away from my homebrew snippet sharing system to using TextExpander s new(ish) public snippet groups. Once I ve pruned and updated all of the groups in the te-snippets tool, I 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 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 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 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 ve gotten to the point where I 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 m just back to using links. Obfuscating is of questionable value overall, but the general consensus on it is it 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 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 s possible a user won t have JavaScript enabled, in which case they d be left with a non-functioning link and no way to contact you. I have an alternate version of this that uses entity encoding, but it s so rudimentary that I feel like you",
"keywords": ["productivity","snippet","anyway","brett","finder","javascript","markdown","obfuscating","slugify","snippets","textexpander","tools","watch","address","alphanumeric","alternate","applications","assume","because","bunch","censored","characters","check","cleaning","collection","combination","completely","compresses","concern","consensus","contact","contents","creating","custom","define","discontinued","doesn","easier","email","enabled","encoding","entity","first","foolishness","forms","front","functioning","general","getting","going","gotten","group","groups","homebrew","https","hyphens","including","issues","letter","likely","links","mailto","makes","miscellaneous","mostly","moved","moving","multiple","naming","nothing","obfuscate","obfuscated","optional","original","overall","point","popped","possible","prefixes","process","pruned","public","publicly","putting","questionable","rather","redirect","refresh","removed","removes","rudimentary","share","shared","sharing","shiny","snippet","snippets","specific","spits","started","starting","swear","swears","system","tasks","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 26th, 2021",
"ts": "1614373560",
"summary": "Ok, so we re all in Zoom way too much these days. We re clicking links in calendar entries, Slack messages, and emails. They re opening a browser tab every time, which then opens Zoom. I wrote a little script to clean up all those tabs, but that s a kludge. Choosy is better. I 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 t even have to add Zoom as a browser in Choosy, just select Browse 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 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 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 re a developer and constantly using every browser out there. But it s also handy for anyone that has some sites that need a specific browser that 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 t normally able to capture URL clicks. What makes all of that possible is Choosy 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, I get a menu of all available browsers. Everything is customizable. It even has an API",
"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","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","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 26th, 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 ve mentioned NotePlan before, the Markdown-notes-meets-calendar-meets-tasks app for Mac and iOS, but it 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 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 11th, 2021",
"ts": "1613067720",
"summary": "I made a quick PopClip extension today for adding hard line wrapping to blocks of text. In general I m a fan of letting text wrap automatically, but when I 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 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 d bet money something like this already exists, but it was a nice break from other tasks anyway. Brett's PopClip Extensions v1.45.2 Download Brett's PopClip Extensions v1.45.2 A few PopClip extensions for Markdown writing and other useful tools Published 11/30/14. Updated 02/07/23. Changelog Donate More info",
"keywords": ["extension","newline","textmate","xcode","allan","brett","brett's","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","holding","install","latest","letting","money","multiple","newlines","others","prefer","preserving","project","quick","reinvent","removing","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 11th, 2021",
"ts": "1613048400",
"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! I 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","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 8th, 2021",
"ts": "1612798260",
"summary": "I did a little more weekend work on Bunch, and I ll probably post an update on some exciting new stuff soon. I d love it if you helped test by downloading the beta version and checking the changelog to see what s up. Anyway, that s not the point of this post. As part of working on the new release, I ve been doing a lot of documentation. And because the documentation has continued to grow, there 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 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 re writing an entire website with inter-linked documents, you 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 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 s the bookmarklet version, tested with Safari, Chrome, and Firefox: 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 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 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 m on before triggering it a on document ready, just as an additional safety measure if I forget to update the config before deploying. I won t go into the specifics of how to do all that, but if you re a Jekyll user (or anyone, really)",
"keywords": ["bookmark","development","javascript","markdown","anyway","bookmarks","bunch","chrome","command","control","firefox","however","javascript","jekyll","linkchecker","markdown","marked","proofing","safari","validate","above","action","added","animated","anyone","appendchild","arrows","automatically","because","before","between","bookmark","bookmarklet","bookmarkletwrap","bookmarklets","bottom","breaking","brettterpstra","broken","browsers","built","bunch","caption","changelog","check","checking","checks","class","click","cloudfront","conditional","config","continued","copied","create","createelement","cycles","depending","deploying","destination","displays","document","documents","doing","download","downloading","easier","embedded","entire","error","exciting","field","figure","finding","forget","frame","function","github","height","helped","higher","highlighter","highlights","https","includes","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","zqkbu"]
},{
"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 5th, 2021",
"ts": "1612561080",
"summary": "Web excursions brought to you in partnership with MindMeister , the best collaborative mind mapping software out there. If you re not keeping up with the latest in Bunch, there have a been more updates since my last post. I 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 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 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 m always impressed with VSCode, it hasn t grabbed me yet, despite my Overtired co-host s enthusiasm. And while I m impressed with Notion, it 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 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 4th, 2021",
"ts": "1612445400",
"summary": "Thanks to Unite 4 from BZG for sponsoring BrettTerpstra.com this week! I 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 2nd, 2021",
"ts": "1612274400",
"summary": "Are you ready? I kinda went down a rabbit hole with Bunch this last week. It s a lot. Because this release is so big, I 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 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 ve introduced frontmatter. It 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 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 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 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 up 1 . 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 just write or . Interval keys take formats",
"keywords": ["github","snippet","affinity","automation","backblaze","because","bernstein","bettertouchtool","bunch","bunches","center","commands","default","delays","disturb","dividers","downloads","dropbox","embedded","first","forum","fragments","friday","frontmatter","github","hammerspoon","improvements","integration","interval","keyboard","maestro","notification","notifications","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","available","avoid","before","begin","beginning","belongs","benefit","blame","blameless","bothering","bracket","brackets","brettterpstra","bunch","bunches","button","called","center","changelog","character","clever","close","closed","closes","closing","commands","complicating","contains","corrections","countdown","couple","credit","curious","cycle","dashes","dated","define","delayed","delays","demands","details","development","different","directly","display","dividers","download","downloaded","dynamically","embed","embedded","emojis","enabled","enough","error","especially","esque","evening","everything","example","executing","expanded","explanatory","explore","external","fault","feature","features","filename","files","finished","first","folder","formats","formatting","found","frontmatter","fully","generator","getting","great","grows","handle","handler","happening","hashes","having","hours","ideas","important","included","inconvenient","indent","information","interactive","intervals","introduced","kinda","language","launch","launched","launches","launching","leads","level","limiting","linked","listed","loaded","logging","loosened","makes","match","matching","media","menus","messages","morning","mostly","moved","multiple","names","natural","needs","nefarious","normally","notification","notifications","opened","opens","output","pages","pausing"]
},{
"title": "Another round of Bunch Updates",
"url": "/2021/01/19/another-round-of-bunch-updates/",
"tags": ["bunch","music","scripting","snippet"],
"date": "Jan 19th, 2021",
"ts": "1611064800",
"summary": "Ok, one more batch of updates for Bunch. It s just so much fun to work on that I spent last weekend on it. Don 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 ll be low-traffic and a great way for me to let you know about the important stuff. 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 s Do Not Disturb for Big Sur, AppleScript command, and interactive snippets. There 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 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 You can now specify default values for variables in snippets. Also, if you include variables in a snippet and then don 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 Bunch folder. These just contain a list of Bunches, one per line. Any",
"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","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","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 18th, 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 m happy to report that Apple has fixed this issue on their end and it s now 100% safe to use Marked 2 on Big Sur. I ve spent the last couple of months working on the massive rewrite that was required to incorporate Apple s new WebKit version into Marked 2 s existing architecture. I ll admit, it wasn t going great. I m ecstatic that Apple has fixed their bug and I don 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 re on the current release of Big Sur, Marked 2 is good to go. Thanks everyone for your patience on this. To celebrate I m running a little 10%-off sale. Just use the coupon code (or click here to apply it automatically). It s good until March 1st, feel free to share it with someone you care about! If you 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","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 14th, 2021",
"ts": "1610649840",
"summary": "Here 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 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 m grateful. First, I think I ve come up with a solution for Do Not Disturb commands under Big Sur. This needs further testing but to the best of my knowledge Bunch doesn t break anything in the process. It 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 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 result 1 . 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. There 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 m calling optional snippets. I wanted to add some interactivity to a Bunch so that I didn t have to make two different bunches when only one part of it was different. I ve started this process by allowing simple Yes/No choices when loading snippets . I may expand this at some point to allow more complex dialogs, but this approach fits well with the spirit of Bunch syntax 2 . This does mean that if you want to make a single app or script optional, you have to create a snippet with a single item, but you can just add a fragment for that. When you open the Bunch, it will",
"keywords": ["applescript","languages","scripting","snippet","apple","applescript","automator","autoplay","bonus","bunch","bunches","checkmarks","clear","clicking","coding","depending","disturb","enough","example","first","focusing","interactivity","marked","mostly","music","optional","overtired","preferences","single","snippet","snippets","spotify","sublime","thank","toggle","tower","using","within","workflow","xcode","above","adding","again","allow","allowing","allows","amount","announcement","another","appear","approach","available","background","based","basics","because","block","blurry","boolean","break","breaks","broke","brute","build","bunch","bunches","calling","calls","checked","checkmark","choice","choices","clearing","click","clicking","close","closes","closing","combination","command","commands","complex","complexity","complicated","confirm","contents","context","correlates","couple","create","damages","debugging","dedicating","defined","developer","dialog","dialogs","different","difficult","directly","disclaimer","doesn","download","earlier","easily","either","elegant","enabled","enough","episodes","everyone","example","execute","executes","executing","expand","expanded","extra","extracting","false","favorite","feasible","feature","features","fixed","fixing","force","fragment","function","gently","going","grateful","handler","happen","happens","having","iterm","image","import","including","inordinate","interactive","interactivity","issues","items","knowledge","latest","launch","launched","launches","leave","little","loading","logic","makes","method","modifying","music","needs","notification","notifications","obliterate","official","optional","options","parameters","particular","passes","pause","playing","playlist","playlists","plist","point","pollute","preference","preferences","prevent","process","processing","project","proven","query","quitting","quotes","range","reading","release","required","responsible","reusable","saved","script","section","seems","selected","selections","sending","sense","serious","simple","simplicity","simply","single"]
},{
"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 14th, 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 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 13th, 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 ve mentioned Slow Feeds in the past. It 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 ve just come out with a Mac companion version (Catalyst) of their streamlined todo/scheduling app. It 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 ve been mentioning this lots of places, but I 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 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 6th, 2021",
"ts": "1609949520",
"summary": "I 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 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 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","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 31st, 2020",
"ts": "1609435860",
"summary": "Happy New Year s Eve! As has been my tradition for almost a decade now (since 2011!), I ve compiled some of my favorite apps and things for the last year. Not a complete list, of course I like a lot of things 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 ) and being pretty sure my ADHD meds aren t working anymore has led to me mostly just being able to do what s absolutely required without a lot of room for creative pursuits. Hopefully I 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 ll get a little bonus when you sign up. If an app I mention is available on Setapp, I 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 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 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 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 Setapp, Dash is instant access to the docs for just about any programming language",
"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 10th, 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 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","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 2nd, 2020",
"ts": "1606925760",
"summary": "I m usually a good sport about macOS updates. I find stuff to like, and deal with the bugs as they get worked out. I 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 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 s the kind of thing where I can t really understand the motivation for doing it. It seems like a regression to me, no matter how I look at it. I haven 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 s a start., but I 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","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 12th, 2020",
"ts": "1605196200",
"summary": "Ok, so here s the deal. Marked works on Big Sur. If you 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 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 t be zoomed, text isn t selectable, and it 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 ll be posting a knowledge base article on that. You ll lose some of Marked s more advanced export features, but you ll get a nice vector PDF out of it. Allow me to explain a little further why this isn t working, and why I 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 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 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 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 d have to have two entirely different apps available if I wanted to maintain customers who, for various reasons, haven t chosen to update their OS. Which isn t a trivial number these days. After spending days and weeks on workarounds, I ve come down to completely bypassing WebKit for the PDF export functionality. It s still a major rewrite, and the available functionality, especially",
"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","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 12th, 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 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 11th, 2020",
"ts": "1605115560",
"summary": "Version 2.0 of Hook is out, and there 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 s new in the Hook 2.0 Release Notes . If you ve checked out Hook in the past but weren t sold, take a fresh look at it. There 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 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","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 6th, 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 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 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 ? Brittany Sith (@addliberator) November 5, 2020 It should be noted that there 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 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 t say never, maybe someday Mozilla will get its AppleScript act together Here s the script. You can trigger it from LaunchBar or Alfred, or use Automator to create a Workflow, Service, or App bundle. I ll leave it at that. It 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 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","initial","issues","kingdom","launched","leave","leftover","maybe","myself","noted","people","purports","quick","response","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 6th, 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 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 s happened, though it didn t take a pair of geniuses to guess how things were going to turn out. So we don 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 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","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 30th, 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 ll try to connect with some of my hopefuls in a few weeks and see how things are going. In the meantime, I m very much looking forward to chatting with Kelly Guimont this coming week! Overtired #211 was a blast. We ve decided to record in the mornings for the foreseeable future. We 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","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 27th, 2020",
"ts": "1603833900",
"summary": "I 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 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","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 23rd, 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 s also one of the few Black developers I ve had the pleasure of talking to on Systematic, a thing I d like to make less rare. This week 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 s not necessarily a line, as I 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","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 16th, 2020",
"ts": "1602872820",
"summary": "This is actually a double well, quadruple 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 s start with Systematic. On episode 241 I had Tyler Hall on . He 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 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 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 d also like to mention that I ve started a Discord server for Systematic and Overtired listeners. There s already a great community forming there, and I 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","makes","maybe","mechanical","mention","missed","morning","numbers","others","overtiredpod","people","podcasts","politics","price","problem","quadruple","quality","reality","recorded","religion","right","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 15th, 2020",
"ts": "1602766800",
"summary": "Thanks to Curio for sponsoring BrettTerpstra.com this week! I ve been a fan of Curio for years for everything from research and brainstorming to full project management 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 13th, 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 ve looked at it in the past, it 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","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 9th, 2020",
"ts": "1602244800",
"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! I ve said it many times, but I 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 they 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 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","message","messaging","mistakes","organizations","powerful","precious","projects","questions","ranges","readers","reporting","reports","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 2nd, 2020",
"ts": "1601673540",
"summary": "I 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 m a podcaster? That doesn t sound quite right, but I 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 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 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","hours","level","light","maybe","meant","media","mental","numbers","overtiredpod","podcast","podcaster","podcasts","points","professor","prompts","racism","recorded","right","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 25th, 2020",
"ts": "1601060400",
"summary": "I had the pleasure of interviewing Patrice Brend 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 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 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'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","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 25th, 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 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 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 m afraid I ve lost track of who pointed me to this when I was having issues, but it 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","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 21st, 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 d write another one while I was in a depression, just to contrast. If I 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 kind of unstoppable. Writing about the depressive side is much more difficult. It takes a concerted effort and there 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 ll get done, how I ll be full of ideas, how little sleep I 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 t know why I never remember that. Writing this post is an example of the difference. While I m manic I assume that people want to hear what I have to say. I assume that people are interested in what s happening to me, and that what I can share might help them in their own lives. When I m depressed, it 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 I don t think there s any number high enough to make me feel validated in those times. There s no amount of affirmation that can make me feel like I m OK. My depressions are short enough that I can rest assured there s some sunlight just over the horizon. Sometimes they re as short as three days. It will usually be at about the middle of the run that I ll realize that what I m feeling doesn t reflect the reality around me. Unlike the manic phases, where I m immediately aware of what 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 of it, I have the good fortune of being able to counter the dark thoughts by repeating this isn t real, and knowing from experience that I ll be",
"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","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","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 18th, 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 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 m not complaining, this was more up my alley. I m also really proud of the Sleep Quality Index episode image 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","moved","music","nerds","nicely","numbers","overtiredpod","proud","ranged","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 17th, 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 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 re done. This makes it easy: just use . The double bang is a bit inelegant, but I d already used for quitting an app, whereas with any script commands it means run when quitting . So that s a bit ugly, but I figure it 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 s the headline feature: I 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 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","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 16th, 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 you know, all the things Bunch can do. The core of the trick is Bunch s URL handler. You can use (or just if you don 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 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 s URL. So the biggest hurdle is just making a button trigger a URL. The default web launch commands don t seem to do the trick with system url handlers. The best solution I ve found is to use Keyboard Maestro , and since I already owned it, I didn t look much further. I m certain there s an existing plugin for Stream Deck that would handle this directly, but I didn t find it yet. In Keyboard Maestro you 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 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 d already set up all my buttons. There 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 ll get a list of all your Keyboard Maestro macros. Just select the macro to run and you re done. This means you don t have to assign triggers to",
"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","hiding","hotkey","hurdle","icons","install","installed","launch","launching","little","macro","macros","making","nicer","options","outputs","owned","plugin","process","replacing","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 15th, 2020",
"ts": "1600182000",
"summary": "Continuing on with Shark Bunch Week I ve been talking about Bunch again lately because I ve been setting up a new one for podcasting (which happened to lead to new features ). It s been a while since I created a Bunch from scratch, and I thought I 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 ve got the Podcast Bunch set up and working smashingly, so I ll share that here and detail some of the tricks. I know several people can use some of these tips verbatim Bunch seems to be especially popular with podcasters. I 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 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 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 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 s safe to assume that I ll want it to keep running after I m done podcasting. This can apply to any apps you need specifically for a context but don t want to close when you leave that context. I also use nvUltra s url handler to open the notebook where I keep all of my",
"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","hides","ideas","ignore","inelegant","input","intimidated","launch","launched","launching","leave","leaving","looking","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","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 14th, 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 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 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 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.) 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 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 11th, 2020",
"ts": "1599843600",
"summary": "I caught up with Greg Pierce, developer of Drafts for iOS and Mac, on Systematic 237 this week. It didn t get as nerdy as you might expect from the combination of the two of us, but we covered all the fun stuff. I ve stopped doing my own Top 3 Picks every week, which has been helpful in preventing burnout, but it 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 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 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 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","helpful","history","learn","learned","looking","maybe","media","mover","nerdy","numbers","overtiredpod","person","personalities","pivot","podcast","preventing","recently","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 10th, 2020",
"ts": "1599774540",
"summary": "It s been a while since I talked about it, so I ll just real quick remind you that it 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 s where it 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 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 is that many external audio interfaces (like ALL of mine) don t allow volume to be set by the system. So the volume command generally only operates when an internal source is selected. But I haven t had",
"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","ideal","includes","input","inputs","insensitive","interfaces","internal","intricacies","issues","latest","launch","launcher","launching","learn","liner","listening","little","looking","macos","matching","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","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 10th, 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 9th, 2020",
"ts": "1599679140",
"summary": "I talk a lot about having ADHD. Between this blog, Twitter, my own podcasts, and many that I 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 s generally understood. It doesn t scare people. I have the displeasure of a dual diagnosis, though, and I don t talk about the other half of it very much. Bipolar disorder is a lot scarier to most people. Hell, it s scary to me sometimes. I was diagnosed with it in my 20s, long before I was ever diagnosed with ADHD. I ve been through many different medications, and on the whole I 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 m going to talk about it. I m not here to solve anyone s problems, just maybe let some people know they re not alone. Forgive me, this is probably going to get long and then not resolve to the kind of emotional payoff you 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 m rapid-cycling, and my mania and depressions usually don t last more than 3-5 days. I 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 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 t look like crazy, irresponsible behavior that endangers others, or sucks away all my money, or anything truly self-destructive",
"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","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","maddening"]
},{
"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 8th, 2020",
"ts": "1599597720",
"summary": "Now that I m once again spending a significant amount of time creating and editing podcasts, it s leaving less time for consistent blogging. So, to bridge the divide a bit, I m going to get back into blogging about the podcasts. Look for weekly (as I m able) recaps of both Systematic and Overtired under one heading: The Podcasts. This by no means means I 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 m spending time on, and for the moment, that s podcasts. I foresee getting back into the regular swing of blogging in the near future. So, for this the inaugural podcast post of season 2 I ll start by mentioning last week s episodes (even though new ones are scheduled to come out starting tomorrow I 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 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 s been a guest in the past, and I figured right now in the middle of a pandemic that has many of us secluded from our usual tethers to reality would be an ideal time to hear what a mental health professional had to offer. The audio didn 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 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 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 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 ability to secure advertisers, which is in turn dependent on subscriber numbers. Getting yourself counted in my download stats (and maybe",
"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","ideal","inaugural","joined","leaving","liked","maybe","mental","mentioning","middle","movies","numbers","offer","overtiredpod","painfully","pandemic","passion","people","perspective","podcast","podcasts","portion","posting","process","professional","reality","recaps","regular","right","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 24th, 2020",
"ts": "1598287020",
"summary": "As I ve mentioned a few places lately, I ve been working on getting both of my podcasts, Systematic and Overtired, back up and running after a long hiatus. I 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 t have the stamina to produce and edit two podcasts and deal with sales. I m excited to be working with BackBeat Media now. They 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 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 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 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 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 ve really enjoyed from season 1, some of whom I haven t chatted with for over 7 years. It 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 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 needs to hear it. I also have return appearances from Jared Rodriguez and Mary Jo",
"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","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","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 17th, 2020",
"ts": "1597669200",
"summary": "I 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 ve been refining my podcasting setup a bit. After some experimentation, I thought I d share what hardware and software I ve landed on (for now). I always hesitate to write posts like this because I 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 m no Marco Arment when it comes to mics and gear. Or lightbulbs. But I can tell you what s working for me. I also don 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 s do this. Obviously, this all starts with the microphone. At the time I last recorded Systematic, I d been using a Samson C01UPRO for years. It s not that I hadn 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 s not the best, but it s perfectly good option for the price. I had a bunch of options I 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 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 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 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 s what I 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 I d heard people say it many times, but had never done the comparison myself. Turns out that the common wisdom isn t wrong. The ST51 doesn t actually seem to be available anywhere anymore, so it s kind of a bum pick to publish. There are myriad articles comparing podcasting microphones out",
"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 13th, 2020",
"ts": "1597323600",
"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com again this week. Whether I 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","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 10th, 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 7th, 2020",
"ts": "1596805200",
"summary": "A long while back I linked a CLI called . It s an excellent little tool that searches StackOverflow for code examples for any given query. It recently updated, so I thought I d try my hand at a LaunchBar action for it. There s already an Alfred workflow , if you 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 m not sure about the utility of the latter option, and setting up the cache requires manually creating a directory. But I figured I 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 More info",
"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","highlighted","howdoi","install","installed","interface","latter","lexer","linked","little","looking","manually","offer","opening","output","package","passed","preview","pygments","query","recently","requires","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 6th, 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 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 t work for me, nor did a dozen other solutions I tried. Here 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 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","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 23rd, 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 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 s the best part. Pleexy is an integration tool built exclusively to automate the task management experience. This means you don 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 s easier to identify your priorities across projects and focus on doing real, meaningful work. Start taking better control of your tasks wherever they re from — with Pleexy. For unlimited connections, you can always upgrade to a Premium plan for just $4 a month (or $40 a year). BrettTerpstra.com readers can get 20% off our annual plan!",
"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 15th, 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 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 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 s WWDC Videos: Learn how to achieve exceptional typography in your app s user interface that enhances legibility, accessibility, and consistency Andrew Canion - Replicating Hey.com Features in Regular Email Systems This is very, very close to the system I ve been using for a couple years with Sanebox, MailMate (on Mac) and Spark (on iOS). So close that now I don t feel the need to get around to writing mine up any further 😉 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 ve always made a point never to use emoticons or emoji in my writing here, preferring to express emotion through language. But I m making exceptions from here on out for Web Excursions.",
"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","endnote","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 10th, 2020",
"ts": "1594386000",
"summary": "I ve been meaning to create a command line utility for Hook.app for a while now. I ve mentioned Hook before , but if you haven t heard of it, it 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 s currently experimental, but I 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 s a Ruby gem you can install with ). It has a project page now, but if you ll listen, I ll tell you a little bit about it here This tool uses Hook 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 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 s actually just one missing detail (failure to store a title when copying a hook) that s slowing it down there, and I m told a fix is coming.",
"keywords": ["command","interface","rubygems","applescript","brett","issues","mailmate","nvultra","omnifocus","spoiler","aliases","aspirational","available","basic","because","before","between","bidirectionally","built","changes","clever","cloning","coming","command","commands","copying","create","created","creates","default","delightful","detail","detailed","developed","documents","easily","either","evolves","experimental","familiar","features","feedback","files","forum","great","happen","haven","heard","hooks","install","installation","instructions","leave","library","linking","links","listen","little","lovers","meaning","mentioned","missing","multiple","navigates","opening","pasting","paths","powerful","productivity","project","removing","running","scratch","section","selecting","slowing","store","subcommands","system","tasks","terminal","thought","title","undergoing","useful","users","utility","wanted","while","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 9th, 2020",
"ts": "1594323360",
"summary": "I know you need an nvUltra update, so I 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 s a nontrivial chance I ve broken some part(s) of its extensive feature set and haven t noticed yet. That s why I 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 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 re into testing and don t want to read all the stuff I 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 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 s just that first improvement, the JavaScript DOM injection, was, well, a whole thing. A",
"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","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","meaningless","meant","mentioned","menus","metadata","missing","model","moves"]
},{
"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 9th, 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 8th, 2020",
"ts": "1594198140",
"summary": "If you ve noticed SearchLink suddenly started returning raw DuckDuckGo links, you re not alone. I 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 s a new version (2.2.15) available for download, below or on the project page . SearchLink v2.3.65 Download SearchLink v2.3.65 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 01/16/24. Changelog Donate More info",
"keywords": ["markdown","search","tools","writing","changelog","donate","download","duckduckgo","markdown","published","searchlink","updated","alone","available","below","changed","changes","download","editor","leaving","links","noticed","processing","project","results","returning","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 22nd, 2020",
"ts": "1592846580",
"summary": "It 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 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 s any software you need on the docket. There 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","highly","including","individually","losing","organizers","pointers","profits","purchased","recommend","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 19th, 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 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 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 t do for you. It 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 re not loving Apple s official Developer (Catalyst) app on your Mac, here 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 15th, 2020",
"ts": "1592231400",
"summary": "It s been a few years since I made any significant updates to the Markdown Service Tools , so I guess it s time. I 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 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 re working in. By assigning keyboard shortcuts to your favorites, it s possible to turn any editor into a Markdown editor. I ll say off the bat here that we re going through some serious pet medical issues in our home right now, thus extra expenses, so I 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 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 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 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 needed. Speaking of RTF, the MultiMarkdown to RTF Service is working again!",
"keywords": ["chrome","firefox","google","languages","lightweight","markup","taking","actions","analytics","anyway","applescript","backticks","banner","block","brave","brett'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 13th, 2020",
"ts": "1592085900",
"summary": "When I posted about it, I honestly didn 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 howzit 1 and mdless 2 , 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 s autoscroll feature (hit when previewing a document) is entirely JavaScript-based, so I 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 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 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 re considering using Marked as a teleprompter, I think you ll dig the changes! Changed to allow interactive processes like vim from within @run directives. Fixed an issue where a table would disappear from output if it were the last thing in a document.",
"keywords": ["interface","scroll","scrolling","techniques","teleprompter","changed","fixed","javascript","marked","paddle","setapp","turns","webkit","ability","added","adding","again","allotted","allow","animates","anyone","autoscroll","awaiting","based","because","bounds","breathe","bunch","changes","comments","considering","continue","countdown","countdowns","customers","depending","directives","disappear","document","enough","entirely","feature","focus","focusing","found","functionality","going","handy","happening","hitch","honestly","horizontal","hours","howzit","improved","included","increment","interactive","interested","interval","jitters","little","makes","mdless","mentioned","mercy","middle","minor","myself","navigability","navigating","needs","nifty","obvious","offer","older","output","outside","pause","pauses","people","performs","pixels","posted","practical","prepare","preview","previewing","primary","processes","proud","quirks","repeated","reposition","revamping","rewrite","running","screen","scroll","scrolling","scrolls","seamless","seamlessly","second","seconds","section","shifted","shifting","simple","simply","slide","smooth","smoothly","speed","spent","sprint","stops","suffers","table","teleprompter","think","timeout","toggle","topic","transforms","transitions","truly","trying","updates","users","using","version","vertical","video","visual","where","window","within","writing"]
},{
"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 11th, 2020",
"ts": "1591876800",
"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! As I m sure long-time readers know, I m a huge fan of TextExpander, and am always pleased to have them as a sponsor. TextExpander does what you d expect from its name: it expands text. You define text shortcuts that expand to prepared snippets when you type them. It 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 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","messages","office","often","pleased","powerful","prepared","prevents","productivity","readers","repeat","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 10th, 2020",
"ts": "1591793820",
"summary": "I m not going to talk much about me and my beliefs here. Suffice to say I ve been a supporter of prison and police abolition since my 20s and I 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 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 but a good start for a first-person view. Unicorn Riot Commercial-free, viewer supported, independent media live video streams. Minneapolis Follow on Instagram , Facebook , Twitter Rachel Cargle Curious Soul. Writer. Lecturer. Public Academic. New Yorker. NYC Follow on Instagram , Twitter Also follow The Great Unlearn on Instagram Dee Dwyer Visual Voice for the People, Photographer D.C. Follow on Instagram Tony Mobley Documenting the Culture, exposure is 🔑 Contributor to @everydayblackamerica D.C. Follow on Instagram Michael Noble Jr. Harlem based photojournalist NYC Follow on Instagram Demetrius Freeman Photojournalist, Visual Storyteller, NYT contributor NYC Follow on Instagram , Medium , Twitter , Facebook Devin Allen Photographer Baltimore Follow on Instagram Chris Facey Documentary, Street and Lifestyle Photographer. 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 8th, 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 s 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 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 s way, plus it was fun to code. I stand by this addition to Marked 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","makes","meter","obscure","often","pause","pauses","people","points","preview","prompting","rarely","replacement","right","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 27th, 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 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","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 21st, 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 who continue to own their content so they can skip the ads and trackers. Scroll isn t the first attempt at this, but it has more potential for wide adoption than some others I ve looked at. Here 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 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","merch","micropayment","mouse","multiplexer","necessary","others","partnership","potential","prefer","preset","publishers","reading","replacement","rigamarole","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 18th, 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 t been raptly following the progress on that little side project, it s a little tool that replicates any macOS app s menus in HTML and allows for more flexible and consistent screenshot creation. For a while it s been 90% of the way to being a perfect tool for updating my documentation 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 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 s pretty close. I added two new features to get me there: the screenshot () command now allows you to specify a filename, and there 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 s worth running Chrome for it even if it 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 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 s resistant to changes to the menu ordering and wording. This means that as new menu items are added and I need to update the screenshots, I just have to regenerate the menus themselves",
"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","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 16th, 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 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 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 d rather not perpetuate that. I 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 ll eat the cost and get you something else if needed. I don 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 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 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 t forget about the Rock Scissors collection , including new material options for (my favorite t-shirt I 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","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 14th, 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 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","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 8th, 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 t, so it 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 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 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 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 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 is passed to Fish within braces, meaning it s interpreted as a list of arguments in a brace expansion. The above example works with longer",
"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","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","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 7th, 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 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 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 6th, 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 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 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 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","hidden","interaction","inverted","livereload","longer","looking","machine","mapping","missed","options","partnership","periods","personally","posts","prefs","preview","processors","productivity","recently","relaxed","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 30th, 2020",
"ts": "1588248000",
"summary": "A big thanks to SoundSource from Rogue Amoeba for sponsoring BrettTerpstra.com this week. I ve used almost every app Rogue Amoeba has made, but SoundSource has become an especially indispensable tool on my Mac. And they 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 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 29th, 2020",
"ts": "1588183500",
"summary": "I ve been trying out and letting go of code snippet managers since the early days of Code Collector Pro . I think I 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 s the thing: this folder full of Markdown files has been ported to every snippet manager I ve tried, either by direct import or via a script I create to read them in and write them to the snippet app s format. As plain text, they re portable and highly flexible. Storing everything in Markdown has never bitten me. Storing everything in a snippet app 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 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 t switch apps as often as I have, but the fact that it 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 s JSON format, let me know, I have just the script for you. The whole point of nvALT (and nvUltra, if you 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 s always been as fast or faster for me to search my snippets in nvALT than to go through whatever snippet app I m trying at any given time. With a little tagging and consistent naming conventions I never can t find the snippet I 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 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 for snippets, I can use subfolders in addition to tags to group code (both in metadata and macOS tags",
"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","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","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 28th, 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 s my affiliate link ), but this post isn t about Sanebox. It s about the huge bundle of savings they ve put together for a lot of folk s new normal of working from home. With services ranging from actiTime to TextExpander, there 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","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 23rd, 2020",
"ts": "1587643200",
"summary": "A big thanks to MeisterTask for sponsoring this week s blog post! I 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 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 s simple and easy to use. You and your colleagues 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 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 s clear that there are a lot of people suddenly in uncharted territory working from home for the first time. So how can MeisterTask help? It s software that can help you manage your email, communicate, and hold meetings. MeisterTask helps you manage your work. 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 real-time via comments, mentions, instant notifications and watching. If most of your tasks come to you in the form of email, you ll be happy to know that each section in your MeisterTask project comes standard with its own email address,",
"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 20th, 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. Affinity Publisher I m a fan of all of the Affinity apps, so when it came time to buckle down and do the layout for a children s book I m working on, I decided to give Publisher a real look. I haven 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 s a top quality publishing app for $25 (regularly $50, 50% off right now). DaVinci Resolve 16 It 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 re probably still going to have to go to other people 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 s Streaming Preview feature, allowing live preview as you write in Drafts. There are some things I d like to improve about the whole shebang on Marked 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 17th, 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 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 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 . 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 ll point out that you can correct pronunciation in this pane as well. 1 A cheeky aside. Oh, you.",
"keywords": ["language","software","voice","apple","applications","check","customize","first","speech","system","utilities","utility","voice","voiceover","voices","zarvox","accessibility","accidentally","across","aside","assumed","available","bottom","boxes","changed","cheeky","choose","command","common","confirm","couple","definitely","disappeared","doing","download","dropdown","favorites","however","install","installed","killed","knowledge","likely","listed","lives","notifications","novelty","options","ostensibly","partial","point","pronunciation","releases","restore","script","selecting","sidebar","studying","stumbled","suddenly","today","turns","useful","users","voice","voices","while"]
},{
"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 16th, 2020",
"ts": "1587038400",
"summary": "A big thanks to MeisterTask for sponsoring BrettTerpstra.com this week! I recently posted about their latest feature Agenda 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 s very own version of a Gantt chart. If you ve never heard of MeisterTask before, here 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 s progress visually from start to finish. Plus it s easy to use! One of MeisterTask s USPs are its features built to help teams collaborate online. Given the situation that most companies find themselves in at the moment working remotely 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 s duration, from start to completion, on a calendar for easier coordination. This adds a completely new dimension to how you view your project s progress on the whole. MeisterTask has integrated these core functionalities into their latest feature Timeline. A few benefits that Timeline offers, aside from a project overview, are that: It gives an overview of your team s workload (Who 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 ahead of time which deadlines will or won t be met) It facilitates better planning and",
"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","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","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 15th, 2020",
"ts": "1586961360",
"summary": "Since I last wrote about Fish (the Friendly Interactive SHell ), I 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 s an amazingly productive feature. I 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 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 t had to do a lot of further tweaking, but I 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 t perfect, but it s much improved. Now if I use my Xcode shortcut in Marked 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 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 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 index, now cds to top level and restores working directory on",
"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","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 9th, 2020",
"ts": "1586430000",
"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! I 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 re more productive everywhere you type. Smile (TextExpander 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","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 8th, 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 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 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 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 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","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 2nd, 2020",
"ts": "1585828800",
"summary": "Thanks to MeisterTask for sponsoring BrettTerpstra.com this week! I ve been using MeisterTask for team project management for quite a while now, and I 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 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 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 per month. Sign up using",
"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 1st, 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 s the latest news. The beta continues as we solve a few final bugs. Some of them are mysterious, as in we 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 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 s working quite well. The beta is absolutely full at this point, but we re not far from release. Please continue to be patient, I promise it s coming! Addendum: For those who don 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 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","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 30th, 2020",
"ts": "1585580400",
"summary": "Since posting about the new Marked Custom Style Gallery , I 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 rhythms 1 . They all include regular and inverted (high contrast) variations. Generated using the cool typography.js .",
"keywords": ["custom","rhythm","style","vertical","click","custom","fadingfast","gallery","generated","hardstock","marked","monophile","mouse","since","style","symphonic","visit","added","browser","button","careful","consider","contrast","developed","instantly","inverted","links","mention","pairings","posting","preview","regular","rhythms","styles","thoughtful","typographic","typography","using","variations","worth"]
},{
"title": "Undo anything with Git and Tower",
"url": "/2020/03/26/undo-anything-with-git-and-tower/",
"tags": ["sponsor"],
"date": "Mar 26th, 2020",
"ts": "1585220400",
"summary": "Thanks to Tower for sponsoring BrettTerpstra.com again this week! As I ve said before, I 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 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","merging","mistakes","often","peace","popular","powerful","publishing","quickly","rebasing","release","remote","repositories","requires","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 25th, 2020",
"ts": "1585132680",
"summary": "We here at BrettTerpstra.com take COVID-19 very seriously. We 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 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 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 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 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 s a dock that hooks it into an external display and my Ultimate Hacking Keyboard. That s my work setup. However, it s also my play setup. It s where I write music, it s where I work on side projects, it s where I get away from the rest of the house when I just want to listen to tunes and surf the internet. I m not good at only working in my office. And to be honest, that 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 m truly avoiding something, and the pressure of a deadline isn t getting me to focus, then it often takes other tricks to get there. One of those tricks is transitioning. With my ADHD, it s easy to get hyperfocused (borderline obsessive) on something, and often something",
"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 24th, 2020",
"ts": "1585060980",
"summary": "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 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 even with one hand 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 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 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","highlighting","including","intercepting","keyboard","keyboards","layouts","linking","listen","listens","lookout","macos","makes","media","needing","newsletters","nobody","offers","partnership","podcast","presenter","quickly","reliably","resources","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 19th, 2020",
"ts": "1584615600",
"summary": "Thanks to The Archive for sponsoring BrettTerpstra.com this week! I know that with the impending release of nvUltra 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 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 s scripts to manipulate the files. No boxing-in, no proprietary features. Use plain text to store notes, because it 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 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 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 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 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 s backed by a community of genuinely helpful and interesting folks where we help each other with our struggle to become better creative",
"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 16th, 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 ve spent more time automating something than I 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 ve realized over time that the real benefit of automation is avoiding mistakes. When I automate something (anything), I m defining the steps that need to be included to complete the task. I 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 s something I don 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 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 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 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 t fresh in memory anymore. Those aspects add value to any automation and shouldn t be discounted. And it will help me sleep better at night, knowing I don 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","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 12th, 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 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","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 11th, 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 but it s really fun to play with. If you missed it, NiftyMenu is a tool that perfectly recreates any Mac application 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 re thinking that kinda makes sense, but a brief screencast sure would help, and probably not make you look any more insane, you re in luck The first big change and the impetus for this update 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 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 hack 1 , but it works. It 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 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 Chrome s AppleScript capabilities leave a lot to be desired. So at this point it s a",
"keywords": ["applescript","interface","keyboard","screenshot","shortcut","software","techniques","anyway","applescript","chrome","downloads","events","javascript","keyboard","marked","namely","niftyapi","niftymenu","screenshots","shift","shortcuts","system","tweetbot","added","admittedly","advantage","allows","appearance","arrow","attributes","automatically","automation","before","break","brief","bugging","built","button","callout","callouts","capabilities","capability","capture","caveat","chainable","change","check","click","contains","crazy","desired","directly","ended","extra","figuring","first","frustrating","functions","going","highlighting","hours","impetus","included","insane","instance","instantly","invested","issues","items","keyboard","kinda","leave","longer","looks","makes","manually","menus","missed","modules","named","nearly","options","parent","parsed","perfectly","piece","playground","point","position","posted","project","properly","public","putting","queries","ready","reasons","recreates","refactored","replications","requiring","revamped","right","running","saved","screencast","screenshot","screenshots","script","second","seconds","selected","selection","sense","sequences","shoot","shortcut","shortcuts","shown","significantly","special","spent","submenus","sundry","switch","takes","taking","target","thinking","through","trick","trouble","using","various","version","wasting","weekend","while","works","write","writing"]
},{
"title": "New Marked video: Finding the Answers",
"url": "/2020/03/10/new-marked-video-finding-the-answers/",
"tags": ["markdown","marked","video"],
"date": "Mar 10th, 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 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 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 s the next video: I 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","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 5th, 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 26th, 2020",
"ts": "1582725600",
"summary": "I got stressed out on Monday night and couldn t sleep. Anxiety s a real gut punch. But I turned it into work on something I 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 t sexy, and it 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 d built previously ). If you 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 t author, so I didn 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 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 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 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 saved as a JSON object within the page for access by the various",
"keywords": ["github","javascript","jquery","programming","anxiety","click","compass","custom","details","gallery","github","install","javascript","livereload","marked","monday","nifty","retrobatch","style","styles","takes","access","account","added","adding","addstyle","allows","animate","anyone","anyway","aspect","author","automatically","available","based","begin","block","browser","browsing","built","button","buttons","called","calls","cancel","changes","checks","cleaned","click","clone","collection","commit","comprised","containing","converted","couldn","create","created","creation","crops","curating","custom","description","directory","droplet","encoded","encodes","expanding","experience","extra","feature","figuring","filename","filenames","files","finished","first","folder","fonts","functions","gallery","generates","generator","globs","going","halfway","handler","having","hopes","images","includes","including","inclusion","install","instantly","interaction","interested","jquery","layout","liberties","links","machine","manual","matching","maybe","meaning","messy","metadata","method","minute","missing","mostly","needs","night","normalize","object","optimizes","parameters","parses","passed","passes","passing","payload","people","preferences","preview","previously","product","property","provides","punch","quick","ratio","reads","repos","requires","responsive","right","round","saved","scale","scales","scratch","screenshot","script","server","setup","several","share","simply","sleep","sloppily","spinner","static","stressed","string","style","styles","styling","support","theme","themes","through","thumbnail","thumbnails","title","tools","turned","typical","updated","uploader","users","using","values","various","wedged","where","while","whirl","whole","width","within","world","worry","writing"]
},{
"title": "Web Excursions for February 24, 2020",
"url": "/2020/02/24/web-excursions-for-february-24-2020/",
"tags": ["bookmarks"],
"date": "Feb 24th, 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 s switch to full-height left/right arrow keys, but it s good to remember that there have been way worse ideas SongShift I linked Playlistor last time, and Petr Ruzicka mentioned that there s an iOS app for converting Spotify and Apple Music playlists. It 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 s Official: Open-Plan Offices Are Now the Dumbest Management Fad of All Time I don t think anyone who 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 s access logs. How to ADHD This is my new favorite ADHD resource. It 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","history","ideas","informative","joined","linked","loudly","mentioned","office","partnership","perfectly","playlists","producthunt","ranging","relationships","reliably","remember","resource","right","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 18th, 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 ve gotten along without it, but I definitely miss my Sideshow jacket I d built for it. So I ve been on a quest to find new tools to enhance my music listening on macOS. There are two areas of control I 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 scrobbling 1 (Spotify scrobbles on its own, but Music doesn t) Works with both Music and Spotify Desktop artwork/info display Menu bar track/artist display System-wide keyboard shortcuts 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 s $20 to purchase, and also available from Setapp . If you re a Setapp subscriber it s an easy choice. If you have the disposable income to buy outright, it s a little tougher choice. Read on 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 ve run into some inconsistency, but overall it 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 ve found SoundSource to be a more ideal tool, and less intrusive to my system overall. SoundSource is Rogue Amoeba 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 settings for Spotify and Music, piping them through my Scarlett Solo and connected Rokit5 monitors with 10-band EQ while the",
"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","endnote","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"]
},{
"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 14th, 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 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 t written much about since then, but I continue to use it daily. It 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 s brimming with handy features. Given I ve been working on this as needed for 5 years now, it hasn 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 t think too much about how much time I 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 re already sold or at least enough to skip the spiel 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 s by a nerd, for nerds. I have, however, integrated it with LaunchBar and other systems over the years. It s flexible. The LaunchBar action is included below, if you 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 text file. (You may be aware of my love of plain text ) It does some automatic time",
"keywords": ["command","journaling","tracking","action","adding","alfred","allows","among","archive","automatic","automating","autotagging","basics","before","brett","brett'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 13th, 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 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","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 12th, 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 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 [ ] with the raw performance of GNU grep. I can attest to the usability being on par with and , and while I haven 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 t tried this yet, given I live with a yoga teacher and the investment seems extravagant, but I 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 re looking to turn musical ideas into actual notes on the page. The multi-track feature isn 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 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","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","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 11th, 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 s fairly obvious, but I hadn t thought of it until yesterday. I don 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 s the only way I 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 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 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 s site where he had already detailed and explained the process . It s super simple, but I recommend building the app yourself rather than downloading because there s a rigamarole to get around an unsigned app that takes just as long as the single-action Automator workflow takes.",
"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","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 6th, 2020",
"ts": "1581011280",
"summary": "In case you missed the big launch, there 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 ll find a lot of press out there that covers the major points quite well, so I won 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 t generally a popular choice among users, they ve done literally everything you could ask a company to do: Personally, I m happy to support the continued development of one of my crucial productivity apps, and I can t find any fault with Flexibits on this one they 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 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 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 s like Calend.ly for one-off appointments and it will save you a ton of back-and-forth scheduling emails. Fantastical CEO Michael Simmons demoed this for me while we were on a call and it was flawless exactly what I would have hoped for from a feature like this. Location-based Weather. Want to know what the weather is going to be like for an event, no matter where it is? It now shows up in your calendar view, with a forecast (AccuWeather s MinuteCast) based on the event location. This forecast also integrates with Fantastical s time to leave notifications, so you ll know what weather you re headed for when you",
"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","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","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","scheduled","scheduling","screen","second","selection","sentence","server","shows","significant","spiffy","sporting","starting","string","subscription","subscriptions","suggest","superior","support"]
},{
"title": "Web Excursions for January 24, 2020",
"url": "/2020/01/24/web-excursions-for-january-24-2020/",
"tags": ["bookmarks"],
"date": "Jan 24th, 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 Leonard Cohen - The Story of Thanks for the Dance A mini-doc detailing the story behind Leonard Cohen 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 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","license","melancholy","obscures","online","partnership","plate","player","posthumous","record","reliably","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 23rd, 2020",
"ts": "1579780800",
"summary": "Thanks to VirtualHostX Pro for sponsoring BrettTerpstra.com this week! I 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 s latest macOS software updates won t break your websites. But the best part about VirtualHostX? It s me, Tyler . I 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 m in your corner, happy to help, and reply lightning-fast. Just call, text, or email me and I 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","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 21st, 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 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 d go see if I could fix it up, which over the course of the following weeks 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 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 s any expectation on you to have any interest in or particular reaction to my musical tastes. I m also not going to curate the output of these scripts. I listen to some potentially embarrassing stuff. I 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 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 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 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 s offerings as well. For Apple Music, there s both the iTunes Search API , and an",
"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","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","mention","mentioned","metadata","meter","mobile","modified","mostly","music","musical","narrow","needed","neither","nifty","oauth","occasionally"]
},{
"title": "Sponsor: Timing — Automatic Time Tracking for Mac",
"url": "/2020/01/16/sponsor-timing-automatic-time-tracking-for-mac/",
"tags": ["sponsor"],
"date": "Jan 16th, 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 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","'nofollow'","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 14th, 2020",
"ts": "1579027920",
"summary": "Wow, compared to the barrage of updates in the last half of last year, it 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 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 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 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","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 13th, 2020",
"ts": "1578948420",
"summary": "I don t know if you 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 s accomplishing it on his own site. It all starts with the IndieWeb . I m going to list the steps I took for reference, but don t consider this any kind of tutorial. All of the information you need can be found in the Evan 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 m happy to have broader interactions than just local comments on the posts. If you re interested in any of the scripts I m using (crawler, CGI, jQuery), just let me know, I 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","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 9th, 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 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 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 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 8th, 2020",
"ts": "1578499800",
"summary": "We ve been exploring SearchLink lately in a series of posts. If you re following along, you 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 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 re writing. As a result, you have to trust that SearchLink found the right result otherwise you 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 Basics 2019/12/16 SearchLink: Next Steps 2019/12/23 SearchLink: Checking your work 2020/01/08 SearchLink -- browser history, bookmarks, and Pinboard 2023/01/16 SearchLink -- better searches, better results 2023/01/16 In a lot of cases you can tell by looking at a URL that you got the right one. If you re just running SearchLink on one link at a time, you can check your work as you go. If you 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 t remove them from the text, they won t show up in your output. That said, I do recommend removing them from your file once you re satisfied with the results. Reporting is especially handy when you 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 that and fixed it, so if you don t have the Service, simply download the",
"keywords": ["actions","macos","quick","services","writing","action","amazon","basics","brett's","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'","updated","above","accurate","action","added","adding","aforementioned","again","allow","animated","archive","assigned","available","avoid","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","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","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","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","personally","picture","pilotmoon","pinboard"]
},{
"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 6th, 2020",
"ts": "1578319200",
"summary": "It 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 re great at the surface level associations and development. I believe that the techniques I share can apply to anyone s brainstorming, the ADHD connection just helped clarify for me why the things I do (and the tools I use) work for me. I 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 t have to know what my top level groupings will be. I don 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 before I even have to decide what it really is I m brainstorming 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 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 s completely unrelated to whatever groupings have already materialized. That s actually one of my favorite things about this process, these outliers that constantly make me reassess what I 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 whole new one with this node? Does it change the way I ve categorized what s",
"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","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","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 2nd, 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 30th, 2019",
"ts": "1577714400",
"summary": "Looking back at last year s picks, almost every one of them is still in regular use. I 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 ve loved this year. It s an incomplete list of things that got a lot of use or remained top-of-mind all the way through December. I 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 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 ve been talking about this utility for searching and linking in Markdown files a bit lately, and I ll say it again: most useful tool I ve ever written. Gather Ok, this one was written in 2012 and hasn t really been updated since then, but it still works. It 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 ll repeat this one from last year because they ve added a bunch of new apps and, if you ve panned it in the past, it s worth looking at again. I use more than enough apps on Setapp to justify the",
"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 27th, 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 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 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 even MySpace wasn 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 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 it serves as a wonderful example of why semantic, standards-based web design eventually had to take root. I 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 ll probably turn the whole thing into a PDF for archiving. If the code were a bit more",
"keywords": ["adventure","dreamweaver","either","entries","facebook","georgia","google","great","mapquest","memories","minnesota","myspace","netscape","pocketmail","savannah","smartphones","tables","wesley","winona","wordpress","acoustic","adventure","adventures","animated","apprised","archived","archiving","assume","aughts","barely","based","between","brother","built","called","catalogued","cells","certain","compatible","consistent","containing","convert","couple","coupler","created","cutting","daily","decades","decided","dedicated","design","device","directly","doing","editorial","email","emails","enough","entries","entry","eventually","everyone","everything","example","family","fascinating","first","forget","format","fortunately","found","friends","grand","guarantee","happened","impressive","inline","journal","later","launched","layout","linking","location","looking","market","maybe","memories","metadata","minute","mobile","mother","notes","occasional","pagers","pages","paragraphs","parse","payphone","payphones","perhaps","perspective","phone","possible","prevalent","print","project","quarter","quickly","recall","recently","recording","regular","remembering","resist","scrapbooked","scrapbooking","search","seemed","semantic","serves","solution","sometimes","source","specific","standards","static","structured","stumbled","styles","surprisingly","table","technologies","thinking","today","travel","useful","version","wanted","where","whole","wonderful","years","younger"]
},{
"title": "SearchLink: Next Steps",
"url": "/2019/12/23/searchlink-next-steps/",
"tags": ["comments","markdown","search","searchlink","service"],
"date": "Dec 23rd, 2019",
"ts": "1577124000",
"summary": "More from "SearchLink Tips" SearchLink Basics 2019/12/16 SearchLink: Next Steps 2019/12/23 SearchLink: Checking your work 2020/01/08 SearchLink -- browser history, bookmarks, and Pinboard 2023/01/16 SearchLink -- better searches, better results 2023/01/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 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 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 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 re not a command line person, you ll want to do this from Finder: The configuration file is fully commented (lines beginning with ), explaining what each option does, so I won 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 s already there. A basic site search is just an abbreviation and a domain (no protocol, e.g. http:// ). If I have this in my configuration: then I can use as a search and it will run it as if it were a (default Google) search, but only return urls within the brettterpstra.com domain. That s the whole deal with custom site searches. The other type of custom search is substitutions. These are urls where",
"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 19th, 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 change the type face, font size, and other text formatting with PDFpen s Font Bar. Smile 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 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","myriad","precision","ready","remove","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 17th, 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 ve been using it ever since, pretty much daily, with a few revisions. I thought it was probably about time I shared the updates. There are probably other little changes I made along the way, but that 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 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","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 16th, 2019",
"ts": "1576528620",
"summary": "More from "SearchLink Tips" SearchLink Basics 2019/12/16 SearchLink: Next Steps 2019/12/23 SearchLink: Checking your work 2020/01/08 SearchLink -- browser history, bookmarks, and Pinboard 2023/01/16 SearchLink -- better searches, better results 2023/01/16 I say this pretty often, but I think that SearchLink is one of the most useful tools I ve ever created. Yes, even more useful than Marked 2 1 . 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 ve never heard of SearchLink (or maybe heard of but never tried), it s a tool for people who write in Markdown and use links. Whether you re blogging, writing podcast show notes, writing web-based documentation if you add links to your markdown text, SearchLink is for you. Normally, you 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 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 Services 2 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. The next level of power comes from bang searches. Using this basic naked syntax, you can precede any text with an exclamation point and a few letters to control how and where the search is run. For example, if you wanted to locate a product on Amazon, you would use , e.g.: As you ve seen, using",
"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","endnote","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"]
},{
"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 5th, 2019",
"ts": "1575554400",
"summary": "Thanks to MacUpdater for sponsoring BrettTerpstra.com again this week! I 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 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","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 4th, 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 s pretty impressive and I 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 t tested it myself as I m not currently subscribing to Disney+. Bookly A crowd-sourced library for your organization, in Slack. Like inter-library loans, but for your friends and coworkers 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 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","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 28th, 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 unless you 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","misleading","monitoring","networks","obligations","online","others","personal","personally","platform","prevents","privacy","protocol","provider","providers","ready","reality","reject","resist","resistance","reviews","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 27th, 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 re looking for a scriptable notes solution, this might be worth checking out. Triangle - Better Web Type If you can 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 t doing what you re looking for, check direvent out. Oh, and by the way, it 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 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","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 25th, 2019",
"ts": "1574703660",
"summary": "I think I ve wrapped up my conversion to Fish for the time being. I can honestly say that now that I m past the tinkering phase, I 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 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 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 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 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 s command. There s a bash folder with some of my more involved bash scripts that I ve been successfully running from Fish without issue. , , , etc. A smart shadow function that uses except when it 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 re just starting to play around with Fish, this should be a great way to see what s possible and get started with porting your own setup. If you re a long-time Fish user, you ll probably be able to tell me where all I went wrong (which I m totally open to), but maybe you ll find some inspiration, too? Check out the full collection at github.com/ttscoff/",
"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","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 22nd, 2019",
"ts": "1574440200",
"summary": "The reason I got excited about this is that I 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 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 re targeting the find clipboard, so the command is . So here s my solution (for now). It s not perfect as I can 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 t able to track down. That 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 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 20th, 2019",
"ts": "1574258400",
"summary": "I 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 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 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 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 ve been trying really trying 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 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 m just showing it off here. I 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","narrow","options","package","packaging","persistent","plugin","project","published","repository","requires","right","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 19th, 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 ve worked for years to solve this little quandary, and I ve found a key element in the solution: forgiveness. Forgiveness is something I ve gotten much better at in recent years. I ve never been one to hold grudges I don t have the memory to pull that off 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 s the idea that I don t know what this particular person is living with, what they re going through in their life, or what just happened to them the minute before. All I can do is believe that they re doing their best, and that puts me in a place of compassion. (It doesn t work quite as well when I interpret something to be intentionally malicious, but it s still better than interpreting everything as malicious.) You d think it would be easy enough to apply this same mantra to myself. I mean, of all people, I should know that I m doing my best. But I 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 s the only way I ll do better, but rationally I ve come to accept that it s not. It 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 s wrong with me, because seriously how hard is making a phone call? If I can forget about the phone call and all the uncertainty it entails, if I can just focus on dialing the number, all of the sudden I m better than I was when I",
"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","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","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 14th, 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 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. 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","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 12th, 2019",
"ts": "1573589880",
"summary": "Web excursions brought to you in partnership with MindMeister , the best collaborative mind mapping software out there. renameutils I 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 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 t. Clicker for Hulu I 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 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 s power. Now someone needs to make this for LaunchBar How to display the size of an app 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 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","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","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 11th, 2019",
"ts": "1573488000",
"summary": "Over the past few months I ve been playing with Fish , the Friendly Interactive SHell, and I ve posted a couple of times on the topic. I think I m sold on it now, and you ll probably be seeing a lot more Fish posts than Bash ones (though I ll try to offer Bash equivalents when possible). So I ve officially 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 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 t have to store a bunch of functions in memory with Fish. It can load functions temporarily when they 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 s easy to gather all your odds and ends. It s also really obvious where a function is sourced from, you just grep the folder for the command name although Fish 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 s really no alias concept in Fish, it 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 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 s how I did the highlighting on the path without any headache. The command is great. No more escape codes,",
"keywords": ["friendly","interactive","shell","shelll","'alias","'remove","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"]
},{
"title": "Hook 1.3",
"url": "/2019/11/06/hook-1-dot-3/",
"tags": ["hookmark","macos","productivity"],
"date": "Nov 6th, 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 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 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 $ . 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","information","keeping","keyboard","keystrokes","latest","leaving","links","little","mediated","mentioned","merchant","navigate","pertinent","price","principle","process","productivity","rapidly","readers","record","related","reorganized","requires","resources","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 23rd, 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 t worked on for a while and there s a Gulp file, a Rakefile, a node_modules folder, and various other cruft that means you 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 s for those situations, and other general sanity. Over the rest of this year I ve slowly modified and expanded the script as I ve wanted it to do things differently or better. I ve been hesitant to post the results because it really feels like something nobody else is going to need and it s entirely possible that I 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 s now called howzit. As in how z it do this? or how 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 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","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 17th, 2019",
"ts": "1571310000",
"summary": "Thanks to Pagico for sponsoring BrettTerpstra.com this week! Isn t there always too much to do? Don 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 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","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 15th, 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 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 s no list of available hooks nor (that I can find) any way to retrieve a list of emitted events in the shell. It s been trial and error for me thus far. Hopefully someone will correct me if I 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 s an extended correction to my last post, but it 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 11th, 2019",
"ts": "1570817340",
"summary": "Given that Apple has already switched the default shell in Catalina from Bash to Zsh, I ve been thinking I really need to expand from Bash. Don t get me wrong, I love Bash and I ve spent years molding it to my liking. The amount of time I 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 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 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 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 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 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 s basically the functionality of the complex system I",
"keywords": ["aliases","almost","apple","bashmarks","because","catalina","command","completions","converting","entry","finder","first","fisherman","friendly","function","impressions","interactive","journal","manager","ohmyfish","porting","prompt","random","shell","stdout","scripting","scripts","square","sublime","version","writing","accepts","access","across","added","adding","advanced","alias","aliases","allow","allows","amount","annoying","another","anywhere","argument","arguments","array","autocompletion","autojump","autoload","autosuggestion","available","awesome","background","backticks","based","basename","bashmarks","basic","because","becomes","between","bigger","bookmark","bookmarking","bottom","bracket","brackets","breeze","browser","building","builtin","called","changing","checks","circumvents","codes","color","colored","comfortable","command","commands","comments","comparisons","completely","completions","complex","concern","config","configuration","containing","contains","contents","convert","converted","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","ended","enough","environment","escape","everything","example","excellent","executing","expand","expanded","expansions","explored","exploring","expressions","extension","external","extra","extract","feature","features","files","finder","first","flags","flexible","folder","foreground","found","friendlier","function","functionality","functions","fuzzy","generated","gentleman","getting","github","global","going","grain","handled","handler","handles","hashbang","haven","highlighting","history","homebrew","imgsize","impressions","includes","including","indexes","inspection","integrate","integration","internal","intuitive","investment","items","itunes","journal","jumping","language","leave","liking","linking","listing","little","loaded","loading","local","lovingly"]
},{
"title": "Unify your team's voice with TextExpander",
"url": "/2019/10/10/unify-your-team-voice-with-textexpander/",
"tags": ["snippet","sponsor","textexpander"],
"date": "Oct 10th, 2019",
"ts": "1570712400",
"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com again this week! If you 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","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 9th, 2019",
"ts": "1570640460",
"summary": "As is always the case with David Sparks 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","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 30th, 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 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 s already talking about this game (to the extent that I had to try it), but it 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","securely","sharing","similar","slots","tables","talking","today","tutorial","worth"]
},{
"title": "nvUltra news, September",
"url": "/2019/09/25/nvultra-news-september/",
"tags": ["nvultra"],
"date": "Sep 25th, 2019",
"ts": "1569436140",
"summary": "Ok, another month, another nvUltra update. As I d warily predicted, my initial hopes for an August release slipped, and I m currently making more conservative predictions. I 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 m being cautious. We 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 s 2 part-time guys working with 1000+ users and a very active beta feedback forum. There s a lot of excitement, though, and it makes it a lot of fun to continue interacting with everyone. We re feature complete for 1.0, and now we re just working out bugs and making sure everything that 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 m also working to wrap up documentation on the extensive list of features packed into nvUltra s simple interface. I have an initial icon concept about 50% done, but it 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 t finalized a color scheme for this direction yet. Stay tuned. I 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","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","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 24th, 2019",
"ts": "1569338940",
"summary": "First off, I promise an nvUltra update this week. You deserve it. In the meantime I woke up at three this morning. As you may have come to expect, I 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 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 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 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 t added any features for variable mangling or anything, just straight up text replacements, but it should do the trick. It s not meant to be overly complex (er, complicated) at this point. Who knows what happens next time I 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 crash 1 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 t crash, and you ll have to do that, what, like once? Ever? So that s kind of a fix. At least it doesn t crash now. The other updates since my last post are stupid. I won t even tell you about them. There 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 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 credit it deserves. I ll just pat myself on the head. An illegal access exception when",
"keywords": ["batch","launcher","productivity","snippet","again","appdelegate","automator","bunch","bunches","daniel","first","jalkut","taskpaper","timing","tower","access","actions","added","adding","agonized","alert","automatic","awake","batch","because","before","between","bridge","callback","called","calling","change","changelog","changes","changing","complex","complicated","compliments","consistency","crash","credit","debugging","definitions","deserve","deserves","developed","directory","doesn","download","enjoy","enough","eventually","example","exception","expect","explanation","feature","features","files","folder","fsevents","giving","happens","haven","header","hours","hyphens","iterm","illegal","image","knows","latest","launcher","location","mangling","meant","meantime","morning","mostly","myself","nvultra","often","overly","point","pointless","project","projects","promise","realized","recent","repeat","replacements","repository","restart","reusable","reveal","saying","setting","shell","since","sleep","snippet","snippets","straight","stuff","stupid","subfolder","switch","tasks","templated","think","thought","through","tired","title","track","trick","trying","uncreative","updates","users","using","variable","variables","version","versions","wherein","within","workflow","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 19th, 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 re sure to find beautifully illustrated versions of your favorite project s mascot. All available as posters, coffee mugs, and t-shirts. Here 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","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 18th, 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 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 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","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 13th, 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 s been popular via Hacker News and StackOverflow posts, I hadn 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 d been doing point releases from 0.0.1 to 0.0.15, but I ve decided it s at a 1.0 place. So join me in welcoming mdless 1.0.0. Cheers. (It s actually 1.0.2 already, because bugs. You know how it is.) It s honestly not that huge a release, but it does breathe new life into the aging utility. 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 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 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 s still not perfect, but for getting a prettier view than when you want to peruse Markdown files in Terminal, it s pretty top notch. In my opinion, anyway. All of the documentation is updated, along with installation",
"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","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 12th, 2019",
"ts": "1568293200",
"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com again this week! I 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 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 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","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 11th, 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 m duly honored. I mention it especially because the conversation ended up being enlightening to me. I didn 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 ve never found it scary to talk about my mental health, as screwed up as it may be. It s easier to talk about it than hide it, so it s really the path of least resistance for me. But I 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 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 t been a listener until after the invite came, I ve been checking out the back catalog and will be a listener going forward. It 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","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 9th, 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 m a very happy MailMate user, but I 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 it doesn t appear to be user-extensible, so I 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","hundreds","impressed","integrated","intelligent","latest","light","macos","making","monthly","movies","overlays","partnership","party","personally","plugin","possible","ratings","requires","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 5th, 2019",
"ts": "1567699200",
"summary": "I 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 ve made to this site over the last couple of months. Mostly because I think they 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 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 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 it. I re-ordered items in the",
"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","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","transitioning"]
},{
"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 29th, 2019",
"ts": "1567090800",
"summary": "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 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 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 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 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 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 ve created a new directory and want to into it in the next command. Wouldn 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 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 extensions from filenames, or filenames from paths, so you can make really easy shortcuts in the same manner for repeating the argument in useful ways. For example, to expand the last filepath",
"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","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","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 26th, 2019",
"ts": "1566847560",
"summary": "I 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 m going to focus on one small part. I ve talked a bit about Bundles a couple of times before, so for now, let s talk about one of my favorite topics: tagging. First, as an introduction to MailMate , my favorite email client on the Mac, I ll refer to this paragraph that I love from MailMate 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 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 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 ll see two options for tags columns in the viewer, one that s just Tags (the full words) and one that 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 ll get to how I make those useful in a minute. If you use Gmail, you know that it doesn t use folders, but rather labels which serve as a form of tagging and modify the groups that messages are viewed in",
"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 16th, 2019",
"ts": "1565955240",
"summary": "I got up a bit too early this morning. I finished a sprint on a freelance project but wasn t ready to dig into my other big stuff yet. That stuff s for after 5am. Before 5am is Bunch time. As promised, I haven t written a blog post for every update, but you can find the full list of recent changes in the changelog . If you don t know what Bunch is, it 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 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 t like that. In Tower, for example, that command won t work, but typing will. So, clearly, that 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 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 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 s donationware and I sincerely thank everyone who 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","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 8th, 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 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 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","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 7th, 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 re sifting through user feedback deciding what s a valid feature request and what needs further clarification in our driving philosophy. I can 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 s the latest, with the caveat that there s always the possibility that certain features change or don t make it to final release. (A lot of other behavior changes have happened, but most people not currently testing wouldn t have known the original behavior to begin with, so on that you ll have to trust me when I say that it 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 when running in the menu bar you couldn 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 s out of your Dock again. Rather than going with a 3-pane layout to include folders, we 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 project with deeper subfolders for drafts, assets, etc., you can just open that project as its own window",
"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","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","running","search","selection","service","shipping","shortcut","sidebar","sifting","single","snippets","solid","solidified","solution","special","specific","specifically","stored","storing"]
},{
"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 1st, 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 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$/€) 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 31st, 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 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 s presentation on how to create a good presentation deck presented the day before my own talk that made me realize I don 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 s Woodstock to visit and lots of local shops to enjoy. (I love Ethereal Confections and would be severely disappointed if on any given trip to the area I didn t get to go.) To everyone I met I want to say that it really was great to meet you. I wasn 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 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.",
"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","honor","important","little","local","loved","meant","missing","nearby","night","notably","numbers","others","people","personal","pictures","plenty","podcasts","presentation","presentations","presented","realize","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 19th, 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 ve been happy with the results, including using Fathom for analytics. Since then, I 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 s enough to convince me that I m not risking your privacy by running their ads on my site. If you have any questions or concerns, I m happy to listen. At this point, though, I think that Carbon and BuySellAds are doing a commendable job in a world where more often than not 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","necessary","often","owners","personal","point","policies","policy","privacy","questions","removing","results","reviewing","risking","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 18th, 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 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 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 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","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 18th, 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 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 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 t provide enough detailed information. That s where Timing comes in. Similar to Apple s Screen Time, Timing automatically tracks the time you spend on your Mac. What 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 t stop when you ve stepped away from the computer. Unlike with Screen Time, you can manually add your time offline perfect for when you re on a client call or in a meeting. You 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 s custom, detailed reports! Ready to take advantage of all Timing has to offer? Read more on our blog post getting Screen Time 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 11th, 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 s a huge timesaver on my iOS devices. It s an honor to have Smile s continued support! Your time is too valuable and life is too short 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 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","often","phrasing","proposals","questions","readers","regularly","replies","reports","requests","retype","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 10th, 2019",
"ts": "1562783880",
"summary": "I saw a great response to my post about MacSparky s Keyboard Maestro Field Guide , and David was kind enough to provide some promo codes for a giveaway. If you haven 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 t easily run CouchDB on Dreamhost, so the whole thing is now backed by Firebase (no, I don t want to work with mySQL, actually). So this is the first public run of the new setup, and if there are complications I ll be immediately pulling this post and trying again after some fixes. But I think it 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","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 8th, 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 better 1 . For various reasons, I 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 asleep 2 . 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 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 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 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 displays by 10%. Make it",
"keywords": ["brightness","powermate","applescript","applescripts","aside","bettertouchtool","bluetooth","bunch","display","events","griffin","hacking","homebrew","indigo","keyboard","macbook","meanwhile","nicholas","powermate","preferences","riley","shuttle","system","thunderbolt","ultimate","using","while","xpress","ability","accessibility","accommodate","accustomed","actions","adjust","adjusting","allows","answer","appearance","argument","article","asleep","assigned","assume","attach","attached","automatically","automation","basic","because","believe","below","between","black","brighten","brightness","called","changes","comfortably","coming","command","computer","conditionals","configuring","continues","control","controls","conversation","cripple","curiosity","decimal","decrease","decrement","decrementing","desktop","developed","directly","disappearing","display","displays","executable","external","finds","float","forgot","found","frustration","functions","generally","gestures","going","grown","hacking","handle","handles","happened","happens","hardware","helpful","hopefully","hours","implementation","including","incorporate","increase","increment","incrementing","information","install","installed","integer","later","levels","library","light","lights","listing","maintained","messing","missing","modifier","modify","monitor","needed","negative","night","office","older","optionally","options","others","panel","partly","patterns","periods","pitch","principle","problem","problematic","project","proofing","pulled","query","reasons","recent","refuse","regularly","remote","replaced","representation","returned","satisfactory","screens","script","scripting","scripts","search","setting","setup","shenanigans","signals","simple","simultaneously","sleep","slider","solution","source","space","specific","specify","spinning","started","states","straight","strategy","switch","system","talking","target","technical","thought","tools","trackpad","trick","twice","unable","universal","unlike","updated","upgrade","users","using","usually","utilities","various","verbose","version","volume","waking","where","while","whole","wondering"]
},{
"title": "Emoji input on macOS",
"url": "/2019/07/04/emoji-input-on-macos/",
"tags": ["keyboard","macos","quicktip","search"],
"date": "Jul 4th, 2019",
"ts": "1562250240",
"summary": "Happy Independence Day to my US readers. I 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 m going to go ahead and write about something I m pretty sure everybody else already knew. 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 t make sense in my own habits. I 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 s default keyboard but more so with Gboard or some of the emoji-centric 3rd-party keyboards they were always at hand and almost as accessible as regular alphanumeric characters. But what about on my Mac? Now that I 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 t take keyboard focus, so you can click multiple emoji and keep typing. But because it doesn 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 s no perfect combination here, but there is a third option that I like slightly better: when it s in the popup mode (",
"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 3rd, 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 s a fun toy to start playing. Requires macOS Catalina and Xcode 11, so if you weren t already sure it was for devs 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 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","implementation","impossible","interface","learning","leaves","leaving","legacy","macos","mapping","match","overview","partnership","playing","polls","presenters","primary","productivity","products","quickly","references","repair","right","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 2nd, 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 ll go ahead and post it as 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 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 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 s not needed in the line that calls it. It will automatically stop any running task before starting the one you pass. When it s run without any arguments, as shown in the last line, it quits the current task and exits. Here s what it looks like. If you re interested in the actual AppleScript, just download below and open it in Automator. You ll see the variables named task, project, and Bunch present in the variables section of the Workflow. These must exist for Bunch to call it with the above parameters. (They also have to be empty for the",
"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","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","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 27th, 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 ve seen in years, making editing MultiMarkdown-style tables in your documents truly painless. I 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 s fast, it s fun to use, and it 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 t support this well. Text is a linear sequence of characters. You think in terms of a two-dimensional table. That 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 s so natural that it 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 and even more with TableFlip added to your tool chain. Be it dark mode or light mode, TableFlip s minimalistic design puts your content first. Its user interface emphasizes fast recognition of icons to improve your",
"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","mention","minimalistic","natural","needs","outweighs","painless","parts","people","prefer","preview","process","processing","prune","purchasing","quickly","rearrange","recognition","regular","right","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 26th, 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 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 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 s an extensive list , and 90% of these projects rely on Ruby, Python, or Perl to function. Even the ones that don 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 s an impediment to anyone who uses my projects that isn 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 t available by default, does that mean that Automator won 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 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 d ever get around to updating everything that uses bash scripting at its core. Don t forget, even Homebrew requires Ruby to install itself, so that 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 d be crippled without embedding their own runtime. Dropzone, for example, uses Ruby",
"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 20th, 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 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","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 19th, 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 most of them are in the menu bar, some are completely background tasks on my machine where it s easy to forget that they 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 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 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 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 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 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 ve been using more often than Dropzone 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 s there, elegantly making folder navigation a breeze. TextExpander I 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 t think I d use it because I m very keyboard-centric on my Mac. But using it made me realize I touch my trackpad more than I think, and PopClip immediately fit into my everyday",
"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","history","hotkey","hours","image","input","instantly","instinctively","integral","interaction","keeping","keyboard","keystrokes","kicking","language","licenses","lists","little","looking","macos","machine","makes","making","management","match","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","right","running"]
},{
"title": "Web Excursions for June 18, 2019",
"url": "/2019/06/18/web-excursions-for-june-18-2019/",
"tags": ["bookmarks","fonts"],
"date": "Jun 18th, 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 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 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 t have specific requirements and are just looking for a good font, it s a lot nicer to see a few at a time than pages of results Deprecating scripting I m tempted to write my own piece on Apple deprecating the scripting runtimes, but I find myself overly emotionally attached to the topic. I m sure my thoughts will come out over time, but Dr. Drang s post covers most of my points very well. MyHumans - Regain control of incoming iPhone calls This is what it 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 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 ll swipe 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","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","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 17th, 2019",
"ts": "1560776400",
"summary": "I ve had this happen with several apps some apps more than once and maybe you 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 re enabled, and the apps don t seem to detect any issue most of them notify you if they don 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 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 re seeing functions of macOS utilities inexplicably stop working, especially after an OS update, do that. It s an icky and impermanent solution. I find the shortcomings of the new security measures irritating. I m all for security. I also know what I m doing and what apps I install and run and having to give every app permission to open a folder in Finder with Apple Events is annoying. I 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 you 1 . No, I m not delusional enough to think that writing that on my blog would be more effective than filing a radar. And yes, I ll be filing a radar.",
"keywords": ["accessibility","security","accessibility","apple","checking","events","finder","launchbar","popclip","preferences","privacy","security","system","access","annoying","bottom","clipboard","delusional","detect","doing","dragging","effective","either","enabled","enough","especially","fails","features","filing","folder","functionality","functions","granted","happen","having","hitting","impermanent","inexplicably","install","irritating","kills","linking","macos","manually","maybe","measures","minus","nothing","override","permission","permissions","radar","registers","remove","responsibility","security","seeing","seems","selecting","several","shortcomings","shows","solution","somehow","states","symbol","system","thank","think","under","users","using","utilities","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 13th, 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 s available now. Using PDFpen, you can do all of the PDF editing tasks you 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","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 12th, 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 m posting about Bunch news anyway 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 More info",
"keywords": ["launcher","macos","action","bunch","bunches","changelog","donate","download","launchbar","monday","published","updated","action","anyway","cache","depending","environment","found","latest","posted","posting","preference","preferences","problems","quitting","rather","reduced","script","scripts","since","uploaded","version"]
},{
"title": "NiftyMenu, Mac menu madness",
"url": "/2019/06/12/niftymenu-mac-menu-madness/",
"tags": ["automation","macos","niftymenu"],
"date": "Jun 12th, 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 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 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 s hard to automate, and you know you 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 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 m talking about. If you dare, visit the GitHub repository to see the full depth of the madness. Yes, I 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","hours","images","items","itself","keystrokes","limited","little","loving","madness","makes","menus","morning","myself","nvultra","often","outdated","playground","practical","process","quick","repository","reservations","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 11th, 2019",
"ts": "1560258000",
"summary": "Ok, Bunch news two days in a row, despite having said I wouldn t keep doing this. But this one is special. I 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 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 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 10th, 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 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 bunch 1 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 s what 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 t likely to change all that often, so now it just caches them in the actions 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 t have access to the list of what 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 ll see the item that overrides that preference. Bonus: once you ve set that, you ll never suffer from that particular delay again. Every Bunch listed now has a child menu that offers whichever actions aren 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 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 default to Close. It s handy once you memorize the keys. Or maybe I m",
"keywords": ["launcher","macos","action","alfred","allow","bonus","bunch","bunches","caching","changelog","close","command","disturb","donate","download","everything","github","holding","javascript","launchbar","miller","published","stdin","saturday","shift","sorry","spacebar","thanks","toggle","updated","using","accept","access","action","actions","adding","again","anywhere","arguments","arrow","below","between","bunch","bunches","cache","caches","caching","change","changed","changes","checkmarks","child","close","codesigned","command","commands","completely","consistently","default","defaults","develops","directly","diverged","domain","enabled","execute","expanded","extension","feasible","files","folder","force","going","handler","handling","handy","happen","hitting","icons","improvement","improving","intended","keyboard","launched","launcher","likely","listed","little","longer","makes","maybe","meantime","memorize","method","methods","modifier","morning","nerdy","newlines","offer","offers","often","opening","opposite","options","outsiders","overrides","packed","particular","people","plist","preference","preferences","press","previously","project","ready","received","refresh","refreshes","retrieved","rewrote","right","running","script","search","seconds","selected","sense","separate","setting","settings","short","shows","specifically","speed","spent","stand","straight","string","strings","stuff","submenu","suffer","system","toggle","tomorrow","treats","typing","updated","using","version","wanted","whichever","wondering","world","worth","worthwhile"]
},{
"title": "nvUltra is nvUltra",
"url": "/2019/06/07/nvultra-is-nvultra/",
"tags": ["nvalt","nvultra"],
"date": "Jun 7th, 2019",
"ts": "1559944320",
"summary": "I just wanted to post a quick progress report on the upcoming nvALT successor, nvUltra . It s been a big week of bug fixes and planning! First, we decided on an official name of nvUltra. We re sticking with the working title. Here 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 s perfect. And it was as a name for an nvALT successor. I 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 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 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 s going to be a significantly better app. Things are moving quickly! That s the news for now. The mailing list is getting huge, so anyone joining now will likely only get a beta invite after it 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","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","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 6th, 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 m a happy customer and am thrilled to have Macpaw and Setapp supporting my work here. Seriously, if you haven 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 but obviously not their own. They aim to eliminate paying for each separate item and allow access for a single price. Setapp one of the first software products of its kind 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 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","model","moving","niche","paying","paywall","personal","photo","plans","platform","price","procedure","products","quality","regular","released","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 4th, 2019",
"ts": "1559653200",
"summary": "As promised, since I ve added the auto-updates to Bunch I ve laid off on posting with every release. But there s enough cool new stuff now that I figured I d share. I m still toying with the idea of making this a commercial application, but for now it remains donationware. So don t be shy. I need a Bunch of coffee. Or me on GitHub! Since the last post, I ve added a 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 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 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 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 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 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 handlers, it s a bit hard to know exactly where failure points are when executing",
"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","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","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 31st, 2019",
"ts": "1559332080",
"summary": "Just a reminder, Macstock 2019 is happening in just over a month. Which is soon, but there 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 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 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","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 30th, 2019",
"ts": "1559214000",
"summary": "Thanks to CleanMyMac X for sponsoring BrettTerpstra.com this week! I 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 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 s another cool thing rarely mentioned about CleanMyMac X it lets you peek underneath your macOS. It digs out all the files you 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 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 a quick method to free up space. Some apps don 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 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 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 s site. Crafted by independent Mac developer, MacPaw, CleanMyMac X passed Apple notarization as a",
"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","memory","mentioned","messenger","method","miners","minimizes","movies","needed","newest","notarization","obvious","often","opened","opening","passed","passes","point","projects","quick","random","rarely","replacement","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 29th, 2019",
"ts": "1559144760",
"summary": "After all these years of promising the successor to nvALT, it s amazing to be able to tell you that the nvUltra beta has begun. We (Fletcher Penney and myself) still don t have a final name, but the app is really solid and I m excited to be bringing people on board to put it through its paces. The first round we ve sent out is to a tiny group of private beta testers (only about 20 people). We hand-picked this round from people who 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 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 re still refining the UI, I 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 s a cool new feature in the nvALT and Notational Velocity style of note-taking apps, and one we think you 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","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 24th, 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 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 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 s more than 3x faster. Given that the price of the external SSD isn 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 t have a USB-C machine, so I m running all tests with a USB-C to USB-A cable attached directly to my MacBook Pro s USB3 ports. All of these tests are miserable when connected through any USB3 hub, including through my Thunderbolt display. So I m skipping any stats from those tests and just saying don t try connecting these through hubs 1 . I think the physical differences are irrelevant at this size, but I ll mention them anyway. The T5 comes in smaller than the Fast at 74x57mm to the Fast s 94x79mm. And the T5 is lighter, too, coming in at 51g to the Fast s 82g. So if you re looking for small, the T5 wins by a good margin. What I m really judging by is speed, so I ran some tests with BlackMagic Disk Speed Test . Both drives",
"keywords": ["drive","external","blackmagic","buffalo","capacity","compared","conclusions","duper","journaled","lacie","macbook","ministation","model","price","rugged","samsung","seagate","smart","speed","super","thunderbolt","write","xcode","abstract","adapter","almost","anyway","attached","available","backup","banging","barely","blank","booting","budget","bunch","cable","capacity","change","cheaper","claim","clone","comes","coming","compare","comparison","connected","connecting","converted","couldn","decent","decided","definitively","differences","directly","disks","display","drive","drives","either","enjoyed","entirely","erase","external","faster","fastest","finish","formatted","freshly","going","hours","including","install","internal","invest","investment","irrelevant","issues","judging","latest","lighter","limited","little","looking","lowest","machine","margin","mattered","maximum","meant","mention","minutes","miserable","models","named","newer","newfangled","older","options","originally","outputs","painful","partial","performance","physical","picked","ports","previously","price","problem","process","range","readers","reading","realized","replace","required","requirement","research","restore","restoring","results","reviews","running","saying","scores","sequential","setup","several","short","skipping","small","smaller","speak","speed","speeds","starts","stats","taken","testing","tests","think","through","times","usable","using","version","wanted","welcome","while","whole","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 23rd, 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 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 that 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 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 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 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","memos","minimal","monthly","mouse","notes","online","organise","planning","project","projects","pulls","quickly","rapidly","refined","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 22nd, 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 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 ve enjoyed a good number of Tony 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","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 21st, 2019",
"ts": "1558443600",
"summary": "David Sparks is at it again, releasing the latest in his video tutorial series: the Keyboard Maestro Field Guide . It 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 t feel like I 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 s a lot there to learn. There s an intro discount that brings the price to $24 right now. If you 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 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","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 20th, 2019",
"ts": "1558364400",
"summary": "I should probably eventually try to make money off of Bunch . But for now it s just what I m going to do to stretch my fingers (and brain) in the morning before I start my day s work on nvUltra (I 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 s hard to deny that at this point. This also means I ll stop overloading my blog with notes on every update. The project page will continue to be updated with the changelog, and I 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 ll add more as I need to. Next new feature is the ability to quit Bunches. There 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 s active. Clicking a checked Bunch will reverse it, quitting any apps it launched, ignoring lines for files, focus, quit, and AppleScript. There s also a submenu called Quit Apps in Bunch that contains a list of all of your Bunches so you can quit the apps for any Bunch, even if you haven t activated the Bunch previously. Finally, there 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 t quit and relaunch). Same with Dock Commands, they won t be doubled up. A tip for using Toggle/Single Bunch Mode: Don t include apps in your Bunch that you generally always have running anyway. That way when you quit apps in a Bunch, you won t have to relaunch them. In the same vein, I thought it would be nice to hide all open apps when launching a bunch. You can now include a",
"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","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","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 17th, 2019",
"ts": "1558098000",
"summary": "Yeah, this has become my morning habit. Make coffee, add something to Bunch. If you haven 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 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 t currently run Bunches if you call the URL while it s not running. It will launch, but you 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 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 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 t free",
"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","hotkey","insensitive","instantly","launch","launcher","links","little","location","making","member","method","morning","project","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 16th, 2019",
"ts": "1558012620",
"summary": "Apparently this is just what I do early in the mornings now. Bunch 1.0.4 is out . It s a pretty heavy code overhaul, switching most functions that were using AppleScript over to NSWorkspace, which you probably won 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 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 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 s not consistently working yet. (I don t want to just sit and poll for the app to finish launching, and I couldn t get a notification observer to function properly with appDidFinishLaunching ). So that s kind of a hit and miss feature that s not included in the docs yet. That 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 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","included","issues","launch","launching","little","mornings","needs","nicely","notification","observer","opened","overhaul","performance","project","properly","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 16th, 2019",
"ts": "1558008000",
"summary": "Thanks to Tower for sponsoring BrettTerpstra.com this week! I 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. 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","mistakes","modern","offers","possibilities","powerful","presents","productive","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 15th, 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 t have files after them (lines starting with a dash). And it won t work on web urls, so don t try using it to close your Facebook tab for you. Also, it uses AppleScript, so the app you re quitting has to respond to the AppleScript quit command, but that 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 s more! I added the following quickly after I 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 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 Apple Events, but I think I 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 m supposed to be working on something else, so please do report issues, but don t expect much in the way of timely support and/or further updates. (He says knowing that it s hard to resist the pull sometimes ) P.S. Fletcher, if you re reading this, don 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","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","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 15th, 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 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 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 ve been using suffixes more and more It s a personal preference, but I always use one or the other. If I 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 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 t checked out TE-Tools for a while, do it! Even if you 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 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 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","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 14th, 2019",
"ts": "1557846720",
"summary": "I made you a thing this morning. It s called Bunch and it 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 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 s pretty simple. I mean, I wrote it this morning in about an hour. See? It 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","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 13th, 2019",
"ts": "1557752400",
"summary": "I 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 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 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 s a download button that will take you directly to the source code. Check it out. As I work on nvUltra I 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 re currently viewing. I 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 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 s your thing). Someday I 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","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 10th, 2019",
"ts": "1557493200",
"summary": "If this note applies to you, you already know what a Hyper key is. If you don 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 re starting from scratch, you won t need the info below, I 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 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 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 s imported won t have the added benefit of making your Caps Lock an Escape key when pressed alone. If you want that part, you 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 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","implemented","imported","instructions","making","modifier","necessarily","offered","original","parsing","prefer","preferences","pressed","recent","remove","restore","right","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 9th, 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 8th, 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 s sparked an interest for me in the data collected, and I didn t realize until recently that it 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 ve been using this tip so long I d forgotten I even had a special setup for making it happen. If you 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","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 26th, 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 t want Screen Time on my Mac, I do want Shortcuts. I just hope that a Marzapan implementation of Shortcuts isn t going to replace Automator completely. Partly just because I doubt it will have a Run Shell Script action that s as useful Cursor Pro Hey, it s a modern Mouseposé! (If you don t remember Mouseposé, it 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 re into iOS Shortcuts, you ve probably already seen this, but if you re curious about the capabilities, this is a great site to explore. Stack Overflow Developer Survey 2019 The consistently relevant results of StackOverflow s yearly developer survey are out. If you re a dev (or even a casual observer) interested in the state of the tech job world, don 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 25th, 2019",
"ts": "1556197200",
"summary": "As you probably know, I m a long-time fan of Curio for brainstorming and project management. It 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","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 23rd, 2019",
"ts": "1556024400",
"summary": "A lot of you already have a Bluetooth keyboard you love. Whether it s a keyboard just for your iPad or one on your desktop that can serve both, they re pretty ubiquitous. But a significant portion of the nerd community has a favorite keyboard that isn 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 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 t the pinnacle of portability). I 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 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 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 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 m not sure why you d want to do that. While not a multi-device keyboard like Logitech 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 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 s Mouse Mode doesn t work, but that s irrelevant for iPad usage. There s even a crazy command mode. You can open any text editor and press and hold the adapter 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 t have a hyper key on iOS, I can at least remap the Caps Lock to an escape key. If you have a favorite mechanical (or otherwise non-Bluetooth) keyboard",
"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","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 22nd, 2019",
"ts": "1555941840",
"summary": "Let me start by saying that if you haven 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 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 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 s worth it to make sure you re using the Setapp version, both for you and the devs you love. To that end, I ve written a quick Terminal script (Ruby, no dependencies, but see the next section if you 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 re always running the Setapp version (be sure to back up your license codes, of course). Aside, if you 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. For those not already comfortable with Terminal, I 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 re reading this even though you don 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","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 19th, 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 ve added over time is the ability to use named shortcuts for Mac symbols Command, Shift, the Apple Menu, etc. and have them replaced with HTML entities at compile time. Since it took a bit to put together the whole list, I thought I 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 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 s written in Ruby, but it could easily be ported to Python, Node, or whatever your build system calls for. I m just putting it out there as an idea you can implement in whatever way is useful. Here s the snippet, I ll put some examples below. Now if you have a string like in your text and you run on it, you ll get back entitized text. which, in an HTML document displays as: P or or .",
"keywords": ["entities","symbols","among","apple","command","markdown","marked","python","shift","since","ability","added","anyone","below","brackets","build","calls","check","complex","concept","curly","displays","document","documents","double","easily","entities","entitized","entity","examples","faces","fairly","features","files","gives","handy","internal","liquid","matches","mustache","named","original","ported","preview","putting","replaced","return","script","share","shortcuts","similar","simple","snippet","string","style","surrounded","symbol","symbols","system","thought","together","useful","website","whatever","whole","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 16th, 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 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 s one issue to note. Bear writes its preview files out to a system temp folder that Marked can t permanently access from the sandboxed Mac App Store version, so users are constantly asked for permission. If you 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 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 t have metadata, you can have it automatically use the first H1 if one exists. It will still fall back to the source document 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 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 hashtags, . If these are at the beginning of a line,",
"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","machine","managed","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","resolved","safekeeping"]
},{
"title": "sizes: better disk usage reporting in Terminal",
"url": "/2019/04/15/sizes-better-disk-usage-reporting-in-terminal/",
"tags": ["scripting","terminal"],
"date": "Apr 15th, 2019",
"ts": "1555333200",
"summary": "I ve come up with a lot of ways to see what s taking up space in my directories from Terminal over the years. I ve finally built one that covers all the little niggles I ve had in the past. Since we 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 t be sorted by size. Also, reports in blocks (512B per segment), so if you re interested in accurate readings on files under 4kb, it won 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 s closer to what I want, but there s a whole bunch of irrelevant info as well as the fact that isn 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 s excellent for exploring disk usage. It s overkill for what I want, but worth checking out (and available via Homebrew, ). You have no reason to recall this, but I ve tried to solve this in the past. I wrote a bash function called that would do the trick . It 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 s quite fast. Large directories can take a while to calculate, but you d have the same delay using directly. The script starts with an listing (actually ) of the directory, using Ruby regex to extract the size (in bytes) and",
"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","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 11th, 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 10th, 2019",
"ts": "1554921180",
"summary": "You 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 s better than any modal notes app you ve used. Code name: nvUltra. We need to wrap up some UI/UX work before we release the first round of betas, so I m not ready to put an official ETA on it. But it 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 s shared, one on an encrypted disk that s private, one for work, one for home, one for every writing project. You 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 t have an official name yet. We have some good ideas, but nothing that s struck us both as that 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","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 4th, 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 ve said it enough that it sounds cliché to me, but HoudahSpot really is steroids for Spotlight on macOS. Folding Text Preview search results can focus on specific paragraphs that match Arranged Results group search results by date, size, kind, or application Recent Attributes and Values HoudahSpot remembers recently used search attributes and result columns, as well as things like file extensions, tags, and types Regular Expressions filter search results by name, path, parent folders, etc. Faster File Tagging 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 4th, 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 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","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 2nd, 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 m writing this up to explain. If you re unfamiliar with Open Graph , it 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 s shown. Facebook and Twitter each have their own specs for preferred image dimensions and minimum size. I won t go into all of those details right now, but if you re setting up a system for yourself you 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 s for. Sometimes, though, I don t have a certain size available, which is where the .htaccess trick will come in. Twitter doesn 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 t exist? The .htaccess has a cascade of fallbacks, so when the image specified is requested but doesn 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 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 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 of letting xxx@2x.jpg fall back to xxx.jpg if the @2x doesn t exist, so I can always",
"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","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 1st, 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 m working on a project, the build, deploy, and other development processes I set up become second nature. Once I ve moved to another project or 20, I ve learned it 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 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 ve been up to. The notes are saved in the root directory, and I add the notes to the project s git repo they can help me save time explaining things to any collaborators, but mostly they re just there so that when I dig the project up a year later, I don t have to dig through all of the config files to remember what 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 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 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 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 question, build? ). To do so, just add to your or wherever your aliases are stored. Now",
"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","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","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 29th, 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 s more complex on a large scale IT network, but you really should back up (ooh, check out this week s sponsor, Backblaze :)). Grav - A Modern Flat-File CMS I m still pretty deep in Jekyll as my blogging platform right now, but I 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 ve been seeing these terminal recordings in GitHub readmes and they 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 s shutting down, but Postlight has open sourced the parser and the API. I ve been playing with a local install and it makes a great markdownifier. (I ll probably be updating Marky with it soon so I can switch over to https ) 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","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","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 28th, 2019",
"ts": "1553778000",
"summary": "Thanks to Backblaze for sponsoring BrettTerpstra.com this week. I ve been a user of both the Backblaze cloud backup and their B2 storage service for years, and it s the best solution I ve found for complementing my local Time Machine and drive clone backups. I 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 27th, 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 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 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 s not for everyone. It 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 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 re seeing. Holding something in the palm of your hand versus gripping a stick seems like a small difference, but it 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 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 s so fast. It s also fully waterproof. Not that I 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 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 ve charged it once in 6 months now. Granted, 15 minutes of use once a week shouldn t kill a battery too fast, but I m still impressed. Beats my last pair of cordless clippers ten-fold. The Shortcut comes with 9 attachable combs for setting the length. My beard trimmer",
"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","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 26th, 2019",
"ts": "1553605200",
"summary": "Hey, guess what? I m speaking at Macstock 2019 (and yes, see the end of the post for my special discount code!). It 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 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 ll really love doing. I haven t finalized all the subtopics of this year s talk yet, but the subject is going to be automating and improving all kinds of writing on the Mac (and iOS). It s going to be fun. I even happen to know that among the many folks I m looking forward to seeing 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 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 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","merrier","midwest","parts","passes","pitched","podcasting","presentation","price","regular","replacement","right","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 22nd, 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 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 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 re looking for a dedicated editor for web development, check this out. It 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 21st, 2019",
"ts": "1553166000",
"summary": "Thanks to MeisterTask for sponsoring BrettTerpstra.com this week. I ve been using MeisterTask extensively including integration with Slack and GitHub for collaborative projects for quite a while now. I m happy to offer my endorsement! MeisterTask is a Kanban-based task manager that 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 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 s operating system, and the app version they re using. With MeisterTask, all these things can be defined as custom fields, which are automatically added to the task 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 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","moved","newsletter","offer","operating","pieces","platform","popular","powerful","pricing","productivity","project","projects","quick","quickly","readily","ready","recurring","remote","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 19th, 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 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 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 ll tell you what, you don t even have to use the submission form in this case (though you re still welcome to, and absolutely should if you 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","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 18th, 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 dinosaur 1 . Perhaps the cream has risen to the top and most people are settling on the leaders of the pack. Maybe there just isn 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 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 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 t personally make any money off it Thanks in advance, and I m looking forward to seeing what you ve got! P.S. please do use the submission form and don t just name apps in the comments or on Twitter 2 . I don t have the bandwidth to track down the details on every editor myself. Avoiding a Revelation 12:4 reference here I already know this will be commonly disregarded/ignored, but I had to try.",
"keywords": ["editors","apple","avoiding","check","daedalus","maybe","notes","perhaps","revelation","thanks","trunk","twitter","ulysses","writing","applications","available","bandwidth","chart","comments","commonly","comparison","cream","crowd","definitely","details","different","dinosaur","disregarded","editor","editors","ensured","favorite","figured","forms","going","itexteditors","ignored","leaders","longer","looking","market","money","morphed","myself","others","people","personally","quits","resource","risen","seeing","settling","submission","surprised","third","track","weeded","weekend","while"]
},{
"title": "TextExpander's new Visual Editor",
"url": "/2019/03/14/textexpanders-new-visual-editor/",
"tags": ["editor","snippet","sponsor","textexpander"],
"date": "Mar 14th, 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 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","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 12th, 2019",
"ts": "1552411620",
"summary": "I 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 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","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 7th, 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 m sure you ve heard of DuckDuckGo around the web (and I ve been mentioning them for years ). If you don t already have the scoop, it 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 s start with the basics. To understand why you should be using a search engine like DuckDuckGo, read about the Filter Bubble and DuckDuckGo 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 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 t monetize its users data, so it 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 s, so if you re familiar with that you won 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 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 of a search, those results will show up first. These include images, videos, news,",
"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","highlight","highlighted","homepage","identification","identifier","image","images","including","increase","increasingly","individual","information","input","internal","intuitive"]
},{
"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 5th, 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 t cost my users anything. I don 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 as pointed out to me by a reader (thanks Jean) you re not supposed to do that . But there is a standard disclosure provided by Amazon that I ll be including on this site from now on. Here s the fun part of the post (and from here on out it 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 ll cover briefly. If you want to implement something like this on a Jekyll site and run into any issues with my explanation, I d be happy to offer more guidance if you want to contact me 1 . I imagine it would be easy enough on other sites, and I 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 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 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 ll need to change those to your own tag and storefront, optionally removing the storefront match entirely if you don 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 ll show a few examples at the end). In , I have this (again, you 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 contains a match for any part of the regex, amazon gets set to . Then I can just use a Liquid",
"keywords": ["automation","aaron","adding","affiliate","amazon","between","detecting","examples","excursions","irelan","jekyll","links","liquid","template","whenever","wordpress","action","added","affiliate","aforementioned","again","amazon","amount","apply","article","automatically","because","beginning","bloggers","briefly","bunch","capture","captures","certain","change","checklist","classes","clicking","conditional","conditionally","conditions","contact","contains","content","context","cover","created","custom","defined","different","disclaim","disclaimer","disclosure","doesn","doing","elsewhere","enough","entirely","example","examples","explanation","expression","extra","filter","filters","first","fixed","found","guidance","hacking","happen","happy","having","headers","helps","icons","imagine","included","includes","including","index","issues","likely","linked","links","markup","match","matches","mention","nominal","offer","often","optionally","pages","paragraph","parameters","passes","patterns","people","personal","plugin","plugins","podcasting","point","pointed","pointing","posts","product","program","query","reader","referral","regex","regular","remembering","removing","return","right","saved","series","setup","share","shortened","similar","simply","sites","skipping","slightly","snippet","specific","specifically","standard","steps","storefront","styles","succinct","support","supposed","takes","talked","taste","template","thanks","through","title","trigger","turns","users","variable","various","versions","video","whenever","where","whole","working","worth"]
},{
"title": "Your security and privacy: next steps",
"url": "/2019/03/01/your-security-and-privacy-next-steps/",
"tags": ["comments","privacy"],
"date": "Mar 1st, 2019",
"ts": "1551467100",
"summary": "As I mentioned previously, I 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 ve been using, Disqus, is actually pretty bad for privacy and tracking. Hilton Lipschitz wrote about this back in 2018 , and I m just slow to catch up, apparently. Since most people reply to me on Twitter anyway, I don t have such lively discussions on the blog that I m willing to make a tradeoff on this. After a little searching, I found RemarkBox , a comment system that doesn 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 ll be testing it out for a while. One feature of RemarkBox is that you can comment without logging in. You 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 m also removing Carbon ads from the site. There s not a high enough click-through rate to justify the audience data collection they re doing. I ll rely only on sponsors and reader support to keep this site running. And some affiliate links, sans data collection, which I 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 :) 1 . I try to never use emoticons on my blog they always feel like a cheap way to do something I could more effectively do in prose but this time it just seemed appropriate. I do feel dirty, though.",
"keywords": ["carbon","cookies","disqus","tracking","carbon","disqus","facebook","google","hilton","lipschitz","remarkbox","since","twitter","abuse","address","advertising","affiliate","anyway","apparently","audience","below","built","catch","change","cheap","click","clicking","collection","comment","comments","developer","dirty","discussions","display","doesn","doing","effectively","email","emoticons","enough","feature","found","functionality","information","justify","links","little","lively","logging","maclm","mentioned","necessary","party","people","pointed","possibly","prevention","previously","privacy","private","privately","prose","reader","removing","reply","respectful","running","searching","seemed","services","shortly","sponsors","store","support","system","telling","testing","thanks","think","third","through","track","tracking","tradeoff","username","using","verify","while","willing","working","writing","wrote"]
},{
"title": "Marked 2.5.31",
"url": "/2019/02/27/marked-2-dot-5-31/",
"tags": ["marked"],
"date": "Feb 27th, 2019",
"ts": "1551286860",
"summary": "Marked 2.5.31 is available via automatic update, the Mac App Store, and Setapp. It 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","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 26th, 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 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 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 ve been bringing up lately. Laziness Does Not Exist I wish I 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 s Top Picks on Amazon If you re looking for gifts or just want to splurge on yourself, I ve compiled an Amazon storefront filled with 70 Top Picks from Systematic (returning from hiatus shortly, if you were wondering ). 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","hiatus","internet","looking","mental","moral","needed","needing","needs","often","partnership","pointed","privacy","procrastination","recently","reliably","replacement","returning","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 21st, 2019",
"ts": "1550771520",
"summary": "I ve made a few changes to my sites to be more in line with my own thoughts on privacy and security. When I m using the internet, I use ad blockers, a VPN, and secure DNS on all of my devices, yet I ve still been running websites that collect unnecessary data for Google and which don t provide standard encryption. That 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 s site because that one initiates commercial transactions. I 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 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 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 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 ve also added TOS and Privacy statements to Marked2App.com. Thanks to George Browning from Zengobi for assistance with that. I 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 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 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 ll get it there, and it ll be nice to avoid all of the insecure request issues that pop up when using the Marky API and bookmarklets on secure pages. (For those",
"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","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","unnecessary"]
},{
"title": "Web Excursions: DIY Photo Edition",
"url": "/2019/02/19/web-excursions-diy-photo-edition/",
"tags": ["bookmarks"],
"date": "Feb 19th, 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 ve been building out my video lighting setup lately. In addition to purchasing a few items, I ve been researching DIY solutions to save (a significant amount of) money. Here are some of my favorite solutions that I 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 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 s so cheap it 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 t pulled it off yet, but the results look amazing. Adjustable brightness and temperature, diffusion, and 180 coverage. DIY Bounce Board Interview Lighting There are a gazillion different tutorials on DIY bounce boards, but it s all the same concept. A white board and a foil board. It s not rocket science, but it 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","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 14th, 2019",
"ts": "1550149200",
"summary": "Happy Valentine 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 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 13th, 2019",
"ts": "1550082660",
"summary": "I 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 ve had the opportunity to build an audience that 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 ve worked hard for that. Even when my readers can t see it, I blog with a code of ethics that I internalized early on. I don 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 m open and honest, often vulnerable, and am generally rewarded for it. It 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 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 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 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 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 s presented as a personal attack. I can handle someone who disagrees, no matter how vociferously they feel the need to state it. There 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 in an irate and self-righteous tone of writing a paid advertisement for an app I was reviewing. If you read my posts here, you know that I don t write negative reviews. If I don t like something, I generally ignore it, preferring to focus my writing energy on things I think are worthwhile. And if I love something, I gush about it. But no money changes hands without being clearly",
"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 12th, 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 t say scattered, just not thematic. Ok, a little scattered 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 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 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 8th, 2019",
"ts": "1549654560",
"summary": "I 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 re working on from any file in that project. I wrote more about it over at Lifehacker , so I 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","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 6th, 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 s worth grabbing and getting into. I m pretty sure that if you re one of the people it s designed for, you 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 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 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 ll need to match for Facebook open graph images, etc. Once I ve finished designing in the template, I output a single JPEG or PNG file and run it through my OpenGraph Retrobatch sequence: I won t share the template and Retrobatch file here as it s pretty specific to my needs, but I 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 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","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 5th, 2019",
"ts": "1549390260",
"summary": "Since that one time that I wrote a review of the Ultimate Hacking Keyboard for you nerds , I ve only come to love my UHK more. I 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 t previously appreciated, it s turned me on to all kinds of mechanical keyboards and related pursuits I just couldn 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 d picked up from Massdrop for my Ergodox keyboard. So I swapped those in. I had a set of red keys for I don 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 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 t give me full coverage. Because I 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 m sure you ll see pictures of those on Twitter or Instagram The only keys I m having trouble working with are the Space/Mod",
"keywords": ["custom","keyboard","keycaps","pimoroni","anyway","arduino","backspace","because","bettertouchtool","control","ergodox","hacking","hyper","instagram","keyboard","keyboards","keybow","massdrop","mechanicalkeyboards","pimoroni","raspberry","return","shift","since","space","turns","twitter","ultimate","unfortunately","accommodated","actions","allow","alternate","among","angle","anomalies","another","apparently","appreciated","arrow","artwork","aside","assign","awaiting","awesome","beast","before","began","behold","black","blank","bottom","carbon","chain","change","charge","chart","check","codes","color","colors","columns","combining","comment","company","config","couldn","coverage","covered","custom","customize","customized","customizing","cycling","decided","discovered","double","eagerly","easiest","elsewhere","enough","entered","everything","extra","files","first","folks","found","function","functions","genre","going","great","happy","hardcore","having","highly","journey","keyboard","keyboards","keycap","keycaps","kinds","launches","layout","leads","level","light","little","making","manually","maybe","mechanical","messed","micro","modifier","modifiers","multiple","music","needed","needs","nerds","nerdy","offer","officially","options","ordered","orders","original","overly","paragraph","performs","picked","picker","pictures","pixel","plastic","point","press","previously","printed","problems","program","project","purple","pursuits","recommend","referral","related","remember","replaced","representing","response","right","rocket","running","screwdriver","second","sending","sequence","sequences","service","shift","shipment","shortcuts","single","solderless","spudger","standard","stuff","swapped","symbol","system","tapping","through","together","track","translucent","tricks","trigger","triggers","trouble","turned","unique","unreadable","unused","using","vendors","versions","watch","weren","whatever","where","whole","width","widths","willingness","working","wrote"]
},{
"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 4th, 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 ve never started working on, probably never will, and that doesn 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 m not a project manager by any stretch of the imagination. I do have a working system for brainstorming, though, and I m happy to share it with you. What follows isn t a professional study on brainstorming, it s simply the method that has arisen from a couple decades of doing this. It 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 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 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 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 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 second most-used mapping tool. It s a web app with an iOS companion. It s",
"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","mention","method","modes","multi","myself","navigation","needs","nodes","notes","obsolete","obvious","offers","often","optional","options","organizing","origin","original","ostensibly","outline","overarching","parts","people","philosophical"]
},{
"title": "Web Excursions for January 30, 2019",
"url": "/2019/01/30/web-excursions-for-january-30-2019/",
"tags": ["bookmarks"],
"date": "Jan 30th, 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 /min), but well-reviewed and very solid in my testing. There s also an iOS app for recording meetings and lectures and getting timestamped transcripts within 10 minutes. Reader View Basically a clone of Safari 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 s design isn 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 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 re probably closely related. WeCroak Memento Mori. This iOS app sends you notifications reminding you that eventually you 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 29th, 2019",
"ts": "1548783540",
"summary": "While Firefox has made very impressive strides, I still use Chrome as my primary browser. It s due in no small part to the Workona extension, but that s beside the point of this post. I wanted to talk about one of my favorite little productivity tips for Chrome that doesn 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 s a step-by-step for adding a time-saving search. As an example, I 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 d like to get the results from and running a search (any search). Copy the URL that 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 ll notice that Chrome has already saved a lot of searches you 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 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.” 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 search my site using a DuckDuckGo site-specific search (in this case with a",
"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 22nd, 2019",
"ts": "1548171060",
"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. We ll call this the A edition. It wasn 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 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 re familiar with Hammerspoon, think of this as a polished GUI alternative with all the built-in tools you d need to hack elegantly (in JavaScript instead of Lua). I m having a few issues with responsiveness in the demo, but I 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 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","importing","intentional","issues","jokes","letter","library","login","macos","makes","manager","moved","nothing","partnership","polished","possibilities","reliably","responsiveness","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 16th, 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 ve been holding off posting about it until the MAS review finished, and I 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 ve also added a URL handler method for defaults . This allows the user to create urls that will toggle preferences. It 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 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 s fixed. Finally. If you work with Markdown and haven t picked up Marked 2 yet, now s a great time. I mean, you re late to the party, but we 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 version (Marked 2- Check for Updates). And don t forget,",
"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 15th, 2019",
"ts": "1547564100",
"summary": "I 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 m looking to satisfy my own curiosity, I 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 t just my favorite app to work on these days, it s my favorite tool to use when I m writing Markdown of any kind. But you probably knew that. SearchLink SearchLink is my favorite Service. It makes creating web links while you re writing as simple as hitting a keyboard shortcut. No jumping to the browser, searching, copying, and jumping back. I seriously wouldn t want to write without it. nvALT You probably know this one. While I struggle to get a replacement off the ground, I ve kept nvALT running on the latest operating systems (and will for the foreseeable future). I don t know where I 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 m using it (and SearchLink, Marked, and nvALT) right now as I write this. Marky Marky the Markdownifier isn t perfect. There s a lot I 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 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 tabs, this collection proves useful to me every time I write, even in Markdown-specific apps with",
"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","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","using"]
},{
"title": "Web Excursions for January 14, 2019",
"url": "/2019/01/14/web-excursions-for-january-14-2019/",
"tags": ["bookmarks","tools"],
"date": "Jan 14th, 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 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 re interested in exploring and building a presence on Blockstack, the decentralized internet, here 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 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","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 10th, 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 3rd, 2019",
"ts": "1546534200",
"summary": "Welcome to another year of my best of lists. I 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 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 CleanMyMac 1 remains my favorite maintenance app for macOS. This year 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 m going to save a little time and just send you there. For $10/month (with family and team plans available), there s just too much good stuff on Setapp to ignore it. Here s an incomplete list of the apps on Setapp that I use regularly: Focos A powerful camera app. It hasn t completely replaced the default camera app for me, but when I want more control, it 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 re looking for an addictive game with excellent design and gameplay, and one you can pick up any time, this is it. There s a fair chance it will ruin your life. TapMeasure Apple 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 many missed medication doses for me. Gives me reminders on",
"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 2nd, 2019",
"ts": "1546460040",
"summary": "It 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 s all fireworks and sunrises. This one will have to do. Welcome to 2019. Since I m not doing a great job of blogging over the last month, I thought I 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 s going on in my brain before getting to other topics. I ve been dealing with mental health issues more than usual lately, mostly surrounding my ADHD. The meds don t seem to be working for me anymore, but I m not convinced my focus issue isn 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 t get the same treatment. Depressing thoughts, either way, and the fear of the outcome has kept me from making the phone calls. I m really bad at making phone calls to begin with. Some mental block that makes it really hard to pick up the phone. I m trying to convince myself that even if I lose my meds, they haven t been effective lately anyway. But I know very well from all-too-recent experiences that they re far better than nothing. I 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 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 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 m not doing. Systematic has been on an unannounced hiatus for a while now. I ll admit I got a little burnt out, and I ve been having trouble nailing down sponsors despite a decent",
"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","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","scheduling","screen","season","shade"]
},{
"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 13th, 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 6th, 2018",
"ts": "1544110140",
"summary": "Web excursions brought to you in partnership with MindMeister , the best collaborative mind mapping software out there. Wes Bos I d just like to point to Wes Bos and his awesome video tutorials. I 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 s geared toward open source projects, but these are basic principles that all software releases should incorporate. As a side note, I think I ve done a great job with Marked s release notes . Some (most) of my other projects, not so much. Writing Workflows An in-depth look at developing writing workflows. I 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 t see this as a help you pronounce tool as a potential fix for Siri s ability to recognize and pronounce names in everyday use. I m quite certain I m not the only one who s had to adopt bizarre phonetic pronunciations of friend s names to get Siri to comply, so here 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","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 4th, 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 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 but you solve problems every day, and that takes creativity. So what do you do when you need to be creative but can t find the spark? It s the equivalent of staring at a blank sheet of paper, and anybody who 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 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 t have the minute before. When there s pressure to do it, though, your conscious mind often shuts down. That s ok, though, because what we commonly call creativity actually starts in the subconscious. It s always working on the problem, even when you 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 s. Don t think about the problem, your subconscious mind will take care of that. Just absorb as many ideas as you can, whether it 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 something for the ideas to really start evolving. Surfing design blogs and sifting through",
"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","helpful","hiding","hindrance","hours","house","ideas","included","initial","inspired","intelligent","interesting","isolation","knows","lakefront","letting","lives","longer","looking","looming","magazine","minute","mistake","movie","myself","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","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","while","worked","working"]
},{
"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 15th, 2018",
"ts": "1542291960",
"summary": "I ve always used dark color schemes for coding. I never use dark themes for writing, and I m not a fan of Dark Mode in Mojave, but for some reason I ve always gravitated to light-on-dark for coding. I decided to try a change, and I ve been quite happy with the results. I m still using Sublime Text . As much as I dig many things about VSCode , I haven t been able to dedicate myself to it and leave behind the comfortable environment I 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 t use anymore. Lack of necessity is the only reason I haven 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 t added it to Package Control, but you can just copy the tmTheme file into and open the Sublime Text- Preferences- Color Scheme menu to use it. I 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 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","highlight","highlighted","ideas","involved","javascript","leave","light","loved","moons","myself","names","necessity","offers","original","point","preferred","property","regular","requests","results","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 8th, 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 7th, 2018",
"ts": "1541613720",
"summary": "Here s a handy trick I use at the command line to quickly find filenames matching simple wildcard patterns in nested folders. It s called because that 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 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 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","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 6th, 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 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 s not only the most convenient tab manager, it 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 find A handy (and simpler) alternative to find 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 5th, 2018",
"ts": "1541422800",
"summary": "It s No-Shave November and National Novel Writing Month . I figured as long as we 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 s hot! Even if you re not joining me in the Marked sale, do check out No-Shave November and help support cancer awareness and research. Whether you re shaving or not, if you re writing there s good cause to get into Markdown. Here s the number one reason: it s just text. You don t have to learn a darn thing. If you 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 t need those things anyway. Marked can show you beautifully formatted versions of what you 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 re definitely not using a typewriter, so there s zero chance for males of catching that beard you 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 document as Fountain, even without a Fountain extension In-document search improvements",
"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 4th, 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 s been updated a few times over the years, but recent changes to Apple s handling of Safari extensions has discouraged me from further updates. I didn 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 s a lot of extra effort and it s a pretty simple extension for all that work. So, what I m proposing is moving the functionality outside of Safari. There 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 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 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","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 1st, 2018",
"ts": "1541083200",
"summary": "Web excursions brought to you in partnership with MindMeister , the best collaborative mind mapping software out there. Exposing China 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 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 ve been feeling guilty about how much of my privacy I think I 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 25th, 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","'nofollow'","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 22nd, 2018",
"ts": "1540213200",
"summary": "I m releasing a minor update to PopMaker , my little tool for creating custom PopClip extensions. I hadn 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 More info",
"keywords": ["pilot","productivity","utilities","changelog","donate","download","happy","popclip","popclipping","popmaker","published","updated","broken","creating","custom","customizable","error","extensions","feature","fixing","generating","handling","layout","little","minor","mostly","realized","releasing","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 18th, 2018",
"ts": "1539879120",
"summary": "I 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 s preferences. This tool is great if you re on online writer who wants to see how their work will appear on the destination blog or publication. It s also great if you like to Markdownify articles and be able to read them later with their original look. (What it s not great for is stealing other people s work and using it to publish your own. Let s not do that.) (If you already have StyleStealer installed, it 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 ve tested.) Note that the bookmarklet is designed for desktop use, because it uses Marked 2 s url handler it won 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 The style will appear in Marked 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 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 live to show you whether it worked or not! As a technical note, the bookmarklet makes use of Marked s new URL handler method , . With this method you can add a style from a url-encoded string or from a file on disk. To add an encoded string, use: (If no parameter is provided with , the filename will be used.) This url method will make it easier to share new styles, and eventually (hopefully) for me to build a style-sharing site for people to share their favorites. For now, if you have a great style you want to share, feel free",
"keywords": ["cascading","custom","marked","sheets","style","address","bookmark","change","chrome","click","congratulations","custom","enter","firefox","hovering","installation","markdownify","marked","preferences","right","safari","style","stylestealer","usage","using","accurate","across","adding","address","again","appear","appears","article","articles","because","below","bookmark","bookmarklet","bookmarks","browser","browsers","build","button","called","choose","click","closest","contact","container","copied","cruft","defaults","designed","desktop","destination","directly","directory","disappear","duplicate","easier","elements","encoded","enters","entire","eventually","failed","favorites","field","filename","first","getting","great","handler","holds","hopefully","inspection","installed","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","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 15th, 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 s Sesame Credit system. If you re not already familiar with what 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 s at least one in here you didn t know 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","iphone","icons","inside","macos","makes","monitor","notification","notifications","offers","overview","partnership","photos","presentation","process","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 11th, 2018",
"ts": "1539255600",
"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! Summon these snippets in any app on Mac, Windows, iPhone, and iPad using an abbreviation, or search for them using a hotkey while you 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:",
"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 9th, 2018",
"ts": "1539103980",
"summary": "As you may have seen in the past, I m a fan of sleep headphones. Headphones specifically designed for wearing in bed, usually with flat speakers and soft bands. In the past I ve always come back to SleepPhones , but the last pair I bought (the Bluetooth ones) broke quickly. So my search began again, and it 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 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 t swap out either. Then I found a generic set that checked all the boxes for me. It 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 re thick enough to completely block light, but not enough to shift my neck position against a feather pillow. They 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 re well padded and I ve had zero earaches since I started using them a couple weeks ago. The control placement is decent. They re located on your cheek when wearing them, and not super easy to use blind (i.e. wearing the sleep mask). I don t push a lot of buttons on any sleep headphones, though, and it hasn 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 ve tried thus far, and the battery can last for a week at a time with nightly use. I m currently working my way through the audio version of Artemis . It 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 m ready to actually turn on the sleep timer. All in all, I ve put about 13 hours of comfortable listening on these thus far, with no complaints about sound quality. If",
"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","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 26th, 2018",
"ts": "1537975980",
"summary": "If you ve upgraded to Mojave, you 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 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 s on, on if it 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 m assuming normal citizens won 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","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 21st, 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 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 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","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 20th, 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 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 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 19th, 2018",
"ts": "1537381800",
"summary": "I don t claim to be good at meditation, but I ve come to understand the benefits of it, especially for someone with ADHD. I m also probably bad enough at it that I wouldn 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 ve been exposed to is letting thoughts go. Letting them exist, acknowledging them, and then letting them pass. I ve always viewed it as a front to back process, and taken that literally. My conscious thoughts exist in my frontal lobes, and I 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 s what. The front of my brain is always awash with thoughts. A constant buzzing. It s probably common to more than just ADHD sufferers, but it s something I ve accepted I 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 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 s generally worked, and this little exercise had the same effect, but with a mindfully awake result. Like I said, I m no expert. This reverse in my visualization is a surprise to me, but it 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 m unqualified to be opining about this stuff publicly. It s ok, I can take it.",
"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","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 13th, 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: 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","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 11th, 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 ve ever trolled through Google 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 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 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 ve been writing for Lifehacker as of recently (another reason posting has slowed down here lately, but I 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 m taking as much advantage of it as I can. I don 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 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",
"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","hundreds","ibooks","iphone","iphones","image","innovation","likely","looks","macos","manager","missed","monthly","moving","multiple","myriad","partnership","password","places","posting","ready","recently","removed","revolutionized","right","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 6th, 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 t go into full detail here, but there are some cool new features I 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 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 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","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 17th, 2018",
"ts": "1534534320",
"summary": "This is a post about keyboards. Well, about one keyboard, but we ll probably go through a bunch to get there. It 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 s nerd stuff. Maybe specifically about keyboards, but it s likely that this person enjoys reading anything decidedly nerdy. Either because they re nerdy, too, and it makes them feel better to know they re not alone, or they re so normal and fine with that that it amuses them to see other people go off the deep end. 1 It 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 ve always come back to my aluminum Apple bluetooth keyboard. I don 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 ll put them up for sale to someone who ll actually use them. I have piles of keycaps, a couple switch testers, and a fancy key puller. I 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 ability to function efficiently. It s a crippling dependency I ve created for myself, but I",
"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","macbook","macstock","maestro","magic","massdrop","matias","maybe","mouse","moved","numeric","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","alone","aluminum","amount","amuses","angle","annoying","annoyingly","another","answer","anyone","anyway","apart","apparently","arduous","arrangement","arrow","article","assign","assigned","attach","attempts","available","avoid","awkward","backed","backers","backtick","barely","batteries","beast","beats","became","because","becomes","becoming","before","begin","between","bindings","bluetooth","bottom","bracket","break","breakers","breakfast","brings","broke","browsing","built","bunch","button","buttons","buzzy","callouses","cared","certain","certainly","chance","changed","character","click","clicky","close","closes","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","dammit","daunting","decidedly","decisions","default","defaults","definitely","dependency","desperate","determined","developed","dinovo","diagrams","different","distinct","ditching","doesn","doing","dollars","dongles","double","dozen","driven","drivers","easier","edges"]
},{
"title": "Marked 2 updates: Highland 2 and more",
"url": "/2018/08/14/marked-2-updates-highland-2-and-more/",
"tags": ["marked","support"],
"date": "Aug 14th, 2018",
"ts": "1534255380",
"summary": "I ve kept my promise of shipping smaller updates to Marked 2 more frequently. Marked is now at 2.5.21, so here s a rundown of what s new in the last 5 updates. First, a bunch of fixes. I 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 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 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 re updating through the automatic updater (Marked- Check for Updates), read all the way through the release notes, it 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","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 13th, 2018",
"ts": "1534181040",
"summary": "I ve added a few new shortcuts to my astounding 1 collection of macOS keybindings. You can check them all out on the project page (and, if needed, figure out what the heck I m talking about), but here s what s new. First, a simple command that s just for convenience: shift-space to move forward one character without inserting a space or deleting anything that s selected. It 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 re using one of the most ingrained keys in your muscle memory (the spacebar). As a solution to the lingering shift, if you re not already using your hyper key with the spacebar for something else, it might make a better option (setting the binding to . Mine 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 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 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 ll get camelcase . That 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.",
"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","endnote","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 9th, 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 m going to break from the norm this week and write some of my own tricks into this sponsored post. I m a huge fan of TextExpander and I d use it every day even if Smile weren 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 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 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 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 applications for job-hunters, and how Smile themselves",
"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","endnote","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 7th, 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 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 2nd, 2018",
"ts": "1533207600",
"summary": "Thanks to MeisterTask for sponsoring BrettTerpstra.com this week! I 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 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 d like to display on their dashboard, as well as adding a custom fields feature, enabling users to define one or multiple input fields, which are then added to the tasks inside a project. It s also worth noting that MeisterTask 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","making","manager","managers","meistertask","multiple","native","noting","offers","often","particularly","partly","party","popular","powerful","productivity","project","release","released","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 31st, 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 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 30th, 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 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 d rather keep around. Here 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 or I could buy a new Drobo. The thing is, I 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 d recovered my data. Here 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 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 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 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 re going to pretend you don 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 instructions are written for a non-root user and include the steps needed to make that",
"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","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","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 26th, 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 25th, 2018",
"ts": "1532541180",
"summary": "I wrote this up for MacStories this morning, so I won t go into full detail, but AeroPress Timer has updated to version 3. It s an app for timing out recipes for the Aerobie AeroPress , and this version adds the one feature I ve most wanted from this awesome little iPhone utility: custom recipes. It 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 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","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 24th, 2018",
"ts": "1532459100",
"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. NodeBeat - Playful Music A delightful, node-based music generation app for iOS. Combine generators and nodes to start building songs and rhythms visually. I 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 m excited enough to point it out now. I love TextExpander (dearly), but specifically for coding, TeaCode offers a basic feature set that 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 19th, 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 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 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. 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 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 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 s easy to learn. The answer should be a resounding Yes! If you ve been struggling to display a massive amount of data in a concise and well-organized format on your",
"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","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 12th, 2018",
"ts": "1531403100",
"summary": "Thanks to TextExpander sponsor for sponsoring BrettTerpstra.com this week! TextExpander multiplies your team s productivity making up-to-date, shared knowledge available instantly. Accessible and searchable 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 re modified If you 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","modified","multiple","multiplies","platforms","podcast","productivity","responses","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 10th, 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 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 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 ) 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 90 years old? This pay-what-you want font named after Futura designer Paul Renner and created by Indestructible Type is worth trying out for your next sans-serif design need. Check out their other fonts while you re there, they 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 9th, 2018",
"ts": "1531151100",
"summary": "I m not being hyperbolic: this one simple trick is going to save a lot of people a lot of time. (I know, it 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 newsletter): I can 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 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 As an aside, I 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 ve written about this before, and I ll refer back to my post on How to write a customer support request. (I ll further note that this isn 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 s not easy in 140-280 characters. Sarcasm, on the other hand, is really easy in only 50-100 characters.)",
"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","hours","hyperbole","hyperbolic","initial","instant","inverse","listen","literally","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","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 5th, 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 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 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 ve been working from home 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","helps","himself","iphone","improve","likes","precious","productive","quickly","rescue","resource","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 25th, 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 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","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 22nd, 2018",
"ts": "1529699220",
"summary": "Some of us always follow the rabbit. It s not because we want to. It s just that the rabbit 10 a.m., somewhere in Minnesota Sit down to write a blog post. It s basically written already in my head, just need 20 minutes to get it down. Double check some code I m including, and realize it doesn 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 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 ve never heard of and have to track it down through the repository. Turns out it s a native function in the language that I d never seen before. Consider the possibilities of this functionality. What 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 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 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 t I doing that already? Check timestamp. Look at watch. Tomorrow, I guess, it 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","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","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 21st, 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 s got credentials. You may even have heard my chat with him on Systematic . If you 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 s a rule I clearly love, as I ve dedicated a good part of my adult life to making it happen for myself. I ve learned a lot from reading through Luc s tips surrounding the 2-second rule, and I can t imagine there s anybody who wouldn t walk away with at least 5 new ideas. Cognitive Productivity with MacOS is currently listed on the iBookstore and there 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","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 21st, 2018",
"ts": "1529593620",
"summary": "I know a few people are using PodTagger , so I thought I should publish the latest updates. It 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 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 More info 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 More info",
"keywords": ["automation","tagging","automated","changelog","donate","download","podtagger","published","squarespace","systematic","updated","below","check","details","external","figure","figured","fixes","latest","looks","metadata","mostly","people","podcasts","podtagger","project","publish","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 20th, 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 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 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 ve always come back to RegExRx. It s not pretty (the Mac App Store icon couldn 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 I wrote a script to convert a folder full of these files to Markdown files I could drop into nvALT or Quiver . I won t go into a ton of detail on this because I m pretty sure there aren t more than 5 people in the world who will ever need this script, but Specify an output folder, a note title prefix, and your own template for the output (there s a default one if you don 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 t account for already-escaped slashes because I don t use them in RegExRX (its copy-as feature does it automatically), but that s something I ll probably fix sooner than later. Side note: annoyingly, a lot of other snippet apps (like SnippetsLab ) can t just import Markdown files as notes. I had to import the results of this script in Codebox (which I think is now defunct) and then import that",
"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","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","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 19th, 2018",
"ts": "1529413200",
"summary": "You probably know that I m a big fan of keyboard shortcuts. I try to learn them all and rarely click a button or pull down a menu. There 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 dialog. I got the answer from Sören Kuklau : ⌘⌫. I figured that, since those are harder to find, I 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 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 dialog s button reads Don 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 t Save, the dialog 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 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 14th, 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 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 s batch OCR. During the week of June 11th, the Smile Blog will celebrate Smile s history. Visit smilesoftware.com/blog to join the fun, including a sticker giveaway. And here 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","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 13th, 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 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 m enamored with the idea of writing screen dialog in text message format. Check out the product page, you 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 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","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 12th, 2018",
"ts": "1528827240",
"summary": "Forgive me for pontificating and recollecting like an old man for a while. I ll be 40 next month, so I m practicing. Let 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 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 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 t work terribly well, but I could instruct the computer to turn on the lights in the living room as long as I d left the intercom in listen mode (or walked across the room to press the talk button that was 3 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 to Mac in 2000, I started using Indigo . The hardware",
"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","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","products"]
},{
"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 6th, 2018",
"ts": "1528302000",
"summary": "I have a longer home automation post in the works. It s actually more philosophical than how-to, so I m taking my time with it. My discovery this week bears mentioning on its own, though. I ve become more and more enamored with Amazon 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 ve done previously. I d hacked around the HomeKit issues using homebridge, which I ve talked about before . It requires an always on home server, so it s not a solution for everyone, but it did the trick for me. I don 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 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 s definitely worth looking at the homebridge-alexa plugin . You ll need an account through cloudwatch to install the Alexa skill (search for homebridge in the Skill section of your Alexa app). You 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 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 t come through in my writing, I 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","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 5th, 2018",
"ts": "1528203600",
"summary": "I find the bash commands and overly mysterious, so I 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 s vague. I 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 s BSD installation. It 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 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 s the simple script that I source in ~/.bash_profile to give me tab completion of system sounds, listing them all if I haven 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 m not clear on, it doesn t when you 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","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 30th, 2018",
"ts": "1527685200",
"summary": "Hey, I made a new video for Marked 2 . It covers multi-file documents created with Marked 2 s syntax, MultiMarkdown and iA Writer syntaxes, or Leanpub and GitBook formats. This one doesn 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 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 t know if you knew this, but Marked has a LOT of tricks up its sleeve. If you haven t tried it, you can grab a free demo . If you 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 28th, 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 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 t fit with modern software practices, especially because it was ultimately an incremental release. I 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 ve been creating a release. Since the 10th there have already been 5 more updates, and Marked is as of this writing 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 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 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. I added a new parameter to the URL handler () to allow raising affected windows after running whatever command is passed. I ve written about the URL handler in detail previously, so for now I 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 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 s currently in my fork of the repo maintained by Kotfu , but there s a pull request.) I also added the ability for the MarsEdit Preview to handle previewing images still pending upload (requires MarsEdit 4). It also fixes an issue with MarsEdit posts",
"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","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","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","running","sales","schedule","scheme","script","seems","selected","shipped","signs","single","software","solved","sooner","standard","stripped","strong","style"]
},{
"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 24th, 2018",
"ts": "1527159600",
"summary": "Thanks to KeyKey for sponsoring BrettTerpstra.com this week! KeyKey is a minimalistic touch typing tutor for Mac. It 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 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.",
"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 22nd, 2018",
"ts": "1526997600",
"summary": "I don 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 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 ve started creating Dimspirations. I have over a hundred of them now. Some better than others, obviously, but I 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 d like to see more as they come out. I 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 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 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 s basically the messy attic of BrettTerpstra.com.) If these offend your sensibilities, then they re not for you. Just know that they make some of us feel better than your hang in there poster ever will. Dimpapers v2.3 Download Dimpapers v2.3 Dimspirations for your Desktop Published 05/19/18. Updated 02/26/24. Changelog Donate More info",
"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","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","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 21st, 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 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 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 s generally useful after the video has already started playing anyway. As a side note, in this era of HTML5 video players, it s possible to just disable autoplay in many cases. Here s the new bookmarklet. A simpler version that just targets all the iframes and video elements. We ll call it VidWipe as a new bookmarklet independent of KillZapper. This is all it does:",
"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","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 18th, 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 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 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 t have to wait for a double-load or risk a second cross-site exception/protocol mismatch. It 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",
"keywords": ["autoplay","chrome","click","firefox","safari","video","bullseye","chrome","click","firefox","javascript","killzapper","macworld","patrick","safari","tested","unlike","allows","annoyance","annoyances","annoying","annoys","autoplay","below","bookmarklet","button","click","cloudfront","cover","cross","deleting","disappear","disgust","double","elements","enforced","exception","extensions","hands","hosted","https","inspired","install","instance","jquery","matters","menubar","mismatch","morning","presto","protocol","quick","reading","reload","remove","running","second","seriously","simple","solution","specifically","spend","targets","temporary","turns","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 18th, 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 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 s everything we ve learned from building Ghost From Kickstarter to a successful business model, the story behind Ghost 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 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 ll quickly realize how much you hold down the Command key when pondering what to do next 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 [ ] 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 15th, 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 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, C6; 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 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 m just sharing these in case they re of use in your own scripting. If I get around to it, I ll share more of my routines for window manipulation, menu clicking, and screen capture. I m certain I can name several readers who will know of more elegant ways to accomplish all of these. I 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","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 14th, 2018",
"ts": "1526325360",
"summary": "Very recently I discovered the Fellow Prismo (via Tools Toys ). It 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 flavor 1 . Ever since I discovered it, my coffee consumption has increased significantly (and possibly problematically), but it s so good I can t stop using it. It 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 t already , you can leave the paper filters behind. You start with super-fine coffee grounds. I ve gotten the best results with the grind that 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 m now going through beans faster, but on the plus side, I 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 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 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 ve experimented with one, two, and three minute steeps. I 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 most of the time). I finally had to replace the top assembly after some chipping/corrosion of the plastic seal, but that s $30 and it s good as new, hopefully for another 10 years. I 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 more effort than you re likely used to. Fellow says you can press directly into an espresso cup, but",
"keywords": ["aeropress","coffee","espresso","fellow","prismo","aditi","aeropress","aerobie","aeropress","airscape","doppio","fellow","moisten","pressing","presto","prismo","remove","starbucks","thrasher","tools","zojirushi","achieve","achieved","actuated","admittedly","almost","another","assembly","attached","attachment","beans","beats","because","before","behind","between","bitterness","bloom","boiler","brewing","built","bulkier","changes","chipping","chocolate","choice","chute","cleaning","cling","clogs","coffee","comes","cools","corrosion","couple","crema","damage","decade","definitely","degrades","delicious","delightful","demitasse","different","directions","directly","discovered","doing","double","dries","effort","either","enough","espresso","evening","expect","expensive","experimented","faster","favorite","filter","filters","finally","fittingly","flavor","forget","fostered","found","frothier","funnel","glass","going","gotten","great","grind","grinder","ground","haven","hesitant","hexagonal","hopefully","including","increased","inverted","lasted","latte","layer","leave","likely","local","loving","machine","makes","medium","memory","metal","minute","muscle","named","names","nerdery","nozzle","paper","parlance","paste","perfectly","plastic","possibly","pound","press","pressing","pressure","price","problematically","process","prying","pungency","puppies","qualities","quality","quick","rapping","ratio","reading","recently","regular","replace","required","reservoir","results","right","rinse","roast","roasters","roasts","sealed","seconds","setting","shortened","significantly","since","single","sized","slightly","slower","smooth","sound","specify","spent","starts","static","steeping","steeps","story","strong","stronger","super","sweeter","takes","taste","technically","technique","through","tough","tried","under","undesirable","upright","using","usually","wanted","water","while","worth","years","yields"]
},{
"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 10th, 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 year 1 . Long pregnancy, but this release includes over 30 improvements/fixes, as well as a slew of new capabilities ( full changelog ). It s the fastest, most powerful release of Marked 2 yet. I 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 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 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 ) 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 ll need to document this one further, but there 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 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 m just including it for all users. If you paid the $1.99 for it and now feel robbed, I can refund your purchase. Or you can consider it a thank you for not making Marked a subscription-based app Multiple improvements to Fountain support are",
"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","endnote","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"]
},{
"title": "The new PDFpen 10!",
"url": "/2018/05/10/pdfpen-10/",
"tags": ["sponsor"],
"date": "May 10th, 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 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 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","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 9th, 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 ll be honest, I discovered this list when I was notified I was on it, but was pleasantly surprised by the collection. If you 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 t even get to fight the other half of it 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 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 re looking to create workflows on your iOS device or automate your home. It 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","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","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 8th, 2018",
"ts": "1525795800",
"summary": "Over the weekend I made some updates to PodTagger. This is one project that I m not certain anybody else is using, but it s one I 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 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 ve updated the downloads with an app version you can keep in your Dock and drag to (or call with Alfred/LaunchBar). It 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","image","located","network","nicer","notes","output","podcast","project","quick","ready","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 7th, 2018",
"ts": "1525701600",
"summary": "Here 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 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","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 4th, 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 re thinking you ll just spend some time cleaning your office today. You 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 s the base function, (I m Down!): I 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 t work if the connection problem is at the DNS level, but I 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 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 I made a really annoying loop for this. If the machine you re running it on has sound, this is really effective. Assuming you re around to shut it off, I suppose, because it would drive everyone else nuts and they d end up smashing your speakers. But if you 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 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 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 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 to use Pushover , a free service that allows you to send push notifications to your iPhone (and Apple Watch)",
"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","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","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 3rd, 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 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 2nd, 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 ll point you to my Macstories writeup",
"keywords": ["cardhop","contacts","flexibits","cardhop","flexibits","groups","macstories","smart","version","array","features","formatting","great","languages","parsing","point","printing","released","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 2nd, 2018",
"ts": "1525273200",
"summary": "Hey, did I mention I m speaking at Macstock in July? Yeah, I did . The speaker lineup is finalized, and it s great. There are a couple of old friends of mine speaking that I 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 m not shaming you, I m just saying that if you were thinking about coming, you 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 ll be extra nice to you. Please help Macstock continue to grow. It s already an event I look forward to every year, but there s one thing that would make it better: you. Don t forget, coupon code (all links on this page will apply the code automatically). See you at Macstock!",
"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","includes","including","informative","inspiration","keynote","lineup","links","loving","meetups","mention","missed","nerdery","photos","price","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 1st, 2018",
"ts": "1525183200",
"summary": "I posted the above picture on social media and got a bunch of questions about it. I don t recall where I learned this, probably some Pinterest life hack thing. Apologies to the un-linked originator (if it 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 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 s enough fun that you might just label doors and tables and cars ( door, table, and car, I would assume) It 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 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 ll still see the edges after it s stuck on. Soak it in water. Soak it at least long enough to wet the paper all the way through. I haven t seen any issues caused by soaking too long, but you ll definitely have problems if it 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 t want to scrape off all the adhesive, just separate the wet paper from it. You ll find you have to go at it a few times, as it will look clean while it s wet but once it starts to dry you ll see where you have little bits of white left. Once it 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 stick them on wet and squeegee out moisture with a credit card. They seem to stick better after drying if I",
"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","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 30th, 2018",
"ts": "1525096800",
"summary": "I haven t posted many pictures of late, but I 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 m getting what do the kids say? Swole? As close to it as I ve ever been, anyway. In the last few months, I ve found a couple of new products I consider worth reviewing, in part because one of them is the culmination of a search that s been ongoing for over a year Since I started practicing yoga, I ve wondered why there were no options for male yoga pants that I actually liked. I m sorry, but fisherman and harem pants immediately make me say do I look like Bruce Lee/Justin Bieber? It 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 t know what transition refers to. Maybe they re halfway between boy shorts and girl leggings. It doesn t matter, these work. Compared to harem pants (or the gym shorts I wore previously), they 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 t billow or get in the way, but it 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 s back It 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 t get the short end of the deal They don t look like running shorts, because it 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 t provide the mystery in the groin area that billowy pants or loose shorts do. Do what you will with that information. I m told pants of this style are also great for climbing and bouldering, the latter being a sport I ve been working back up to over the last couple of years. The pair I purchased was from 4-rth 1 . I ve worn them 3+ times per week, washed them regularly, and they ve held up",
"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","balance","balances","barefoot","because","below","benefits","between","billow","billowy","block","bouldering","breathability","bridge","cheaper","class","classmates","climbing","close","clothing","comfortable","coming","confident","consider","constantly","contact","continued","couple","cover","coverage","covering","crazy","cuffed","cuffs","culmination","cultural","doesn","drawstring","dressing","drops","durable","dying","enough","especially","evidence","expected","experiences","exposed","fabric","fairly","female","fiddle","first","fisherman","fitting","found","frame","garment","getting","great","groin","halfway","handy","harem","haven","ideal","information","inside","issues","knees","latter","leave","leggings","liked","little","looking","loose","loving","lycra","lying","makes","mentioned","moving","muscles","myself","mystery","neither","nervous","noticed","noting","ongoing","options","orientation","pants","people","perception","pictures","posted","posture","practicing","previously","price","problematic","products","pronounced","psychological","purchased","quality","ratio","reasonable","recall","refers","regularly","report","requires","resistance","reviewing","rhetorical","right","roundup","rubber","running","salutation","search","serious","short","shorts","shoulder","showing","shrink","sizings","sorry","sport","standard","started","stick","stretch","stuck","stuff","style","sweat","talking","tattoos","temperature","think","tight","times","traction","transition","tripped","turned","upper","usually","ventured","vertical","visible","waist","waistband","walks","wanting","washed","wearing","weird","wherever","while","wondered"]
},{
"title": "The new PDFpen 10!",
"url": "/2018/04/26/the-new-pdfpen-10/",
"tags": ["sponsor"],
"date": "Apr 26th, 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 t forget, Smile also offers PDFpen for iPad iPhone, allowing a seamless PDF workflow, even when you 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","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 24th, 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 ve been testing the beta for just a couple weeks now, but have found plenty of the delight I ve come to expect with every new release. George Browning keeps setting a high bar for himself I m afraid I don t have time to offer a complete overview of Curio. It s wildly powerful for brainstorming, research, organization, and project management, and flexible enough to use in a myriad workflow configurations. I ve written about Curio before , but here 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 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 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 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 ll see it rendered as rich text in Curio as soon as you finish editing, and it s available as Markdown when you start editing the figure again. There aren 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 default 1 . 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. Figures containing rich text will be converted to Markdown formats (including conversion",
"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","endnote","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"]
},{
"title": "Tips for sane cable storage",
"url": "/2018/04/23/tips-for-sane-cable-storage/",
"tags": ["bundle","organization","paper","productivity"],
"date": "Apr 23rd, 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 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 ll mention these in both of the following sections, so I ll rave about them at the top. VELCRO One Wrap Thin Ties were first recommended to me on an episode of Systematic, though I ve lost track of which one. They re little cable wraps that come in a roll, 100 to a box for $7. They 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 ve amassed 50-some power adapters over the years. From 5W chargers to 30W power supplies, it 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 s so rare that I need a power adapter of some of the weirder varieties I 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 s, so I do. I 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 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 s easiest. Punching little holes and using zip ties would be an option. If you re using a sticky labeler, you need to find a way to stick them on that will work for visibility after you ve wrapped the wires. Whatever works",
"keywords": ["adapters","cable","management","storage","adapters","attach","because","bundle","cables","cleaning","discard","display","ethernet","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","barcode","because","becomes","between","beyond","boxes","braided","brittle","bunch","bundle","bundles","business","cable","cables","careful","chargers","charging","cheapest","check","choice","choose","chosen","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","documenting","doing","drawer","drawers","duplicates","easier","easiest","electrical","elsewhere","endorsement","enough","episode","especially","expert","extra","extras","fabric","fasten","favorite","first","forgot","friends","getting","going","gotten","graveyard","group","grouping","guests","halfheartedly","handed","handwriting","handy","holes","house","ipads","iphones","individually","inventory","keeping","kindles","kinks","label","labeler","labeling","labels","laminating","larger","leads","length","likely","listing","little","longer","longest","looking","machine","maintainable","makes","making","manageable","managing","marker","matches","mention","micro","mobile","morning","myself","nasty","needed","needs","nicely","notes","often","older","organize","output","paper","people","picture","piled","piles","plastic","plating","plenty","plugs","pointers","possibly","pragmatic","prefer","prettier","printing","product","project","proven"]
},{
"title": "BetterTouchTool - Customize your Input Devices!",
"url": "/2018/04/19/bettertouchtool-customize-your-input-devices/",
"tags": ["bettertouchtool","sponsor"],
"date": "Apr 19th, 2018",
"ts": "1524135600",
"summary": "Thanks to BetterTouchTool for sponsoring BrettTerpstra.com this week! I m a long-(long-)-time fan of this app, and I 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 17th, 2018",
"ts": "1523975160",
"summary": "First is the addition of metadata in cheatsheets. It 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 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 s not a perfect system, and it still needs some cleaning up, but it s definitely allowing more flexibility. If you ve made use of Cheater s Fast Switcher, you ll probably appreciate this next bit. It 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 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 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 automatically focused when it opens. Typing performs a fuzzy search on the available titles, and if it narrows down to just one, hitting enter will immediately jump to that section,",
"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","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","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","table","tables"]
},{
"title": "Web Excursions for April 16, 2018",
"url": "/2018/04/16/web-excursions-for-april-16-2018/",
"tags": ["bookmarks","bundle"],
"date": "Apr 16th, 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 s Time for an RSS Revival Yep. No matter what your current disposition, though, in this age of algorithmic overreach there s something deeply satisfying about finding stories beyond what your loudest Twitter follows shared, or that Facebook 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 s mission is to help build a better Internet. We re excited today to take another step toward that mission with the launch of 1.1.1.1 the Internet s fastest, privacy-first consumer DNS service. The Creatable Pick A Bundle 2018 Creatable 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 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","mission","optimized","overreach","partnership","performance","privacy","resource","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 12th, 2018",
"ts": "1523530800",
"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! TextExpander multiplies your team 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 s common responses are written and edited by your best writers for clear and consistent communication, accessible and searchable through simple abbreviations and keyboard shortcuts. And any time a change is needed, everyone s snippets are updated immediately. If you re on a support or sales team, or if you 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","medical","multiple","multiplies","needed","needs","platforms","podcast","productivity","responses","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 9th, 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 ve been on the Tower 3 private beta, and I can tell you it 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 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 t know if you read the EasyDNS newsletter, but I 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 28th, 2018",
"ts": "1522260240",
"summary": "Hey buddy, how you doing? I m good, thanks for asking. You don t seem good. What s going on? Well, ok, let me just ramble through this for a bit. Cheaper than therapy Emma my favorite pit bull and canine companion for 11 years 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 t eat, fell over peeing, got rushed to the vet, and never went back home 1 . 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 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 re grieving for is still there but you 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 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 Elle 2 , just last week: There s no wrong way to do this. I don t have to be appropriate, display certain behaviors, react in certain ways. The day my grandfathers died, I got sent to the principal s office because I referred to their passings in a way that wasn 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 ll recover over the weekend. Should be back at it on Monday. Turns out you can t just schedule shit like that (without drugs, anyway) any more than you can control how you re going to feel",
"keywords": ["grief","aspca","aditi","chance","cheaper","facebook","friday","german","monday","shepherd","sirius","thursday","turned","turns","accessible","addictions","agreed","amount","anyone","anyway","asking","available","avoid","beautiful","because","before","behaviors","between","boyfriend","brilliant","brother","bucket","buddy","business","cancer","canine","capacity","cared","caring","cause","certain","chance","cigarette","circumstance","comfort","companion","compressed","concerns","context","control","crying","daily","damage","decade","decided","deeply","devastating","different","display","divorced","doesn","doing","donated","drama","drugs","embarrassed","enough","everybody","exact","explain","express","fading","favorite","feeling","feelings","feline","figure","first","fitting","forever","found","friend","friends","fundraiser","going","grandfathers","grief","grieve","grieving","happy","harder","having","impressive","injustice","irreversible","kicking","kindest","lasts","later","leave","light","likely","liquid","loses","losing","loved","lozenges","lucky","lungs","makes","making","marriage","massive","mattered","matters","meantime","memorial","memory","money","monster","mostly","myself","needed","nicotine","numbing","object","office","officially","oversimplifies","passed","passings","patches","peeing","people","places","point","problem","process","proud","public","ramble","react","realized","recent","recently","recover","regularly","reliably","remained","respectful","right","rushed","saying","schedule","sense","separated","shock","since","situation","smoking","spent","starting","suddenly","supporters","supposed","swelling","switched","teacher","teenager","thanks","therapy","think","thought","through","times","today","trying","under","underestimate","unfinished","vaping","waiting","waste","weather","weekend","weeks","weren","whatever","whole","withdrawal","wondering","worked","worse","wrong","years"]
},{
"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 21st, 2018",
"ts": "1521653520",
"summary": "I 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 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 ll start at the beginning of the optimization stage. You 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: optimize image Tool chosen automatically based on file extension 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. 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. resize to width or max-[width]x[height] 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 the larger dimension. The script requires",
"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","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","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 15th, 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 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","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 13th, 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 s about time. Devhints 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 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","offers","partnership","picker","playing","recorded","redaction","ricostacruz","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 8th, 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 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.",
"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","multiple","numbers","paper","paperless","portfolios","presenting","redact","related","right","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 7th, 2018",
"ts": "1520445780",
"summary": "I first wrote about Deckset back in 2014 . Since then I ve continued to love it as an alternative to Keynote, using it whenever I can for presentations. At CMD-D last summer, I hadn 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 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 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 re leaving the Mac App Store. The new version is available exclusively via direct purchase, which as a side effect gives them a lot more flexibility with coupons, pricing, and educational discounts. Deckset is definitely the coolest, easiest tool I 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","metadata","needs","numbering","opposed","others","presentation","presentations","pricing","quickly","receive","release","released","requests","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 1st, 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 ve ever run here. There ended up being 6 instead of 5 because the Giveaway Robot made its first ever mistake 1 . Omni was very gracious and provided an extra code to remedy the snafu. I ve heard back from most of the winners already, but if you re on the list and haven t heard from me yet, let me know and I ll re-send the email. Thanks again to everyone who entered, and if you didn t win, you can grab the free trial and there s still a little time to snag the intro price! Ok, fine, it was human error. I hit CTRL-c because I realized I 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 s too good to be stopped.",
"keywords": ["omnioutliner","abhishek","barrette","congratulations","costiou","florent","giveaway","guillaume","hansen","killotron","omnioutliner","oostindie","robot","thanks","vincent","again","because","email","ended","entered","error","everyone","extra","fault","first","giveaway","giveaways","gracious","haven","heard","human","intro","little","mistake","popular","price","random","realized","remedy","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 28th, 2018",
"ts": "1519851120",
"summary": "Chrome slowed down for me this week. It 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 t used Firefox for years but I m pleased to report it s become an amazing browser in the meantime. I 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 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 m not careless about installing untrusted apps, so that wasn 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 and I run a lot of them 1 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 m not going to link it here, but see the image above if you need to confirm which one I m talking about. You ll immediately note on the Reviews tab that it s reported as malware. Repeatedly. Many, many times. I reported abuse, as I assume many of the dozens of commenters have, so it 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 out, fast. I read reports that YouTube Video Downloader also had the same PUP, and I m sure",
"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","bottom","browser","bunch","bundled","calls","careless","change","coming","commenters","commissions","computer","confirm","continued","continuing","creators","cruft","definitely","deleted","detects","development","different","disabled","dozen","dozens","enough","entire","everything","extension","extensions","figure","figured","fixed","folder","gather","going","grind","happened","haven","having","image","incarnation","injected","injects","innocuous","inspector","installed","installing","issues","jumped","label","latest","lifespan","likely","links","lists","malware","meantime","memory","mutation","nothing","offending","others","pages","perpetrator","pleased","powered","presence","problem","published","purportedly","recent","recently","redirects","refreshing","repeatedly","report","reported","reports","results","ridiculous","search","searching","seems","services","short","slowed","slows","specifically","started","story","strings","supposedly","switched","system","talking","testing","through","times","today","tracing","tremendously","turned","unfathomable","untrusted","wonder","years"]
},{
"title": "Web Excursions for February 26, 2018",
"url": "/2018/02/26/web-excursions-for-february-26-2018/",
"tags": ["bookmarks","tools"],
"date": "Feb 26th, 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 t convert your Time Machine volume from HFS+ to APFS A warning from Macworld about APFS (macOS High Sierra) and Time Machine. Basically, don 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 m not currently working on any AR, but it 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 22nd, 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 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 s perfect when you 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 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 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 21st, 2018",
"ts": "1519241040",
"summary": "OmniOutliner 3 for iOS is out and it 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 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 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 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 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","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 20th, 2018",
"ts": "1519135200",
"summary": "I 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 s saved me a significant amount of time in figuring out how to automate these apps 1 . 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 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 t recognized, it won 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 re looking for an update to my scripts for incrementing and decrementing dates, you can take a look at Jesse Grossjean 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 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 t exist on the task when the macro runs, it will be added with the minValue (or maxValue if decrementing). If it 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 defined increment from the current value. Again, here s the gist if",
"keywords": ["macro","script","again","applescript","automation","changelog","datetime","decrement","donate","download","first","grossjean","increment","javascript","jesse","keyboard","language","library","macro","maestro","natural","published","rather","sugar","taskpaper","triggering","updated","added","again","amount","annoying","apart","appeal","automate","available","below","bottom","bunch","bundling","change","close","clumsy","collection","completed","consider","contained","convert","create","created","customizable","cycle","cycling","datetags","dates","decrement","decrementing","define","defined","different","direction","doesn","download","editor","either","entire","entirely","exist","expression","figuring","found","general","hotkeys","includes","increment","incrementing","keyboard","language","library","looking","loving","macro","macros","maxval","maxvalue","minval","minvalue","names","natural","numeric","parenthesis","priority","recognized","regular","relying","removed","saved","scale","script","scripts","separated","shortcut","shorter","significant","space","specifically","specify","starts","string","subtract","subtracts","thank","think","together","tomorrow","tools","translate","trigger","triggered","tuesday","unique","using","value","values","variable","variables","version","weeks","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 15th, 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 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","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 13th, 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 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 s on the verge of replacing Sublime for me. If you re under the same impression I was confusing VS Code with VS IDE and assuming it wasn t for you shed the misconceptions and give it a try. It 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 m linking this for now because the dev asked me to review it and I don 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 m giving it a shot right now if it fits my use cases I ll be writing it up in more detail. For now, I ll say: it 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 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","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","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 9th, 2018",
"ts": "1518200820",
"summary": "I just updated SearchLink to v2.2.8. Yes, if you re paying attention, I did skip a few increments there since the 2.2.5 release. I 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 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 t have it combing the url or the extended description at this point, but I ll see what issues I run into over time. The Pinboard searches currently download your entire bookmark collection every time it runs (doesn t take an excessively long time, but it s highly inefficient). I m working on caching those and only updating as needed, but I m running into trouble with writing large cache files to disk. Eventually I 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 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 s kind of a silly feature anyway, so I won t put a lot more time into figuring out ideal ways to handle it. As a side note, I 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.65 Download SearchLink v2.3.65 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 01/16/24. Changelog Donate More info",
"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","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","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 5th, 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 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 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 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 d still be lost without it. BitWriter progress was slow, as anyone waiting for it knows, but it 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 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 , and Stuart Turner (among",
"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","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 1st, 2018",
"ts": "1517490000",
"summary": "Thanks to DuckDuckGo for sponsoring BrettTerpstra.com this week, I 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 s not in your device’s browser history, it never happened. Sadly, that couldn 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 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 26th, 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 m betting on Macstock 2018 being the best one ever in the history of Macstock (ok, sure, it s only a few years old, but let 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 t do well in auditorium settings. It 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 ll be speaking again this year (and doing a deep dive session). It 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 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 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","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 26th, 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 How To Get Your App Featured in the App Store and Google Play For all the marketing tips for developers that I ve read (and even proffered ), nothing really beats an App Store feature, if you can get it. Here 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 ll admit it, I 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 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","iphone","including","incorporate","liked","linear","looks","machines","marketing","markup","mobile","mockups","nothing","offers","partnership","product","proffered","project","putting","ready","recent","reliably","responsive","restricted","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 25th, 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 re on a Product Hunt product page.",
"keywords": ["chrome","product","safari","because","phopen","phopen","product","store","website","again","below","block","bookmarklet","bookmarklets","bookmarks","brilliant","broke","button","chooses","click","containing","design","direct","efforts","first","foolproof","fragile","frequent","hacking","installed","layout","links","opens","pages","product","quickly","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 23rd, 2018",
"ts": "1516716000",
"summary": "I ran into a problem editing a slide in Keynote with a large blockquote. It was left-aligned, which I 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 t done print design for a long time, but I remembered there being a hang punctuation feature in most of the apps I d used. I apparently never learned how to do this manually in apps like Pages or Keynote. People who ve been designing in these apps (and probably a dozen others) are scoffing at me right now. I ll take it. If you re curious, it turns out it 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.",
"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 22nd, 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 t get a new iPhone in 2017. I didn 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 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 re not, but Amazon has always been insidiously good at that. WizGear Universal Magnetic Dashboard Mount I d been excited about the Anker version of this phone mount for my car, but I just couldn 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 t until after I 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 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 d been using. And it was a $50 mic. I 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 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 ll fit in the charger, the less all-encompassing form factor of the EarBuddyz makes a lot of sense. They give you the wing style that I have on my favorite non-Apple earbuds. Staples Arc",
"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 21st, 2018",
"ts": "1516543200",
"summary": "Among the posters that Tower (my favorite Git client ) has published, The Developer Manifesto is one of my favorites. It 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","shipped","store","value","wallpaper","winner","winners"]
},{
"title": "DaisyDisk is 30% off",
"url": "/2018/01/16/daisydisk-is-30-percent-off/",
"tags": ["deals"],
"date": "Jan 16th, 2018",
"ts": "1516131060",
"summary": "I mentioned DaisyDisk as my favorite tool for seeing what s using up space on my hard drive in yesterday s roundup , and it happens that there 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 s a collection drawer where you can stage files (or entire segments) for trashing. Once you ve browsed through and collected things you don t need, one click clears them out. It s a great tool, and definitely the most elegant in its category. If you don 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","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 15th, 2018",
"ts": "1516046400",
"summary": "Welcome to my favorite part of the roundups: nerd stuff. Don t worry, there 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 s the highlights from the ones I use the most often. Don t be offended if your favorite app (or the app you develop) isn 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 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 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 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 s still an essential tool and every update (one just came out today) improves performance. Droplr I ve used Droplr for years. It s my primary way of sharing files and screenshots. They 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 I can drop a @2x image on and it will create formats for various social",
"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 11th, 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 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 10th, 2018",
"ts": "1515620580",
"summary": "For many of us, creating is the same as working , but I ll make a distinction for the sake of categorization. Standard disclaimer: this is not a complete list of every cool app I use. It s the highlights from the ones I use the most often. Don t be offended if your favorite app (or the app you develop) isn 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 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 great 1 . If you want something with palette management, though, Sip ( Setapp ) is a top notch app and often runs alongside Pochade when I 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 re looking for a vast feature set, a list of capabilities I haven 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 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 Setapp I hadn t heard of Gifox until recently",
"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","adjustments","admit","alongside","amazing","animated","anymore","architecture","array","attached","audio","automatically","automation","available","avoid","awesome","based","batch","because","boards","break","breeze","built","bunch","button","cancel","capabilities","carousel","catchall","categorization","change","changes","choice","click","close","coding","color","colors","comes","coming","command","commenting","comments","complaint","completely","computer","conference","connected","constant","conversion","converting","cooler","coolest","cough","coverage","created","creating","curve","definitely","describe","designing","detail","develop","development","different","disables","disclaimer","discovered","distinction","documents","doesn","doing","downloaded","easily","editing","edition","editor","effects","ended","endorse","entirely","except","exploring","export","external","eyedropper","fairly","favorite","feature","feeling","ffmpeg","files","forgot","friendly","gives","gotten","great","group","guitar","harder","haven","heard","highlights","hoping","iphone","izotope","icons","ideal","image","included","integrates","integrations","keyboard","keyboards","laptop","latest","learning","looking","looks","loved","lover","lunch","macos","makes","management"]
},{
"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 8th, 2018",
"ts": "1515431760",
"summary": "As usual, I ve found myself unable to write up the complete 2017 macOS list in any reasonable timeframe, so I m once again splitting it into parts. This year 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 s the highlights from the ones I use the most often. Don t be offended if your favorite app (or the app you develop) isn t here, but feel free to add recommendations in the comments! Setapp I ll mention Setapp right off the bat. While its acceptance hasn 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 s excellent API to quickly round trip my maps for sharing. It would be a grave omission to neglect mentioning MindNode 5 . It 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 ve stuck happily with OmniFocus for years now. I have great things to say about Things 3 and 2do Setapp , but I m not switching again unless I have to. NotePlan Setapp So I don t switch task managers, but I do",
"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","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","model"]
},{
"title": "Marked 2 holiday sale ends tomorrow",
"url": "/2018/01/03/marked-2-holiday-sale-ends-tomorrow/",
"tags": ["marked"],
"date": "Jan 3rd, 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 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 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","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 1st, 2018",
"ts": "1514830980",
"summary": "Can you feel the nervous excitement? It s that time of year again. You know, time for Brett s Yearly Top Apps Lists . Here s the first list of apps I loved using in 2017, starting on iOS. You d think I d start writing these sooner and have them already to go by now, but no. I didn t. I 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 s become a great insight into my daily habits. Momento Diary/Journal I 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 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 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 Roses with appropriate Slash effects (or whatever you re into). GuitarTuna This is the best guitar (and any stringed instrument) tuner I 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 ve found Nuzzle to be extremely good at gathering content I want to see. It s not great for breaking out of my bubble, but I ve been heading to AllSides to even things out. theSkimm I love Skimm for catching up on news in a hurry. My daily breakfast reading. Highly Highlight and save text in any web article you read. I especially like",
"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","added","adults","advanced","again","aging","amazing","angles","annotation","arcade","article","aspect","automatically","available","balance","based","basic","battery","battle","beating","because","before","blend","blocking","breakfast","breaking","brilliant","browser","bubble","build","built","bunch","cabinets","caffeine","calendar","camera","catching","category","cause","ceiling","challenge","challenges","changed","characters","checking","choice","choose","cities","client","clients","close","combination","companion","compared","completed","completions","complex","compositing","confused","connected","constellation","content","contrast","control","convenience","corner","correlations","custom","daily","deleted","detects","device","dictate","dictation","different","dimensions","direction","disappeared","discovery","display","drink","eager","editing","edition","editor","editors","effects","elements","elsewhere","emoji","encoding","enough","entirely","entries","entry","especially"]
},{
"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 26th, 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 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 s especially handy for locating duplicate files taking up space. Honestly, it s the best out of the multiple apps I ve tried for that purpose, matching files with minor variations that others wouldn t pick up on and determining their level of difference. So if you 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","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 21st, 2017",
"ts": "1513889040",
"summary": "As we hit the end of the year, I 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","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 21st, 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% 70% off their normal prices. I ve used almost every app on this list and it s an amazing collection of quality tools: You might also want to check out Eltima 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 21st, 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 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 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 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","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 20th, 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 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 s hoping that there s a renewed push on development, I 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 t remember, it 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 19th, 2017",
"ts": "1513706700",
"summary": "Just a note that this year 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 s affiliate token, so purchasing from a link here will directly benefit AppCamp4Girls, not me. iOS Games: Hidden Folks , Mini Metro , SmartOthello , Alto 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","savings","support","token","winning","worthy"]
},{
"title": "Communicate smarter with TextExpander",
"url": "/2017/12/14/communicate-smarter-with-textexpander/",
"tags": ["snippet","sponsor","textexpander"],
"date": "Dec 14th, 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 s say you get home from a conference. You 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 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 s the power and the magic of snippets, and it s just one example of what you can do with TextExpander. Also check out the new Past and Future Dates snippet group. It s a great demonstration of a small subset of TextExpander 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","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 13th, 2017",
"ts": "1513198800",
"summary": "I almost missed a chance to point to the Curio Core sale , but it s been extended for a week so there s still time to get it at 33% off. If you re not familiar with Curio, it s basically what I consider the ultimate in brainstorming apps. It 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 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 s tools to their fullest. Grab it while it 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","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 13th, 2017",
"ts": "1513188720",
"summary": "MailMate is my email app of choice on macOS, and not only because it supports Markdown. It 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 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 t want to click a sketchy unsubscribe link. It 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 s the best solution for cross-platform compatibility. But when I m on my Mac, getting to the files requires opening the link in a browser and then using Dropbox 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 s there, you can select a message with SaneAttachments and hit ⌘Y (Command-Y) to run it. I don t know how many more I ll add, but there might be more fun stuff coming. If you re a bit of a nerd (er, Power User) and haven t taken a look at MailMate , you should. And everyone should take a look at SaneBox . No nerdery needed there, it s effortless and automatic. Worth it.",
"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 12th, 2017",
"ts": "1513108740",
"summary": "I ve been editing podcasts in Logic for a few years, but have only recently learned a few tips that made me realize I ve essentially been doing it wrong the whole time. I 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 s a pro, and I ve learned a lot in the last month that I hadn 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 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 . 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 re done customizing, choose Save as Defaults. Then you won t lose your normal control bar in the process. I ve trimmed mine down to just what you see below. I use keyboard shortcuts for almost every button on the control bar, so there s really no point in having them. Varispeed is a feature I didn 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 s the default, but I might have edited that one. We ll get to that below.) Once it 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 s most helpful when you re trying to put together more than two participants, but even when there s just a microphone picking up too much ambient noise, it removes all the parts where the person isn t talking. It doesn t silence those parts, it actually cuts the sections out so you re left with a few hundred small clips that are then easy to adjust left and",
"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 11th, 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 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 t usually include politics in the roundups, but this opinion piece covers a topic in our current situation that I 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 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 awesome. Sources: Apple is acquiring music recognition app Shazam I 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 7th, 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 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 s perfect when you 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 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 t the usual low quality fonts you often find for free, whether you 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","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 1st, 2017",
"ts": "1512158100",
"summary": "I 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 ve been doing a lot of that this week. This system is for people working on projects that involve time in Terminal . That 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 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 ve been doing this for a long time and it 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 m working, I add new todo items to my Inbox using . Often todo items are bugs reported via my ticketing system, so they 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 ll add it as a todo so I don 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 s up next. works with sub-projects, listing them recursively, and even with seeing what s next in a project in any other folder where I 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 (and my customers), I rarely have to deal with other people defining my",
"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 30th, 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 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 so take that, NSA! tigerVPN launched in 2011 and has helped hundreds of thousands customers protect their privacy over the years. They 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","often","price","prices","pricing","privacy","promo","protect","protection","purchasing","random","ranks","revealing","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 27th, 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 m busy and stressed out, and I m bad at marketing when I 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 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 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","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 24th, 2017",
"ts": "1511545320",
"summary": "I don t promote a lot of bundles at least relative to the number I get notified about 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 d like to see offered, so I m excited about this deal. The Black Friday Bundle only has three apps in it. And they re all apps I can highly recommend. Hpye 3 is a keyframe-based editor for HTML5/CSS animations. It has all the features you 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 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 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","missing","monitoring","network","normally","notably","notified","offered","party","previewing","priced","promote","recommend","reduced","relative","remote","reporting","resulting","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 22nd, 2017",
"ts": "1511378100",
"summary": "Thanks to Aaron Dowd for sponsoring BrettTerpstra.com this week and promoting his new Successful Podcasting online course! I ve known Aaron since Systematic was on 5by5, where he was the audio editor. He s a pro, with a bunch of videos on podcasting to his credit and years of experience in both creating and producing 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 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 ve learned in podcasts over the years people like Brett and Merlin Mann and David Sparks and Katie Floyd from Mac Power Users. They 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 ve always hoped I 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 2017. I wanted to share everything I 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 ve been thinking about starting a podcast, I 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 17th, 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 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 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 ve just spent a year on the road with Zeppelin with one day off, then six months with Guns n Roses, with one day off and then five years with Bruce Springsteen. Exhilarated and exhausted. -Neal Preston: Legendary rock tour photographer Neal Preston s coffee table book. I haven t bought this, yet, but it 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","imore","instantly","interface","lookup","marker","markers","method","navigation","notes","notetaker","partnership","phone","photographer","podcasting","publish","publishing","reader","references","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 16th, 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 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","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 15th, 2017",
"ts": "1510771920",
"summary": "Unclutter has been around for a while now, and it s just as intriguing to me as it was when it was released. It 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 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 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 s clipboard history works perfectly for any standard usage, providing a visual overview of what 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 the files pane can be dragged to, so you",
"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 9th, 2017",
"ts": "1510228800",
"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! 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 s instantly available to everyone on your team, on all their devices. They didn t need to do anything, the right person made the edits, and everyone is up to date. 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","instantly","launch","magic","marketing","maybe","message","person","podcast","product","right","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 8th, 2017",
"ts": "1510169460",
"summary": "SearchLink is one of the tools I ve created that I use almost every day, so I 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 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: Read more about how to use these and see the full set on the KeyBindings project page . And seriously, if you haven t dug into SearchLink yet",
"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 7th, 2017",
"ts": "1510069920",
"summary": "Back in 2014 I created a little app that generates custom PopClip extensions. It broke on 10.13, so I 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 More info",
"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","latest","little","local","needed","nvalt","prefix","project","requests","response","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 1st, 2017",
"ts": "1509551100",
"summary": "Because I ve written about WALTR 2 previously , I wanted to mention it 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 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 re a dev working with REST APIs, don 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","today","video","wanted","working","works","written"]
},{
"title": "The iTextEditors \"purge\"",
"url": "/2017/10/31/the-itexteditors-purge/",
"tags": ["itexteditors"],
"date": "Oct 31st, 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 t had time to go out and dig for the latest additions, so if you have a new favorite that 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","scary","significantly","trimmer","updates"]
},{
"title": "A few new shell tricks",
"url": "/2017/10/30/a-few-new-shell-tricks/",
"tags": ["terminal"],
"date": "Oct 30th, 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. **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","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 27th, 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 s giving me a break to talk about why I don t like missing yoga. Last time I posted about exercise , I d lost 20 pounds and was feeling better every day. As I write this, I ve lost 60 pounds an have maintained that for 6 months. I ve been focusing on building strength and flexibility in the areas I was weakest, and that s preventing all of the injuries I used to be most susceptible to. I 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 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 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 s easy to find myself holding my breath. But once I m in a position, exhaling slowly almost always allows me to move deeper into it. I ve often heard the phrase breathe into your [body part] from instructors, which sounds corny at first but it s a mental game that I ve found very helpful. In my daily life, learning to breathe has been a game changer. I 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 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 re genetically disposed to that) and breathing deeply through it. It looks ridiculous, but I use it when running in warmer weather. It works. I learned Sama Vritti Pranayama , or",
"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 26th, 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 d share it as a project. It s a work in progress, really, and I m very open to suggestions. I set up a project page with full configuration and usage details. I won t post a bunch of code in this post, but I ll give a quick example and you can decide if you d like to see more 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","logfile","output","project","quick","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 25th, 2017",
"ts": "1508953620",
"summary": "I 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 More info",
"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","itunes","itunesicon","icons","improvements","inspired","installed","installing","little","medium","minor","necessary","original","project","proven","quickly","retrieving","rounded","rounds","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 20th, 2017",
"ts": "1508504400",
"summary": "Last week I started having issues on High Sierra that I couldn 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 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 s doing, make sure to boot in verbose mode. This is usually done by holding ⌘V while booting, but I m not sure that works if you 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 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 ll at least know what parts are taking time. I m told that this process invalidates caches that normally persist on reboot. This is actually really useful information as I ve had issues with font caches and preference caches that I just couldn t seem to clear out before. This may be my new ctrl-alt-delete tip for problems I don t recognize",
"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 19th, 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 ll find a wide variety of styles ranging from vintage to whimsical, not to mention a slew of alternate typefaces. You 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","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 18th, 2017",
"ts": "1508339700",
"summary": "Flexibits just released their new Mac contact management app, Cardhop . I 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 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 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 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 s work email instead of her default address. You can also create new contacts by typing a name that doesn t exist along with things like phone numbers and email addresses, and they 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 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 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 ve never used the official groups all that much. With Cardhop it 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 t have an appropriate matching key, it will try for the next one that does, further saving time. And when",
"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","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","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 18th, 2017",
"ts": "1508331600",
"summary": "Another year, another new operating system, another update to the Mail Vacuuming script that I first posted in 2012 . It 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 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","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 17th, 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 t already know I m a huge 1Password fan, let me tell you: I m a huge 1Password fan. And it s not just because they consistently cater to my nerdy desires 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 ve been using it to test out Touch Bar features on my (aging) rMBP. Undisturbed I don 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 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 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 d kind of forgotten how we got here If you 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 17th, 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 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. 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 s 20% off",
"keywords": ["github","interface","javascript","programming","especially","github","javascript","titlecase","among","audience","building","choice","cloud","configurable","debugging","detection","developer","developers","discount","everything","exploration","finite","handling","highlighting","highly","history","implementing","integration","library","mentioning","multiple","parameters","picking","plenty","possible","primarily","proxy","quick","readers","recommend","requests","responses","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 12th, 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 9th, 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 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 7th, 2017",
"ts": "1507399860",
"summary": "First, a quick reminder that there 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 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 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 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","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 5th, 2017",
"ts": "1507201200",
"summary": "Thanks to Mailbutler for sponsoring BrettTerpstra.com this week! Mailbutler the productivity-enhancing email software that s already conquered Apple Mail has become available for Gmail, too. And that 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 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 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","multiple","native","notified","omitted","opens","personal","possibly","process","productivity","public","reasons","received","recipient","remind","reminder","response","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 4th, 2017",
"ts": "1507139460",
"summary": "To help promote 60 Mac Tips: Volume 2 , I m running a giveaway. Six winners (drawn by KILLOTRON Giveaway Robot X 1 ) 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 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 s been updated as well. Tips that didn t work anymore have been replaced, and tips that changed have been updated. So that s 120 Mac tips from a couple of pros 2 . 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 m told). If you can 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 mon. 3 Here 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 t forget to share . Please and thank you! He got an upgrade this year. Facial recognition or something. I m going to just go ahead and call myself that. Forgive my lack of Minnesotan humility. It also doesn t increase your chances of winning, because I hate that. No share to enter crap.",
"keywords": ["brett","david","field","guides","ibooks","macsparky","sparks","terpstra","vimeo","android","facebook","facial","field","forgive","giveaway","guide","killotron","macsparky","minnesotan","monday","robot","share","sorry","twitter","vimeo","volume","volumes","winners","access","ahead","almost","amazing","announcement","anymore","automatically","because","brilliantly","bundle","chances","changed","clarity","cleared","country","couple","database","deleted","device","doesn","download","drawing","duplicate","email","ended","enter","entries","entry","exact","first","forget","format","giveaway","going","hours","humility","ibooks","icloud","increase","installment","lower","missed","myself","notified","notifying","occur","options","person","phones","prefer","promise","promote","random","receive","recognition","replaced","return","running","second","series","share","statistically","storage","streaming","thank","titled","universal","updated","upgrade","users","value","version","versions","video","volume","winners","winning","years","yesterday"]
},{
"title": "60 Mac Tips: Volume 2",
"url": "/2017/10/03/60-mac-tips-volume-2/",
"tags": ["writing"],
"date": "Oct 3rd, 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 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 s Mac Power Users to talk about creating the book. They 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 re someone who buys a book like this, you have the curiosity. We 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 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 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 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 28th, 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 26th, 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 m excited it s finally available to the public. I 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 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 s fast and packed with amazing features you don 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 t had a single issue with it in MMD Composer 4. There are a few syntax changes to note . Most of them won 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 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 adds some other great touches as well, including",
"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 19th, 2017",
"ts": "1505829720",
"summary": "So any and all users who 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 m running High Sierra, too. I had almost given up on a fix. Notational Velocity 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 s running fine. If you re already on High Sierra, you ll have to download directly (below), and for everyone else you should see the automatic update and I highly recommend using it. 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 More info 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","highly","incorrect","issues","level","looked","nvalt","people","point","positive","preview","recommend","referenced","remix","responsible","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 18th, 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 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 ve been using it in beta for long enough that this isn t a huge deal, but despite Atom having a larger developer community, I ve stuck with Sublime primarily because it s stable, it has every package I need, and it 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 ve taken to creating most configuration files in YAML instead of JSON. Parsing it from a bash script has always been a pain, though 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 ve already saved over $1000 over taking my aging TT to a mechanic. (And that 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 14th, 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 11th, 2017",
"ts": "1505145120",
"summary": "Last month John Gruber mentioned a widespread complaint about Safari 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 s not as clean as Chrome s built in solution, but if the lack of favicons is one of few things keeping you from using Safari, it 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 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","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 5th, 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 t published yet, but it is now . There s a good discussion of Ulysses, this video course, and a good talk about Ulysses change to a subscription model. If you 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!",
"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","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 30th, 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 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 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 More info",
"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","hovering","itunes","itself","jacket","length","macos","major","making","measures","meter","mostly","needed","others","pause","placements","player","position","possible","project","recall","released","retina","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 29th, 2017",
"ts": "1504012260",
"summary": "If you like Ulysses, the powerful writing app for Mac and iOS, or even if you re trying to figure out why you should like it, there s good news today. Shawn Blanc and The Sweet Setup have released a new video series called Learn Ulysses . It s a series of 7 video tutorials to walk through all of Ulysses 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 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 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 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","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 24th, 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 22nd, 2017",
"ts": "1503426600",
"summary": "Let 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 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 re starting to work on iOS as well), but I don t think it s a widely accepted phrase yet. So I 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 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 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 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 m not ready to publish this last script yet, but I thought I 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 s really no point in directly writing to this attribute anymore. It s easiest just to change the tags. Remove Blue and add Orange. Writing a color to a file, e.g.: will simply apply the Blue tag to the file automatically. So just apply",
"keywords": ["xattr","apple","berry","color","finder","github","james","mavericks","often","orange","plist","reading","remove","trying","writing","above","accepted","address","almost","anymore","apply","array","associated","attribute","attributes","automatically","basic","became","because","binary","breaks","building","called","casing","change","checking","classes","cleaning","closing","color","colors","command","commas","consistent","containing","converting","dates","default","dependencies","devices","different","directly","dirty","display","doing","easiest","elements","eventually","excellent","extended","external","files","first","fixing","fledged","format","found","gives","going","gotten","handful","handle","having","headline","ideal","including","interest","label","labels","little","longer","looking","looks","making","manipulating","merging","messy","metadata","modify","moving","names","nitpicks","nomenclature","obliterate","output","parse","passed","phrase","plist","pluralization","point","project","publish","punctuation","ready","recommend","remove","replacing","response","results","script","scripting","scripts","shelling","showing","shown","simple","simply","snippet","solutions","sometimes","spacing","split","started","starting","stored","string","strings","supporting","synonymous","system","taxonomy","techniques","think","thought","tricks","useful","using","various","version","vitag","weekend","while","whole","widely","widespread","working","write","writing","written","wrote"]
},{
"title": "Web Excursions for August 21, 2017",
"url": "/2017/08/21/web-excursions-for-august-21-2017/",
"tags": ["bookmarks"],
"date": "Aug 21st, 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 t been updated for a while, and this new one is pretty sweet. Superhuman Ok, so there 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 re curious, get your name on the list. Raindrop.io I 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 m only drinking one cup of coffee in the morning these days 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","impressed","interested","interesting","later","looks","manager","morning","necessity","notes","partnership","played","playlist","playlists","plugin","plugins","recent","reliably","replacing","repository","resource","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 18th, 2017",
"ts": "1503059400",
"summary": "Here s a quick script I swear I ve written before but couldn 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 s something I ve run into in the past. I usually pull up a calculator, which is annoying. There s probably a simple Unix way to do it that I 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 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 ll figure it out. Here 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","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 17th, 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 16th, 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 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","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 16th, 2017",
"ts": "1502884800",
"summary": "Creating custom styles for Marked 2 is pretty easy if you know CSS. I ve started work on building an actual templating system, but it hasn t come to fruition yet. In the meantime, I present styleStealer, a bookmarklet to make grabbing a site 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). Click the bookmark. When a blue bar appears across the top of the page, you 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 ve selected the new style in the style picker on a preview window to check it out! It 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 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 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","click","creating","hovering","javascript","markdown","marked","output","preferences","recent","safari","selectors","standard","style","watch","webkit","across","added","alone","appear","appears","applied","applying","article","awesome","below","bookmark","bookmarklet","bookmarks","building","called","changes","check","chosen","click","closest","comment","computed","contact","contained","container","contains","content","creating","cross","cruft","custom","design","detect","difficult","display","domain","easily","editable","elements","entire","extra","favorites","formatted","fruition","function","grabbing","great","header","heredocs","holds","imports","injects","inspection","magically","match","meaning","meantime","mostly","notes","others","outline","pages","parse","parsing","paste","picker","prefix","preview","previxed","process","reads","relatively","relevant","reload","removed","replicate","requests","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","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 14th, 2017",
"ts": "1502715600",
"summary": "I thought I d share the script I 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 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 t what I was getting paid for. Anyway, when I 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 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 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 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","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 10th, 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 9th, 2017",
"ts": "1502290320",
"summary": "I m at the CMD-D conference in Santa Clara this morning. I m actually a couple hours early because my body is still on Central time. So I figured I 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 s an example: So in my system , there s also a tag, in this case it would be . (Context tags are the only tags I capitalize, and I don t know why, but I 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 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 d searched . The file will also show up for the search and . It also makes autocomplete work more efficiently for you. Once you 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 m using these grouped tags, I start the tag with a colon as well: . It doesn t affect Spotlight s ability to search in any way, but helps keep my nested tags together in the list. This system doesn 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 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 s not a necessary tool. You could always just use all of those tags separately and run AND searches to combine them. I like the shortcut, though,",
"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","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 8th, 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 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 The table of contents is generated automatically from headlines in the document. It won t show up if there aren t any headlines. But any number of ATX () or Setext (/) headlines will create a hierarchical navigation. It 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 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 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 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 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 headlines in the inserted table of contents. The inserted TOC",
"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 7th, 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 ve discussed tagging (probably every time I ve ever been on the show), it 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","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 2nd, 2017",
"ts": "1501691880",
"summary": "Ever since I wrote Slogger , I ve been working toward a more quantified self. I m really bad at correlating events in my life beyond a couple of days. Did the bad night s sleep last week lead to eating things the next day I normally wouldn t, which led to increased stress and decreased physical activity over following days, which resulted in the way I m feeling today? Now that I m actually healthy enough to notice these things, I really want to know. I want all of that data, but I m not great at recording it in the moment, and often forget things by my end-of-day check-in. That 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 s been missing, though, is the ability to record very fine-grained personal data. I 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 s simpler to statistically analyze is something I haven 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 s not exactly what I planned for this app in my head, particularly because I can t easily quantify each tag. I can add coffee, but if I want to mention more than one coffee, I have to add new tags for 2 coffees, 3 coffees, etc., but the implementation is simple enough that",
"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","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 1st, 2017",
"ts": "1501605840",
"summary": "The next update to Marked 2 (2.5.11) is almost ready. It s a free update, and should be ready in the next week (maybe two). If you 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 ve made a lot of low-level changes to improve efficiency in this release, I d be glad to have some beta testers. If you re interested, please contact me and I ll hook you up. In the meantime, here 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 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 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 s replacing Antique. It s based on Edward Tufte s work (and Dave Liepmann 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 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. These can be nested, so included files can include more files. It can also be",
"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 28th, 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 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","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 26th, 2017",
"ts": "1501074000",
"summary": "Now that I have my Hyper key working with Karabiner Elements , there s one other feature I 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 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 ve been using a Matias Laptop Pro keyboard and it doesn t have a convenient one built in. There 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 t press while typing quickly. The Tab key as modification that makes the ↖/↘/⇞/⇟ keys work can suffer the same issue, but it s less likely I ll have accidental simultaneous keystrokes. It s worked fine thus far with the default setting of 1000. As a bonus, Tab works as Fn any time it 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 ll have to do it one at a time, clicking Add rule each time. They re separated so that if you don 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 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 25th, 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 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 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 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 s handy to me. I m not sure it s of much use to most people, but I thought I 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","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 24th, 2017",
"ts": "1500917940",
"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Transmit 5 This update of Panic 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 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 t have an immediately useful application for this, but I see possibilities 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","itunes","implemented","improvements","including","interestingly","local","mentioned","ohoachuck","partnership","possibilities","promo","reliably","remote","represents","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 19th, 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 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 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 s a copy of the slides from the talk . I ve learned not to put too much info into slides, so without me talking it s less interesting. If I can find a video of the whole shebang, I 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 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 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 14th, 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. 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 s web excursions are some of my current favorite (and most-used) Chrome extensions. I try a lot of them, so we 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 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 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 t even know what to search for in the GitHub quick switcher. HTML5 Video Keyboard Shortcuts Add keyboard navigation (play/pause,",
"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","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","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 12th, 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 6th, 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 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 ve been using on my own for a while. It s called the ExtraInfo Service, and is basically a reimagining of the ExtraInfo script for TaskPaper . I just wanted it to work everywhere 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 s linked back to your current document. If it doesn t already exist, it creates it for you, complete with placeholder variables so it s ready to rock, and if it does exist it will just jump straight to editing it. It 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 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","ithoughtsx","information","keywords","linked","links","multi","notes","nvalt","picture","placeholder","posting","project","projects","ready","reimagining","remove","rough","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 3rd, 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 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 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 s a brilliant solution. Best Headphones for Sleep I 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 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","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 29th, 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 re willing to lose, so I started small. Really, really small. $5 was what I didn t want to lose. These 5 bucks turned into over $500 in roughly three months. (If you don t believe me, check out my public portfolio .) This means that I doubled about every 20 days. I can 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 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 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 m open to your questions, even if they re not",
"keywords": ["bitcoin","cryptocurrencies","advanced","andreas","beginner","bitcoin","brettterpstra","capitalization","charts","cryptocurrency","cryptocurrencies","ethereum","industry","liecoin","market","poloniex","ripple","technically","thanks","trading","zeitler","amount","annotations","answer","anyone","available","believe","blockchain","books","broad","bucks","cannot","carefully","chapter","chapters","check","checkout","claim","consume","containing","courses","crypto","cryptocurrencies","cryptocurrency","decide","depth","directly","discount","divided","doubled","downloaded","earned","easily","especially","everything","excite","field","frustrated","gains","general","gives","giving","group","growth","guarantee","happening","hesitate","important","indicators","interest","investigate","investments","leave","links","little","markers","mentioned","money","myself","necessary","numbers","overview","parts","people","picked","portfolio","public","quality","questions","recommended","related","right","roughly","since","small","sponsoring","sponsorship","stage","started","subscriber","think","tools","topic","topics","touch","traders","trading","traditional","trusted","turned","typical","unprecedented","users","video","videos","websites","where","willing"]
},{
"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 22nd, 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 20th, 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 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 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 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 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 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 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 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 t use this for coffee. It would probably be great for it, but for me it s a great spice mill. A large-radius crank, friction based assembly (not a lot of threading to slow things down), and it helps",
"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 15th, 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 m elaborating here on the full configuration. The first thing you need is Karabiner Elements , and you need what is currently the bleeding edge version, 0.91.3. If you don 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 s running, there 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 t have any other settings in Karabiner (e.g. Simple Modifications beyond one that, say, maps caps lock to something for Hammerspoon ), you can overwrite the contents of the karabiner.json with the code below. If you do have other settings, you ll need to follow different directions, so skip to the next part. Here s the chunk that you 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 function as normal. If you have issues, be sure to check that in System Preferences- Keyboard- Modifier Keys you ve disabled Caps Lock (set it to No Action). Note that if you use multiple keyboards (like the internal laptop one and an external Bluetooth one), that screen will have a dropdown where you ll need to set this for each available keyboard. Also ensure that you don t have any simple modifications set in",
"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","system","yesterday","aaccf","added","adding","allow","alone","apparently","array","assign","available","basic","below","beyond","bleeding","boastr","bracket","breaking","brettterpstra","brightness","built","button","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","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","rsquo","rules","running","screen","selected","settings","shift","shortcuts","sierra","significant","simple","snippet","source","srcset","standalone","startup","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 15th, 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 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 s productivity and tracked time.",
"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","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 14th, 2017",
"ts": "1497458760",
"summary": "If you saw my note in yesterday s web excursions about Karabiner Elements adding the necessary tools to recreate the Hyper Key , you might have gotten excited. If you 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 t working. Go into Karabiner elements and hit Check for beta upgrades, and you 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 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","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 13th, 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 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 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 s also a web version . Declawing: A new study shows we can t look the other way This isn 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 ve always opposed declawing cats",
"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","hesitated","index","information","integration","learned","loved","macos","movies","music","normal","oppose","opposed","particular","partnership","people","playing","popular","practice","procedure","process","rewind","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 9th, 2017",
"ts": "1497030600",
"summary": "If you missed out, go pick up a copy 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","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 8th, 2017",
"ts": "1496919600",
"summary": "Thanks to PDFpen 9 for sponsoring BrettTerpstra.com this week! 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","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 6th, 2017",
"ts": "1496774520",
"summary": "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 Übercast as well as a guest writer here . He 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 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 s a veteran producer of educational materials) and covers everything you 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 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 5th, 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 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 t tried it, and I ve gotten quite used to the fact that my phone is not going to be a one-handed device anymore, but I 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","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 31st, 2017",
"ts": "1496263440",
"summary": "So I ve been conducting an experiment: using TextExpander for what it was originally designed for. I 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 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 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 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 m in the adoption phase, but I 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 ll remember has been interesting. I 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 ve shortened. I m not ready to publish a group of these yet. More than anything, I m just putting the idea out there and looking for ideas a feedback on it. Here are a couple of notes. I 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 t real words but are as short as possible. I basically just type the word way too fast and see what my brain picks out as the primary letters. All of these are in their",
"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 30th, 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 d never bothered to explore it. I m impressed, this is a great alternative to PowerPoint, especially if you 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 s what it really means, and also why it 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 s A User s Guide to the Z-Shell. The 100% Correct Coding Style Guide I thoroughly enjoyed this piece. If you ve ever argued about spaces vs tabs, well, It took me years to find the right answers but I ve finally done it and it turns out the answer is 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","holding","hyper","impressed","launch","learn","maybe","measure","meters","often","partnership","percentages","piece","platform","presentations","pressing","reliably","right","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 25th, 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 23rd, 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 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 s been a great experience, especially since it s so easy and seamless to implement. Since then they 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 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 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 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","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 17th, 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 s on August 9th (with an optional scripting bootcamp on the 8th) at the Santa Clara Convention Center. Registration is open now. I 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 s even a cool Facebook CLI I hadn 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 re in Kyiv . Placeit (with video) I 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 ve mentioned it, they 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 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","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 15th, 2017",
"ts": "1494872640",
"summary": "I 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 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 t respond to you, especially, you re basically throwing a support request into the wind, and potentially causing serious damage to an app s credibility 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 d like the app if it weren 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 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 re having serious complaints, and one star reviews are left out of rage or offense. Mixing these varying interpretations means that it 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 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 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 4-star rating and update it when the app improves. If a developer rips you off, or",
"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","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","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 11th, 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 10th, 2017",
"ts": "1494448080",
"summary": "Alternate title for this post: Fungyes . You ll get it in a second. If after reading this you re still unsatisfied with the title, please provide your suggestions in the comments 1 . Make sure you read to the end to get the morel of the story. Again, you ll get that in a sec. I reconnected with an old friend recently. We 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 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 d be honored to work with, anything that sounds profitable, whether monetarily or emotionally. Lately I ve subscribed to the idea that saying yes to something means saying no to something else. That s not my idea, I 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 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 t at all intentional. I 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 s how that could go wrong, or here s a list of things that would be less likely to suck ), I just started saying yes. Yes, I ll go to that show with you. Yes, I d love to have that couple over for dinner. Yes, I 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 t find the morels we were ostensibly looking for, but I learned what Pheasant Back Mushrooms (Dryad s Saddle) are and how to cook them . And that I liked them. I got caught up with a friend I d become disconnected from and realized I should have stayed in touch. With a lot of",
"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","badly","because","bookstore","bummer","caught","certain","chance","changing","children","clearly","coffee","comedy","comments","concept","concerts","couple","dinner","disconnected","doesn","eating","emotionally","endeavors","enjoy","enjoyable","enriching","everyone","excitement","exciting","expectations","experiences","figured","first","folks","found","friend","frustration","fungus","generally","genius","getting","going","great","grumpy","guess","habit","habits","habitually","happen","happens","hated","having","hiking","historically","holding","honored","hours","hunting","imagined","inconvenient","increase","instinctively","intentional","interested","interesting","involved","itself","jumped","language","later","laundry","learned","learner","learning","leave","liked","likelihood","likely","looking","losing","makes","making","mediocre","meeting","message","mildly","minute","mistakes","monetarily","morel","morels","mushroom","mushrooms","myself","notes","optimist","ostensibly","outlet","overall","parties","pause","people","picked","plenty","poorly","potentially","price","process","productivity","profitable","programming","reading","realize","realized","recently","reconnected","reflect","regret","right","saying","searching","second","section","seemed","sense","sharing","situations","small","social","sometimes","sound","sounds","stage","started","stayed","stopped","story","subscribed","successes","suggested","suggestions","surprising","tactile","taken","taking","talking","thankfully","theme","think","thinking","thought","through","times","title","tomes","topic","touch","trail","turned","turning","types","uncomfortable","unsatisfied","unusual","waiting","walking","wanted","weather","weight","while","wondering","working","worry","wrong"]
},{
"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 4th, 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 s the World 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. Right now SYC",
"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","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 2nd, 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 s a javascript library for playing Apple s Live Photos on the web? It has a full API for customizing controls and playback options. I m not certain I ll find anything useful to do with it, but smart move on Apple 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","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 27th, 2017",
"ts": "1493309880",
"summary": "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 ll be presenting! I m presenting on Spotlight. All the things you don t know about Spotlight and how it can make your workflow and everyday life on your Mac smarter, faster, and more fun. There 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 s Midwest Mac Mingle and a complementary Macstock 2017 pint glass. And here s a special deal 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","iphone","includes","including","interest","learned","lineup","loved","nearly","people","photography","pitched","podcasters","premium","presentation","presenting","registering","relatively","renewed","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 24th, 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 re not familiar with affiliate linking, it 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 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 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 s enough to notice. On an average month, I 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 s now $75. And the average post, even with MacStories traffic, earns $20 to $30… which is now $10 or less. It s a drastic cut to mention in passing just one week before it takes effect. Most people don t make significant income off affiliate linking, but it doesn 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 t make much of a cut on things that don 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 s timeframe runs out. The link still brought them sales, though, and they re only paying out on things they make money on. It s a bit mysterious to me. I can only assume that the investment isn t paying off enough to continue at the 7% level. Plus, people using affiliate links aren t spending anything to do so, so even a huge cut like this probably won t cause any of us to stop doing it. Apple really doesn t",
"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 21st, 2017",
"ts": "1492799220",
"summary": "I created the iTextEditors comparison chart (for iOS text editors, obviously) back in 2012. I 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 ve edited it down to only 78 apps to choose from 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 t mention it frequently, but I do update the chart every time someone submits a form . If you 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 s worth it to make sure you re getting the exposure. If you 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 s being updated regularly (there 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","itexteditors","impressive","improvements","information","keyboard","listed","longer","making","mention","mistake","mobile","omission","possibly","readers","regularly","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 20th, 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 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 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","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 18th, 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 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 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 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 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","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 13th, 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 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 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","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 4th, 2017",
"ts": "1491319500",
"summary": "I may have mentioned my recent deep dive into cooking before. It s been a fun journey, I ve learned a lot, and actually lost a lot of weight on the way (but mostly because of exercise ). 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 ve got it down to a four hour process (most of which is a slow simmer) that I ve replicated a few times now. It s best served with a wide noodle pasta like pappardelle or fettuccine, but if you 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 s a lot of meat. If you re vegetarian, don 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 m pretty sure the effort is better spent making actually good vegetarian food. Since we re on the topic, we ll talk about health for a moment. This recipe involves a decadent amount of salt and fat. I 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 t make any difference. Since I ve lost the weight and started regular exercise, my blood pressure and cholesterol are perfectly within normal range. I m eating drastically higher amounts of fat and salt (and way less sugar) and doing better than ever. I m absolutely not a doctor and am offering no nutritional advice, I 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 ve gone back to it for this final 1 variation. So this is almost traditional. The beef: I don t eat a lot of beef, but when I do I source all of my meat locally. If you can find a good provider of grass-fed beef in your area, it s worth it. This recipe uses only beef, but you can substitute in pork up to 50% of",
"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","endnote","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"]
},{
"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 3rd, 2017",
"ts": "1491246840",
"summary": "I 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 ve also added a new Service to the Markdown Service Tools called Clean Up Smart Quotes. It s rather self-explanatory, but if you 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 ( ) to triple dots. SearchLink v2.3.65 Download SearchLink v2.3.65 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 01/16/24. Changelog Donate More info 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 More info",
"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","invalid","issues","leaving","links","macos","moving","quotes","rather","recent","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 24th, 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 t help it. These are so bad/good that I 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","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 23rd, 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 re ready for the world to see what you do, go with Squarespace . Whether you 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 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 s like nothing else on the web. Squarespace lets you easily purchase a domain , create a website or online store, and connect to Google 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 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 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 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 20th, 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 s time to update the stats for 2017. The results were enlightening to a lot of us last time around, so I 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","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 16th, 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 s common replies are worded by your best writers They re all immediately accessible, and searchable, through simple abbreviations and keyboard shortcuts They 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","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 15th, 2017",
"ts": "1489607160",
"summary": "First, thanks to everyone for the continuous support of The Lab, whether by donation, subscription, or supporting my products. It s meant more to me than you know, and I plan to keep bringing you the kind of crazy tools and tricks you ve clearly come to expect. As a thank you, I 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 s actually where the design started out, on a mug I made years ago. I 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. Thanks for checking them out , and don 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","innovation","jokes","meant","multiple","needs","pleased","point","products","promo","public","published","republished","right","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 14th, 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 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 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","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 14th, 2017",
"ts": "1489531560",
"summary": "Pi Fest starts today! It 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 9th, 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 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 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","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","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 6th, 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 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 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 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","options","overview","palette","partnership","recipient","remote","replacement","rivaling","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 2nd, 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 re specifically designed to keep your and your team 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 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 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 1st, 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 ve been tagging the MP3 files. Not surprisingly, I decided I wanted to automate this process. I wrote PodTagger to scratch the itch. It s based on my own workflow, but it 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","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 28th, 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 ve been wanting to build a podcasting app with a similar feature set, so this is inspiring. Cerebro App open-source productivity booster with a brain An open source alternative to Alfred and Spotlight. It won t replace LaunchBar or Alfred for me right now, but the API is robust and pretty straightforward, so I 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 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 re sleeping automatically, no app to remember to start up when you 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 27th, 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 s Part 4, my top-of-mind iOS picks. It s a lot of apps, and frighteningly only about half of the ones I used/tested last year Billings Pro : My favorite cross-platform time tracking and invoicing app Streak for Gmail : This deserves its own writeup, but it s the best free CRM tool I 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 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 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 m addicted Duet : Addicted on iOS and Apple TV Alto s Adventure : Addicted, iOS and Apple TV Crossy Roads : Super addicted, iOS and Apple TV with multi-player mode Skyward : Beautiful",
"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","hopefully","house","ithoughts","itunes","ideas","identities","image","images","indoor","intelligent","interface","international"]
},{
"title": "Web Excursions for February 22, 2017",
"url": "/2017/02/22/web-excursions-for-february-22-2017/",
"tags": ["bookmarks"],
"date": "Feb 22nd, 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 m not even very familiar with Alexa yet and I m really impressed. The Petter App - Keep track of your pet 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 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","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 16th, 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 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 s productivity and tracked time.",
"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","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 10th, 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. 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 ve got nothing to hide you 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 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 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 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 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 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 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 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 avoid that. It s better to rationally assess your security needs and identify the specific threats that you need to counter. In the world of corporate IT,",
"keywords": ["elijah","security","accidental","capture","commit","compromised","computer","confiscation","context","conversations","corporate","create","device","diagram","draft","eavesdropping","elijah","email","episode","finally","first","fixed","float","fourier","getting","habits","hedgehog","imagine","impact","individual","intentional","malware","medium","methods","modelling","mugging","notebook","notes","object","organise","packet","probability","process","productivity","qubes","research","retrieve","share","shoulder","signal","situation","situations","smartphone","snowden","sometimes","speak","systematic","tablet","targeted","tasks","threat","threats","tinfoil","transform","triangle","voice","workflow","working","write","accept","accidental","account","across","advice","allow","allows","almost","alternatives","analyse","analysing","apply","approach","argue","aside","assess","assessment","associated","assume","attain","author","authoritarian","availability","avoid","background","backup","based","basis","because","before","belief","believe","belongs","between","blogs","border","borders","boundaries","boundary","brain","break","build","calendar","called","cannot","cards","categories","certain","chatter","choose","choosing","cloud","cluster","collaboration","combinations","comfortable","coming","commercial","commonsense","communication","compares","compromise","compromised","computer","computers","conceivable","concept","conduct","confiscation","conflict","consider","constantly","contactless","contexts","convenience","conversations","corporate","correctly","countermeasure","create","created","creativity","credit","cross","decide","decided","decimals","decor","deduced","deeply","defecate","defining","dependencies","developed","diagram","differ","different","difficult","distractions","doesn","easier","editing","effective","effectively","emerging","encrypt","encrypted","energy","enormously","enough","environment","equally","espresso","essential","everything","example","expect","exploit","extreme","extricated","faced","fairly","fantastic","feeling","focused","foreheads","forms","found","friction","frightened","fundamental","gimme","going"]
},{
"title": "TextExpander for Teams: The Productivity Multiplier",
"url": "/2017/02/09/textexpander-for-teams-the-productivity-multiplier/",
"tags": ["sponsor","textexpander"],
"date": "Feb 9th, 2017",
"ts": "1486641600",
"summary": "Thanks to TextExpander for Teams for sponsoring BrettTerpstra.com this week! Then, imagine they re available on the platforms your team is on: Mac, iOS and now Windows. In short, that 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","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 2nd, 2017",
"ts": "1486036800",
"summary": "Thanks to Zengobi, creator of Curio 11, for sponsoring BrettTerpstra.com this week! I 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 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. Here 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","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 24th, 2017",
"ts": "1485287040",
"summary": "Introducing the latest shirt available from my Teespring shop! It s bold and beautiful and reasonably priced. And by wearing some humane text syntax on your chest you 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 s, women s, and tank top versions. There 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 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 proxy 1 )!",
"keywords": ["brettterpstra","shirt","teespring","black","buying","especially","introducing","markdown","paper","pistols","ramones","teespring","wallpaper","adding","address","automatically","available","beautiful","campaign","campaigns","check","chest","collection","colors","continue","dates","explain","forehead","garner","goals","great","humane","humorous","immediate","improved","laptop","latest","little","mashup","nerdy","opportunities","parties","people","priced","printed","property","proud","proxy","reasonably","renewing","shirt","shirts","sticker","stores","support","syntax","teespring","topics","transitive","versions","wearing","women"]
},{
"title": "Web Excursions for January 23, 2017",
"url": "/2017/01/23/web-excursions-for-january-23-2017/",
"tags": ["bookmarks"],
"date": "Jan 23rd, 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 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 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 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 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 The future of web browsers? Opera 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 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 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 ve always liked Speedtest by Ookla, especially on my iPhone , and having it in my menubar is handy. And it 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","hierarchical","highlighting","iphone","image","information","latest","leave","liked","links","looking","macos","making","management","mapping","markup","memorialize","menubar","middle","notes","parenthetical","partnership","player","plethora","poster","powerful","presentation","presenter","productivity","publish","quick","remote","remotely","return","reviews","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 19th, 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 13th, 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 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 s pretty amazing. Finally a valid reason in my workflow to learn Lua. Default Folder X It s taken some time for Default Folder X to regain full functionality since El Capitan, but it s there now and I 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 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 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 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 system monitoring solutions fell behind the",
"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","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","metadata"]
},{
"title": "Web Excursions for January 12, 2017",
"url": "/2017/01/12/web-excursions-for-january-12-2017/",
"tags": ["bookmarks"],
"date": "Jan 12th, 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 12th, 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 9th, 2017",
"ts": "1483988280",
"summary": "Welcome to round two of this year 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 s really nothing from the last version of PS I used (CS6) that I can 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 s pretty amazing. It 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 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 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 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 brainstorming. MindNode also gets a mention, as the",
"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 5th, 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 me 1 . That said, my love of apps hasn 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 t help mentioning them. I ve done this every year since 2011, and they re typically some of my most popular posts (among ones that don t get linked from bigger sites), so I hope you enjoy them. The posts in this year 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 m going to start with what we ll call the obvious list. They re apps I love and absolutely deserve mention, but that I ve talked about enough across my various channels that I probably don t need to elaborate on too much. Any section in this series that contains such apps will have an obvious list. Reeder 3 I 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 d already switched to Reeder and and it 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 ve used Billings and now Billings Pro for all of my freelance and sponsorship invoicing for years. Last year 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. Brainwave Studio This one is new to me. I ve experimenting with binaural beats for a while. After having my ADHD",
"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","amazing","ambient","among","awful","beats","beautiful","because","becoming","began","bigger","binaural","bookmarking","build","calendars","catch","categorized","channels","client","clients","close","communication","compensate","contains","culinary","daily","default","definitely","deserve","desperate","developers","diminished","dizzying","easily","elaborate","elegant","email","endeavors","ending","enjoy","enough","especially","experimenting","fascinating","favorite","features","fixed","found","freelance","frequencies","function","getting","going","great","having","headphones","horrible","indispensable","interesting","invoice","invoicing","isochronic","later","latest","linked","lists","macos","management","mention","mentioned","mentioning","mostly","music","native","newsreader","nicely","nothing","obvious","often","online","parsing","party","picks","platform","pleasant","popular","posts","premium","primary","productivity","products","projects","proliferation","pulse","rating","recently","recipes","refreshed","released","reliable","remains","replacing","search","section","series","serious","services","sessions","settled","shared","shopping","shortcomings","shortly","shunning","significantly","since","sites","somewhat","sounds","specific","sponsorship","standout","standouts","started","stereo","strengths","switched","system","tagging","taken","talked","talking","tired","tones","tools","tracking","tracks","translates","tuned","typically","unusual","updated","useful","using","various","while","workflow","write","years"]
},{
"title": "Mega Snow & Winter Bundle from Feingold Design",
"url": "/2016/12/22/mega-snow-and-winter-bundle-from-feingold-design/",
"tags": ["sponsor"],
"date": "Dec 22nd, 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",
"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 20th, 2016",
"ts": "1482258000",
"summary": "It s not a secret that I 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. Geistesblitz 1 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 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 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 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 t figured out yet if there 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 re bringing in people who 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","series","watch","while","added","amazing","anyone","available","based","became","before","benefits","brainstorm","brainstorming","bringing","button","certain","cloud","collaborative","command","create","default","define","deprecated","devices","different","enjoyable","especially","excellent","exploring","feature","figured","haven","ideas","ideenfindung","implementing","incarnation","instantly","integrations","learn","length","lighting","makes","mapped","mapping","mentioning","notepads","organization","people","possible","productivity","proving","rapid","realtime","recently","recommend","right","secret","sharing","shower","simple","speak","speaking","started","useful","version","watch","waterproof","widget","worth","writing","years"]
},{
"title": "Web Excursions for December 19, 2016",
"url": "/2016/12/19/web-excursions-for-december-19-2016/",
"tags": ["bookmarks"],
"date": "Dec 19th, 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 ve long been using the Glif from Studio Neat for mounting my iPhone on various tripods, and the latest version adds a feature I 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 re looking for a Photoshop replacement, I 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 ve mentioned this iOS keyboard before (Android version available now), but it s worth mentioning again (and it s a winner of a Product Hunt Golden Kitty award). It 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","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 15th, 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 8th, 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 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","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 6th, 2016",
"ts": "1481050200",
"summary": "I blogged about SETAPP recently, and am excited that they ve announced the opening of the public beta . I have some extra tokens available that can guarantee you access to the limited beta. I 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 trick 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 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","momentum","opening","paying","perspective","plans","press","product","providing","public","purchases","quality","receive","recently","regularly","release","risky","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 28th, 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 s that his position was eliminated. It s not a matter of personal conflict, it 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 m one of the many who have been critically speculating about the new MacBook Pro. It s something I don 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 s latest features to schedule due dates in your task lists with a popup date picker. The Linguistic Evolution of Like - The Atlantic People 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 and often. Daft Science by Coins I can t help but post this. I 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 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","highlights","hoped","latest","lists","macos","makes","manydjs","mapping","mashup","mouth","musical","notable","offers","often","partnership","people","person","personal","philosophy","picker","podcasts","popup","ports","position","productivity","quintessential","reality","refreshing","roundup","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 22nd, 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 s going back to $13.99. Content blocks, you say? In light of iA Writer 4 s ballyhooed content block features, I 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 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 ll probably add iA Writers yet another syntax for compatibility as well.) Add in Marked 2 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 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 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 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 improved the navigation for errors, and fixed a few bugs in",
"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 17th, 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 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 15th, 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 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 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","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 14th, 2016",
"ts": "1479161880",
"summary": "There s an update for nvALT available (2.2.7) via nvALT- Check for Updates, or download directly below. It 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 More info 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","hotkey","lightweight","longer","noticed","nvalt","preview","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 14th, 2016",
"ts": "1479132000",
"summary": "Updated: if you experienced a JavaScript compiler error , download the 1.0.1 version below. I 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 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 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 s so much more I ll never remember it beyond what I use often, but I did write it all down 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 More info",
"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","inline","input","interest","language","learning","limited","macro","macros","money","natural","often","output","people","pique","popup","possibility","processed","processing","project","projects","quickly","regular","remember","routines","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 10th, 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 9th, 2016",
"ts": "1478703600",
"summary": "We 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 but the cost added up fast. It 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 s expensive for users and I 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 s called Setapp , and it 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 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 ve been lucky. Apple has featured Marked a couple of times, and it s rankings have remained reasonable over time. However, it s never likely to turn up in a search that doesn t include Markdown, so discoverability for new customers hasn 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 ve already been through the review process on Setapp it 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 m hoping to get sustainable, subscription-based revenue, without having to eliminate my current purchase options. Setapp is",
"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","hoping","included","innately","invite","library","likely","little","lucky","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","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 4th, 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 t schedule enough meetings to really field test them all, but Clara seems pretty slick. Openwhyd I 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 Google Developers Medium If you re a Sublime user who also works in Chrome s DevTools, there 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","overlap","partnership","platform","playlists","presents","productivity","programming","research","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 3rd, 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 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 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 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 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 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 t true. TTL 2.0 was just released, with a brand new Text Mode. It s great for those times you don 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","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 2nd, 2016",
"ts": "1478107680",
"summary": "If you re on the list and haven t heard from me, feel free to check in and let me know. If you didn t win, you can still get a free trial and test out WALTR 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","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 1st, 2016",
"ts": "1478023980",
"summary": "There 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 t even notice it. I sure didn 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 More info",
"keywords": ["changelog","donate","download","markdown","multimarkdown","notational","published","sparkle","updated","velocity","advanced","available","capabilities","contain","corrects","editing","enjoy","handling","happen","little","mistake","multiples","notification","nvalt","people","preview","quick","stuff"]
},{
"title": "nvALT 2.2.5 (123)",
"url": "/2016/10/31/nvalt-2-dot-5-123/",
"tags": ["nvalt"],
"date": "Oct 31st, 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 More info",
"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","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 31st, 2016",
"ts": "1477934700",
"summary": "I haven 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 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 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 ll need to click Trust to install it when Safari lets you know it 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 More info 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","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","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 29th, 2016",
"ts": "1477761360",
"summary": "So here 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 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 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 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","waltr","wednesday","action","added","address","allowing","amazingly","appropriately","aptly","audio","automatically","available","below","blogged","books","brand","buttons","certain","character","classic","clean","codes","collection","connect","content","conversion","converted","device","devices","display","dozens","easily","elegant","email","encoding","ended","entire","files","format","formats","giveaway","handle","handles","handling","iphone","itunes","including","insanely","instantly","interface","license","lifetime","limit","lossless","lucky","maintained","music","named","needed","offers","optimization","randomly","readers","recognizes","released","removes","renaming","ringtones","sarcasm","second","shuffle","songs","strategy","supported","supports","traffic","transferring","upgrade","users","value","video","weekend","while","winners","worth","write"]
},{
"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 27th, 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 ve tried to bill a client, but couldn 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 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 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 t blame us when you see all those hours you spent on Facebook and elsewhere 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 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","hours","itself","making","manual","maybe","multiple","projects","promise","reconstruct","recovering","remember","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 21st, 2016",
"ts": "1477076580",
"summary": "Ecomm.design has provided an exclusive set of User Interface Line Icons as a giveaway this week. It 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"]
},{
"title": "TextExpander: communicate smarter (and save 50%)",
"url": "/2016/10/20/textexpander-communicate-smarter-and-save-50-percent/",
"tags": ["sponsor","textexpander"],
"date": "Oct 20th, 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 and still customize 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","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 19th, 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 ve always wanted. It 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 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 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","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 6th, 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 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 5th, 2016",
"ts": "1475687040",
"summary": "I was a beta tester for TableFlip , an app for editing Markdown (MultiMarkdown) tables painlessly, and I 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 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 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 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","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 3rd, 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 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 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 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 29th, 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 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 s a lot more complex to configure, but I now have full functionality back. Here 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 s what s listed in the example. I had most of my other shortcuts set up through BetterTouchTool and System Preferences, so I 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 t know Lua (I sure don 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 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 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","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 28th, 2016",
"ts": "1475091360",
"summary": "Most of my free projects are the result of solving my own problems, and often get left behind once I m not actively using them anymore. Among the ones I ve used every day for years now is SearchLink . I still consider it the most useful thing I ve ever written. The first part of this post is just to announce a new version, 2.2.3. If you re an experienced SearchLink user, go ahead and download it below. If not, I d recommend heading to the project page and getting a feel for it first. SearchLink v2.3.65 Download SearchLink v2.3.65 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 01/16/24. Changelog Donate More info 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 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 re using SearchLink to generate Amazon affiliate links, you 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. 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 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'","tutorial","twitter","updated","video","youtube","actively","added","affiliate","ahead","album","alternatives","amalb","amalbe","amart","amazon","amsong","announce","anymore","append","apple","applemusic","array","automatically","available","becomes","behind","believe","below","bottom","brettterpstra","changed","changelog","class","config","configuration","conforming","consider","container","conversions","country","create","created","description","diamond","different","dlbox","donate","download","downloads","editor","embed","essentially","experienced","facebook","fathom","figure","first","format","formatted","frameborder","getting","github","gives","grabbing","handles","heading","height","hellip","highlight","highlighter","hoping","https","itunes","iframe","information","intro","language","latest","ldquo","leaving","leveraging","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","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 27th, 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 s one more for you, this one tested by a good number of people already, and hopefully good to go. Thanks to everyone who 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 t available for dynamic linking anymore. After a couple of failed attempts, I think I ve built a static library that will run on any system equalt to or newer than 10.9. Then there s App Translocation. This new security measure in macOS causes some serious issues for apps that update via mechanisms like Sparkle. I m still waiting to learn more, but in the meantime we 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 More info",
"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","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","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 26th, 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 ve upgraded to Sierra and are lamenting the loss of their Hyper Key (because Karibiner breaks in 10.12), here 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 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 t read a lot of comics, but not because I don 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 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 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 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","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 23rd, 2016",
"ts": "1474644660",
"summary": "Update: Even take 2 was a disaster, so the download has been updated to version 2.2 (122). It 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 More info",
"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","helps","hundred","issues","linking","makes","manageable","messages","night","nvalt","patience","possible","preview","questions","released","report","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 22nd, 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 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 s been a slow week of posting here. Much to do. Speaking of, nvALT ran into some trouble with Sierra that I hadn t noticed because I 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 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 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 s the minimum. If you re running something really old and nvALT is currently working for you, don 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 More info",
"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","helps","hundred","issues","maintain","makes","manageable","meantime","messages","modern","moving","noticed","nvalt","nvaltapp","peeled","possible","posting","preview","prompted","questions","release","releases","replacement","report","rewritten","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 15th, 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 and still customize 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","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 12th, 2016",
"ts": "1473707580",
"summary": "Here 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 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","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 8th, 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 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 6th, 2016",
"ts": "1473196080",
"summary": "I 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 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.",
"keywords": ["iphone","reality","virtual","apple","softorino","waltr","benchmarks","capable","details","energy","hacking","handle","iphone","intriguing","invest","makes","playback","quality","rarely","reasonable","reasonably","requires","results","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 5th, 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 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 m enjoying Apple Music 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","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 1st, 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 m not a UX professional, though as a front-end developer it 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 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 t change the functionality. This is especially true of dropdowns. It s possible to build an autocomplete combo field that is still keyboard navigable. It s possible to create a form field with placeholder text that becomes a label when the user starts typing without breaking tab index. It 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 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 s language. Don t break it without providing an obvious alternative, and for the love of jebus don t remove the highlight completely. Stop this. I recently went through a signup process for Minnesota 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. Worse than just being slow and ugly, it could sometimes break when the",
"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","backspace","backspacing","basic","because","becomes","before","behavior","behaviors","between","beyond","bored","break","breaking","breaks","broken","browser","browsers","build","business","button","buttons","caused","causes","change","character","check","checkout","clarity","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","enough","enter","entering","entire","entirely","erase","error","especially","example","expected","experience","expression","fails","fancy","field","fields","filling","fills","filter","finish","first","focus","focused","follows","formatters","formatting","forms","found","front","frustrated","frustrating","functionality","gmail","going","habit","handle","handling","happens","helpful","highlight","hitting","horrible","horses","hyphenate","important","inconsistent","index","indexes","indicating","indicator","information","infuriating","inline","input","insurance","invalid","issues","jebus","judged","keyboard","keyup","label","language","largely","leads","leave","leaves","legal","letting","losing","major","making","manually","message","minutes","mobile","multiple","navigable","navigate","negative","numbers"]
},{
"title": "Web Excursions for August 29, 2016",
"url": "/2016/08/29/web-excursions-for-august-29-2016/",
"tags": ["bookmarks"],
"date": "Aug 29th, 2016",
"ts": "1472479200",
"summary": "Web excursions brought to you in partnership with MindMeister , the best collaborative mind mapping software out there. Notion 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 s like QuickQuestion for your phone 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","image","insight","integration","interface","keyboard","licensing","maker","management","mapping","modern","nifty","options","partnership","phone","photo","productivity","project","providing","query","questions","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 25th, 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 18th, 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 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 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","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 17th, 2016",
"ts": "1471462740",
"summary": "I 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 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 More info",
"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","macos","middle","occur","occurs","offering","parsing","posted","quick","report","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 16th, 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 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 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","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 12th, 2016",
"ts": "1471006800",
"summary": "The Systematic casting call is open for submissions! Here s the TLDR: I m looking for new podcast guests for Systematic and you can submit an intro to the Audiodrop . More details at the end , but here s some backstory. If you ve followed my story over the last year, it s been a rough one. To sum up: I 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 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 m currently back to work and extremely grateful that the nightmare is over. I actually think I 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 ve been in the last decade. As a result, I m working on amping my Systematic schedule back up. This means I need more guests! To sum up the show, I 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. To apply, you can record a short introduction. It doesn t need to be long, just enough to let me know what you do that might be",
"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","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 11th, 2016",
"ts": "1470913200",
"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! Check out the new TextExpander. It 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 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 10th, 2016",
"ts": "1470863100",
"summary": "DevMate recently asked 679 Mac developers about their experiences selling inside and outside Apple 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","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 5th, 2016",
"ts": "1470407280",
"summary": "Web excursions brought to you in partnership with MindMeister , the best collaborative mind mapping software out there. David Chang s Unified Theory of Deliciousness I 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 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 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 Kickstarter A Kickstarter to support building a native macOS client for Slack. There s room for improvement, so I 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","notes","observer","outside","parallels","partnership","perspective","philosophical","platform","podcast","presenting","productivity","programming","quick","range","religion","religious","reminders","reverend","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 4th, 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 29th, 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.",
"keywords": ["chrome","product","safari","phopen","product","store","avoid","based","below","bookmarklet","bookmarks","breaking","browser","button","buttons","change","changed","chooses","click","containing","continue","dropdown","finding","forgiving","handles","installed","links","markup","menus","older","opening","posted","product","proof","quick","quickly","relatively","removing","reoccurrence","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 28th, 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 27th, 2016",
"ts": "1469649060",
"summary": "So first, the good news, I have my meds sorted out and it seems like I m back on track. I m sure I ll talk more about it on Overtired , and will post more of the story here after I m sure things have leveled out. I m primarily directing my energy toward BitWriter (the nvALT update), but wanted a morning project, thus This tool converts CSV style input to MultiMarkdown tables. It s based on Christopher Brandow 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 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 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 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 alone on the line Download the service as part of the Markdown Service Tools package. I 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 More info 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","ignored","input","interpret","justifying","lengths","leveled","linked","little","longest","looks","macos","making","messy","missing","morning","multiple","newlines","nvalt","package","primarily","project","quotes","rebuilt","required","right","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 26th, 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 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 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","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 25th, 2016",
"ts": "1469461080",
"summary": "I have a guest post for you today. It 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 the",
"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 21st, 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 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 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 20th, 2016",
"ts": "1469042880",
"summary": "The Mac Pick a Bundle 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 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","options","price","software","useful"]
},{
"title": "Back from Macstock",
"url": "/2016/07/19/back-from-macstock/",
"tags": ["personal"],
"date": "Jul 19th, 2016",
"ts": "1468936680",
"summary": "I m headed home from Macstock 2016 on an Amtrak train as I write this. It 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 s not huge (yet), but it 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 ll probably be 38. I only know this because my Mac popped up a notification from Facebook s Birthday calendar this morning. It s been a whirlwind few days. Systematic is on a brief hiatus as I 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","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 14th, 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. 50,000,000+ Files Available It may take you an entire lifetime or two to get through DepositPhoto 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 re looking for! Dozens of Different Categories Don t worry, those 50 million plus assets available in the library aren t all from the same category. That would really be nuts! Instead, dozens of today 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","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 13th, 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 ve been designing web pages for years. engageinteractive/front-end-baseplate - _mixins.scss The mixins from Engage Interactive 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","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 5th, 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 s open source on GitHub as well, with versions for iOS, Mac, Windows, Android, and more. Launch Center Pro I 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 m a sucker for anything that makes typography easier 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","homescreen","landing","library","lightweight","makes","mapping","pages","pallete","partnership","privacy","productivity","project","projects","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 24th, 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 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 m a little jealous that Bear from Shiny Frog is ahead of BitWriter on its beta release, but I ve been testing it for a while and it 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 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 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","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 23rd, 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 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.)",
"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","target","tested","whipped"]
},{
"title": "SUMMERFEST: Artisanal software for writers",
"url": "/2016/06/23/summerfest-artisinal-software-for-writers/",
"tags": ["sponsor"],
"date": "Jun 23rd, 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 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 s the time for new plans, fresh projects, and great new ideas. Whether you 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 22nd, 2016",
"ts": "1466610180",
"summary": "I ve used SaneBox happily for a couple of years now. It 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 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 s been added. This makes it easy for me to add OmniFocus capabilities to Spark, which it 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 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 s Macworld 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","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 20th, 2016",
"ts": "1466452020",
"summary": "Admittedly, my publishing pace has been down for a while, but I 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 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 formatted 1 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 t exist. In the starter note I 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 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 m ready to take it to the next stage. When I m ready to start working on a post, it can go one of two directions. If it 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 whether it s a tutorial, project description, or a review it goes into a mind map for further brainstorming. I love iThoughtsX (and iThoughts HD on iOS) for this. I can just paste the Markdown bullet list from my",
"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","endnote","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"]
},{
"title": "Shimo: the #1 VPN client for Mac",
"url": "/2016/06/16/shimo-the-number-1-vpn-client-for-mac/",
"tags": ["sponsor"],
"date": "Jun 16th, 2016",
"ts": "1466074800",
"summary": "Thanks to Shimo for sponsoring BrettTerpstra.com this week! It 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 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 everything is possible with Shimo 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 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 14th, 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 s delayed quit feature to any apps on your Mac. Introducing DeepText: Facebook 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 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","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 9th, 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 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","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 8th, 2016",
"ts": "1465405920",
"summary": "While it 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 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 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 t familiar with CriticMarkup to send you a revised file, and then easily see and handle the changes they made. Another side",
"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 7th, 2016",
"ts": "1465319520",
"summary": "The developers will be emailing the winners directly with their licenses. If you don 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","unlock","winners"]
},{
"title": "Still my favorite iPhone accessory",
"url": "/2016/06/07/still-my-favorite-iphone-accessory/",
"tags": ["hardware","iphone"],
"date": "Jun 7th, 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 s still the handiest iPhone accessory I 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 d expected it to wear out faster, and had ordered a few with the expectation of needing to replace it every few months. It s every bit as useful now as it was then. It doesn 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 s in your change pocket, but there s really no inconvenience factor. The convenience is amazing, though. In my bathroom there 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 t move. I can toss it on my dashboard or leather seat in the car and it stays in place. It doesn t slide, but it 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 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 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","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 6th, 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 t worry, these will still apply to BitWriter! Where s the App for That? Fixing App Store Discovery John Voorhees offers a 4600-word piece detailing the shortcomings (and potential fixes) of Apple 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 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","notes","nvalt","offers","partnership","piece","potential","presentation","prompt","redundant","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 3rd, 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 26th, 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 s outbox for a short while after you 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","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 25th, 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 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 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 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 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 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 m hoping to incorporate this into Marky to get better table conversions. Apple Music Affiliate Program FAQ Affiliate Resources If you 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","nerdy","nylas","objects","offers","options","panned","partner","partnership","penny","popping","price","queries","reasons","released","responsive","rhythm","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 19th, 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 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 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","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 18th, 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 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 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 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","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 17th, 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 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 t cost the people who click your link anything, and can be a good side source of revenue if you 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 re working in. Associate s extension also adds the ability to generate affiliate links from within Amazon 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 s currently $4.99 US, and as soon as Apple approves the bundle, you 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","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 12th, 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 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 11th, 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 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 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","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 6th, 2016",
"ts": "1462548900",
"summary": "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 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 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 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 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 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 t indicate any noticeable latency in the process. I can 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","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 3rd, 2016",
"ts": "1462302480",
"summary": "I 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 up 1 . 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 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 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 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 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 ve been able to replicate it since then, but it takes about an hour of exercise to get two hours of work, so it 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). Yoga wasn t easy for me to get started with",
"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","asked","awkward","before","began","beyond","bluffs","boring","brain","break","brings","carry","center","changes","class","classes","classmates","clear","clocked","competition","completed","confirms","couple","creator","decided","desperation","diagnosis","distance","doing","effective","elapsed","encouragement","encouraging","enough","exercise","exercising","explore","extending","farther","feeling","fifteen","first","flexibility","flowing","focus","forests","fortune","found","friend","front","games","getting","girls","going","gotten","great","handle","having","helped","helpful","hikes","hiking","hopeless","hours","however","ideas","idiot","instructors","issues","judgmental","keeping","knees","lasted","lifestyle","living","local","looking","maintain","makes","mentioned","middle","miles","minutes","myself","needed","observing","parted","physically","plains","plans","plenty","poetry","point","pounds","primal","psychiatrist","pulse","reading","replicate","requires","right","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","wellness","where","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 28th, 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 t received a reply. What s the best way to react in this case? Email Tracking, MailButler 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 t, it 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","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 27th, 2016",
"ts": "1461762000",
"summary": "Updated: Dr. Drang pointed out that the original functions were mostly working but flawed. I 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 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 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","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 26th, 2016",
"ts": "1461680400",
"summary": "Here 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 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:",
"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","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 21st, 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 20th, 2016",
"ts": "1461163440",
"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. HoudahGeo 5 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 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","pages","partnership","photo","powerful","providing","reliably","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 19th, 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 15th, 2016",
"ts": "1460732400",
"summary": "For your Friday design pleasure, here 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","transparent","under"]
},{
"title": "PDFpenPro: Complete PDF Power",
"url": "/2016/04/14/pdfpenpro-complete-pdf-power/",
"tags": ["sponsor"],
"date": "Apr 14th, 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 13th, 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 s web scraper. I d like to incorporate this into Marky , but the cost wouldn 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 re a Slack or IRC user, you 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","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 12th, 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 m a long time user and lover of Smile 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 s great news that I 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 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 re excited about (but can 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 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 be available (and supported) on a continuing",
"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","mistake","model","monthly","offer","opened","platform","platforms","podcast","possibilities","possible","pricing","promise","rather","regularly","release","relevant","repetitive","response","retrospect","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 12th, 2016",
"ts": "1460473200",
"summary": "I m a strong believer in redundant, excessive backups. I 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 and the one that s turned out to be the most important in cases of severe data loss is a good cloud backup. I 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 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 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 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 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","monthly","mount","multiple","night","options","performance","performing","periods","redundant","regardless","reliable","reporting","restore","restoring","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 6th, 2016",
"ts": "1459959600",
"summary": "So you may have noticed an extreme lack of posting in March, and it s already creeping into April. I don t have much to recap in this recap post, so I thought I d explain why. A TaskPaper 3.0 review The eclectic soundtrack of an aberrant mind , a personal piece on the music that 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 ve had a few glimmers of hope since then, but nothing that stuck. With my ADHD completely untreated, I 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 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 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 t carry any weight, Turns Out , 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 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 m currently doing a second trial of Strattera. It s has been mostly fruitless thus far, but it s my best hope right now, so I 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 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 by all measures a successful career of my choosing. The clinical testing would cost me $1,000 out of pocket, and had no guarantee of changing my situation regardless of the diagnosis. Nine months of being unable to complete projects",
"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","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","schedule","second","senior","series","shaped","since","situation","sobriety","soundtrack","sponsors","stimulants","struggling","stuck","subscriptions","substance","successful","successor","support","system","testing","thought","through","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 30th, 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 s updated his tutorial to work with ASUS N66* routers, so if you 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 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 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",
"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","hundreds","integrating","interested","items","library","lists","monthly","moving","multiple","navigation","offers","okaynav","okayest","partnership","pulldown","ramifications","recent","responsive","rolling","routers","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 28th, 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 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 s 2.5.5 on both.",
"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","endnote","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 24th, 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 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 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","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 16th, 2016",
"ts": "1458156780",
"summary": "A quick search on this blog will reveal I 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 s a complete rewrite for a new era. TaskPaper 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 s this separation that I love about it. The format hasn 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 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 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 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","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 15th, 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 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 s that simple. Upgrading to Paper Ben Elijah details why and how he s switching from his task management app of choice to a (slightly) less digital (and more secure) world of productivity. An Indie s Guide to the Press Partly in response to a great post from Rene Ritchie , this is Chris Herbert 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 s a command line utility, but there 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","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 10th, 2016",
"ts": "1457641020",
"summary": "Sometimes I think I 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 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 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 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 s lists be the same. Consider this our first date, and I m telling you all about me, except I m not attempting to not scare you off. Gimmie Shelter 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 m a purist. Or something. Like many songs in my life especially songs before my time I didn 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 really hear it and adding the context of the history of the Vietnam era helped me understand why it s been such a mainstay in popular movies and media, and proclaimed one of the greatest songs the Stones ever recorded. Ain t No Sunshine Bill Withers (Just As I Am - 1971) Wonder this time where she s gone Wonder if she s gone to stay Ain t no sunshine when she s gone And this house just ain t no home Anytime she goes away I don t think I need to say much about this song. It s hauntingly beautiful, in natural minor with a string arrangement by Booker T. Wither 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 to see him inducted into the Rock and Roll Hall of Fame last year. Perfect Day Lou Reed (Transformer - 1972) The lyrics to this song can be",
"keywords": ["metallica","songs","soundtrack","against","american","anytime","apple","arthur","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","above","absorbed","acoustic","action","addiction","addictions","adding","aftermath","aggressive","album","almost","amazing","another","anthem","anytime","anyway","appreciate","appreciated","appreciation","approach","apropos","arrangement","attempting","backing","backup","bands","barely","beats","beautiful","became","because","before","began","belongs","between","bluegrass","blush","bootleg","brain","brash","build","called","cappella","captured","careless","casualty","ceiling","chamber","changes","chaotic","check","childhood","chord","classical","clicked","coffee","collection","college","combination","comforted","coming","comprehensive","context","correlated","cover","covered","covers","dancing","debate","decade","decades","demos"]
},{
"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 10th, 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 9th, 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 re writing about? This site has thousands of SVG and PNG versions of company logos. That s way easier than digging into a company homepage to extract a mediocre-resolution image 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 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","homepage","identify","image","images","imaging","insights","logos","management","mediocre","mobile","needed","objects","optimal","partnership","project","querying","redesigned","reliably","resolution","responsive","right","robots","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 7th, 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 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 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","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 3rd, 2016",
"ts": "1457006400",
"summary": "Thanks to 1Password for sponsoring BrettTerpstra.com this week! I ve been using 1Password since before it was called 1Password, and I wouldn t want to work without the security it provides. I 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 s a bad idea to rely on the password you 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 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 t just about generating gobbledygook passwords 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 which includes everyone in the company, even the developers and co-founders! 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","mouse","nothing","online","panic","partner","passport","password","passwords","payment","people","personal","products","provides","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 1st, 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 re using Slogger , it 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 ve ever written. Recaps are a quick, curated summary of each month 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","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 28th, 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 ve always loved MSP, as far as airports go. I ve spent some time there (I know which gate the rolling beds are at), and in my experience it s one of the best airports in the country to be stuck at for any extended period of time 1 . 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 s still a good chance you 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 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 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 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 s a 96% chance it won t roll into the next stall. 2 In terms of a public restroom, it s complete privacy. I was never a big fan of",
"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","endnote","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"]
},{
"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 26th, 2016",
"ts": "1456516800",
"summary": "Here 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 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 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 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 ve been using since before 2015, but given their daily usage last year, I think they 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 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 comfortable band have lasted twice that long and are",
"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","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","searchlink","secondhand","shuttle","skinny","sleep","souls","stackexchange","steve","stretchlink","stuff","suffice","systematic","terminal","warren","waterproof","acquired","adding","affiliate","alone","angel","answers","anyone","anywhere","astounds","author","authors","automatic","automatically","based","became","because","before","blast","books","browser","bunch","cable","category","chains","cheat","check","clean","cleaned","click","clipboard","comfortable","computer","cooking","covers","cryptic","curious","cutting","daily","decade","decades","describe","designed","detail","development","different","direction","dishes","doing","double","earlier","editing","edition","editor","elegantly","ended","enjoy","enjoyed","episode","episodes","especially","everything","expected","extension","fabric","fascinating","father","favorite","favorites","feature","fettuccini","fiction","finish","first","formats","friend","going","grade","guests","handles","happen","haven","headband","headphones","highlights","hilarious","homemade","hoping","iphones","itunes","ideas","important","installment","invest","irreverent","issues","items","lasted","later","latter","lengthen","linguini","linking","links","listening","lists","little","local","looking","losing","loving","lyrics","mdless","mentioning","midwest","minded","missed","missing","mostly","multiple","newer","noodles","notes","novel","nvalt","offensive","offered","official","older","others"]
},{
"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 26th, 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 25th, 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 ll find on DevMate 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 such as like RealMac and Smile Inc. 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","nothing","originally","outside","perks","platform","plenty","popular","reporting","revenues","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 24th, 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 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 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 s list of OS X-specific commands . How to Secure Your WordPress Blog/Site A comprehensive guide to hardening WordPress installations against attacks. I m not using WordPress these days, but I ve had a lot of experience with it and this is a great resource. I m headed to Macstock in July, and I 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","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 23rd, 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 d just had, and the combination of light sleep and verbalizing it made it stick with me in full. I don t listen to a lot of pop music, but am always intrigued by cultural trends, including the area of pop stardom. I 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 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 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 s a nice lady. I don 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 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 22nd, 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 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 ve built workflows that allow me to continue working and have those tasks ready to go when I get back to my desk. I 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 ve actually found the tools built into Apple 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 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 t much fun if you have to pause in the middle of a run, so it s one of the few I play that I actually have to sit down and make time for. It s great on the Apple TV as well. SketchParty TV When friends or family come over, this game is always requested (I think it s why my parents bought an Apple TV). A multiplayer game of Pictionary 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 s fun either way, and there s a multiplayer version for Apple TV ( SongPop Party ) that I highly recommend for any 2-4 player setting. 1010! This Tetris-ish game is insidious. It s the",
"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 18th, 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 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 in real-time 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 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, 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": ["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 17th, 2016",
"ts": "1455734700",
"summary": "Ok, so it s the middle of February, 2016 and I haven 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 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 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 t think I opened Apple s Calendar app once. Quip Quip.com released a Mac app. It 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 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 m listing most-used utilities, I sometimes forget TextExpander. Not because I m not using it every minute I m on my computer, but because it s become so much a part of my everyday computing that I forget it s not part",
"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","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 12th, 2016",
"ts": "1455303600",
"summary": "I tweeted about the 2.5.3 release of Marked 2 a couple of months ago. Overall, it s been a popular update, but a mysterious crash for a non-trivial portion of users consumed some time. I ve finally solved it 1 , 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 a feature that was well-received 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 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 ve deemed unnecessary. It was something that I d added multiple versions ago and that had always been approved without issue. I ve had a few builds rejected over the years, and they re almost always for inconsistent reasons.",
"keywords": ["attack","cross","javascript","middle","scripting","store","apple","arabic","because","bitwriter","cfrelease","cfstringref","capitain","custom","error","fixed","https","hopefully","integrity","latin","marked","multimarkdown","outline","overall","pandoc","processors","protection","python","sandboxed","script","shows","store","system","thanks","users","version","waiting","ability","above","added","adjust","advanced","alleviates","allows","almost","another","applied","approved","argument","available","background","based","beachballing","because","before","binary","blocking","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","endpoints","entirety","environment","error","escaped","especially","exception","executed","export","feature","features","feedback","field","files","finally","finishing","first","fixed","fixes","fixing","flexibility","freezing","getting","global","grade","grammar","handles","handy","having","helpful","image","improvements","improving","included","inconsistent","interpreter","juggle","language","later","latest","level","libraries","license","longer","major","moved","moving","multi","multiple","mysterious","navigation","nvalt","offer","offering","outline","paragraph","paragraphs","parity","pointer","popular","portion","preprocessor","primarily","processed","processor","processors","properly","pulled","pushed","reach","reasons","receive","received","recognition","recognizes","region","rejected","related","release","remove","removing","restores","rewrite","script","scroll","sections","secure","security","settings","shafted","signup","slowdown","solved","sooner","spaces","speed","spelling","stuff","style","styles","styling","submitted","successor","suggestions","system","temporary","theme","thought","thread","title","tracking"]
},{
"title": "Web Excursions for February 12, 2016",
"url": "/2016/02/12/web-excursions-for-february-12-2016/",
"tags": ["bookmarks"],
"date": "Feb 12th, 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 ve ever wished I d attended. [Instead] of self-seriously creating nothing out of something, these hackers are flipping the recipe on its head 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 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","notes","nothing","obvious","outside","partnership","piece","recipe","release","retrospect","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 11th, 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 9th, 2016",
"ts": "1455038340",
"summary": "This is an in-case-you-didn 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 s videos, all of the above options will return whatever they ve set or YouTube has chosen automatically. I haven 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 d love to find an option to load @1x and @2x sizes based on screen resolution detection, but for now it 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","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 5th, 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 Medium This is by far the best bathroom augmentation I ve seen since installing my (inexpensive and quite wonderful) dual rainfall shower head . Placemat I 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 s Guide to Kerning Like a Designer 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 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","notes","offers","overlay","partnership","placeholder","polished","published","rainfall","renaming","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 4th, 2016",
"ts": "1454598060",
"summary": "Day One 2 is out 1 , and I m very happy to say that the team there has offered an easy way to keep Slogger working with it. If you 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 s moved to a database format now, but there 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 t work anymore). Here 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 m hoping that a future version will be able to import to specific secondary journals using the same method. I 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 re as conflicted about the naming convention as you are.",
"keywords": ["flickr","journal","store","because","default","import","journal","previously","slogger","store","tweets","allow","anymore","anyway","available","besides","built","change","check","conflicted","constant","convention","created","database","directly","doubt","editing","either","entries","example","familiar","features","files","folder","format","happy","hoping","icloud","images","import","journal","journals","method","moved","multiple","naming","needs","newer","offered","people","portion","projects","running","searching","secondary","simply","specific","storage","supported","system","think","username","using","value","version","working"]
},{
"title": "Recap: January",
"url": "/2016/02/03/recap-january/",
"tags": ["recap"],
"date": "Feb 3rd, 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 m going, are you? Recaps are a quick, curated summary of each month 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","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 1st, 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 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 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 t blame us when you see all those hours wasted on Facebook and elsewhere 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 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","honest","hours","itself","making","projects","reconstruct","recovering","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 26th, 2016",
"ts": "1453828200",
"summary": "I always loved attending Macworld, and almost entirely because of the people I d meet and friends I 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 m so out of the loop. It 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 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 17th. I 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","nosillacast","people","price","priced","pricing","reasonably","reserved","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 25th, 2016",
"ts": "1453736640",
"summary": "I m months late in writing about HoudahSpot 4.1, which is odd because it adds the one feature I d always wanted: the ability to save HoudahSpot searches as Finder Smart Folders. I 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 t used HoudahSpot before, it s a spectacularly powerful way to locate, analyze, and work with all of the files on your Mac. It s everything Spotlight can do, amplified by at least double. I wrote about the 4.0 release when it came out, but here 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 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 incorporation into spreadsheet documents or other",
"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","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","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 22nd, 2016",
"ts": "1453480260",
"summary": "Here s a script for creating simple delayed alerts from Terminal. It doesn 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 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 t get your reminder. It s designed for short term use while you 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","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 21st, 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 20th, 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 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 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",
"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","hundreds","including","intriguing","intuitive","keyword","macro","management","monthly","music","notation","notes","partnership","party","pitch","powerful","preview","reader","release","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 19th, 2016",
"ts": "1453219020",
"summary": "I 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 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 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 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 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 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 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 Jon Skinner, author of Sublime Text, also has an article detailing the hard way, which allows scripting and automation. I hope that 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","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 18th, 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 s in Sass (SCSS) format, and requires Compass. If you need the CSS output instead, let me know and I 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","updated","using","version"]
},{
"title": "PDFpen 7, the ultimate PDF tool",
"url": "/2016/01/14/pdfpen-7-the-ultimate-pdf-tool/",
"tags": ["sponsor"],
"date": "Jan 14th, 2016",
"ts": "1452772800",
"summary": "Thanks to PDFpen 7 for sponsoring BrettTerpstra.com this week! PDFpen is your Swiss Army knife for PDF-fu. It 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","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 13th, 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 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 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","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 7th, 2016",
"ts": "1452168000",
"summary": "Thanks to Rollout for sponsoring BrettTerpstra.com this week! If you 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 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 5th, 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 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","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 29th, 2015",
"ts": "1451405940",
"summary": "I ve developed a love of cooking. Perhaps even an obsession. It 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 t let me sit at a computer for any extended period of time, I ended up having free time in the evenings. I ve always been decent in the kitchen. Kind of like I ve always been decent at coding, writing, and even sports 1 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 t a new or groundbreaking statement, but much like learning guitar after years of piano and suddenly seeing frets as keys 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 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 and views oops, mixed analogy) serves you well across",
"keywords": ["developer","iphone","kitchen","apple","because","belkin","bitbucket","cooking","geeks","genres","github","google","however","italian","kitchen","learning","multithreading","paprika","perhaps","pulse","python","recipes","running","sites","stand","tapping","understanding","watch","yummly","across","algorithms","allow","allows","amount","analogy","another","anyway","aside","assumed","automatically","basic","basil","basketball","became","before","began","between","boundaries","brain","breadth","break","breakdown","browse","build","caramelizing","cellular","check","chemistry","chopped","coding","combination","companion","complex","computer","computers","concepts","constructs","convert","cooking","costing","cross","decade","decent","decided","deglazing","detail","detailed","detects","developed","devices","different","doesn","download","dramatically","drastically","dried","easier","editors","efficiency","ended","engineering","enjoyed","entire","evenings","everything","examine","exceptions","executing","expensive","extended","favorite","fights","football","forethought","found","fresh","frets","garlic","generally","genre","getting","glucose","going","gravitated","grocery","groundbreaking","guitar","hardware","having","health","heating","hitting","hours","iphone","ideal","individually","ingredient","ingredients","initial","input","juice","kitchen","languages","learn","learned","learning","lemon","manager","meals","memory","mental","minced","minute","mixed","models","mountain","multi","multiple","music","needed","notes","obsession","onions","optimal","ordering","oriented","palate","parallels","paste","people","phase","photos","piano","pickup","pitch","pitcher","prefer","press","process","processing","product","programming","projects","proper","providers","pumping","quickly","racing","reality","rebuild","recipe","regime","relationship","required","results","retry","reverse","rings","schedule","seamlessly","season","seconds","section","seeing","separating","serves","shopping","shows","sites","skills","sliced","smaller","soccer"]
},{
"title": "The CleanMyMac 3 Winners",
"url": "/2015/12/26/the-cleanmymac-3-winners/",
"tags": ["giveaway","macos"],
"date": "Dec 26th, 2015",
"ts": "1451156640",
"summary": "If you didn 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 22nd, 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 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 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","space","successes","support","thinks","value"]
},{
"title": "The Magic Number winners",
"url": "/2015/12/22/the-magic-number-winners/",
"tags": ["giveaway"],
"date": "Dec 22nd, 2015",
"ts": "1450815120",
"summary": "Congratulations to the 5 lucky ones. If you think you re on the list (hard to tell without last names ) and didn 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","lucky","names","think","winners"]
},{
"title": "HomeKit with older home automation devices",
"url": "/2015/12/21/homekit-with-older-home-automation-devices/",
"tags": ["hardware","homeautomation"],
"date": "Dec 21st, 2015",
"ts": "1450713060",
"summary": "I love home automation. I 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 ve worked toward for years with varying degrees of success: voice control. While solid close-range proximity triggering has still eluded me 1 , my voice control dream is here. Over the years, I 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 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 command to be, then assign one or",
"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","array","asking","assign","automation","available","background","based","bedroom","behind","brain","breeze","bridge","bulbs","called","capabilities","capable","certain","checking","checks","close","collection","command","commands","complex","configuration","configure","control","controllable","controls","conventions","create","degrees","designed","detection","detectors","device","devices","devise","different","discovered","dream","eluded","enamored","errors","everyone","everything","example","except","extensively","false","floor","forgotten","found","functionality","globally","going","gotten","grand","handling","happen","haven","homebridge","hoping","house","ibeacons","indigo","install","installing","instantly","instructions","intelligently","irregularities","knows","launch","launchd","leads","lighting","lights","listed","living","machine","makes","manually","mercury","minutes","motion","movie","mytouchhome","named","naming","needed","office","options","outlets","panels","phone","picked","plenty","plugin","plugins","pocket","ports","possible","query","range","reach","recognizes","remote","renaming","running","scenarios","scene","sensors","server","setup","shell","shown","single","solid","specific","success","suggest","switches","system","talks","timers","toward","triggering","triggers","trying","unreliable","useful","using","variables","varying","voice","voltage","where","worked","working","years"]
},{
"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 18th, 2015",
"ts": "1450447200",
"summary": "My post A useful Caps Lock key based on a method pointed out by Steve Losh 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 (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 ll want to replace the Hyper/Escape code if you re already using it. The file provides a plethora of possibilities, so if you 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","holding","itexteditors","inside","internal","keyboard","keyboards","keystroke","looking","maintain","method","modified","modifier","nvalt","original","pages","plethora","point","pointed","popular","possibilities","private","provides","replace","resulting","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 17th, 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 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 s a YouTube search bar and songs can be added to your own VOX playlists. The second is from Softorino, who I 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 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","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 17th, 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 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","sponsored","value"]
},{
"title": "Back up everything with BackBlaze",
"url": "/2015/12/17/back-up-everything-with-backblaze/",
"tags": ["sponsor"],
"date": "Dec 17th, 2015",
"ts": "1450353600",
"summary": "Thanks to Backblaze for sponsoring BrettTerpstra.com this week! Don t lose your work. Back up all your data with Backblaze online backup . It s unlimited, unthrottled, uncomplicated, and at $5/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 $5/month. Backblaze continuously and securely backs up all the data on your computer and external hard drives. It 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","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 16th, 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 m helping with, based on Luc 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 Top favorite design resources Angelos Arnis compiled the Tools I use constantly on Medium, and it 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","screencast","selling","style","subscription","today","valuable"]
},{
"title": "The TitleCase API",
"url": "/2015/12/15/the-titlecase-api/",
"tags": ["writing"],
"date": "Dec 15th, 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 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","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 11th, 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 m working on some updates to doing to make this more useful, but it 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","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 10th, 2015",
"ts": "1449767760",
"summary": "I ve answered some questions about my own experience with creating screencasts recently. I 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 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 s editing capabilities are top notch and perfect for anyone doing more than just a quick screen share. I 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 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 m recording, I pause and reference the list, ensuring I ve covered the necessary points and running through what I m going to do for the next section. I ve learned to record casts in one long take, which I 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 s more ideal for recording promo videos than doing how-tos, but it 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 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 regardless of your intended output resolution 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 more effective than having everything static and full-size. iBooks recommends exporting at 640x480, so",
"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 10th, 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. 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 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","messages","missed","multiple","opportunities","options","phrases","portions","powerful","prevent","productivity","quickly","range","reminds","replacements","responses","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 9th, 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 More info",
"keywords": ["iphone","store","changelog","donate","download","itunesicon","published","store","updated","added","bugfix","default","details","grabbing","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 6th, 2015",
"ts": "1449412800",
"summary": "If you 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 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 ve never taken advantage of OS X s built-in keyboard shortcut functionality, you should Recaps are a quick, curated summary of each month 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","history","iphones","impossible","instructions","interested","junkies","keyboard","minimalist","misunderstand","monthly","paths","people","personal","podcast","posts","quick","reaching","reasonable","recap","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 4th, 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 s being offered for an intro price of $77 . There 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 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","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 3rd, 2015",
"ts": "1449144000",
"summary": "Thanks to Magic Number for sponsoring BrettTerpstra.com this week! First, your math appears beautifully 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 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 1st, 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 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 s not really a concern. It 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 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 t currently have that implemented in the bookmarklet version.",
"keywords": ["browser","codecleaner","github","added","allows","anywhere","attribute","backticks","below","block","blocks","bookmarklet","classes","cleaned","cleaning","click","clicking","common","concern","contents","copying","create","default","detect","doesn","double","easily","element","elements","falling","fence","fences","field","found","function","handles","heavily","highlighted","highlighters","implemented","language","likely","little","local","morning","needed","needs","notes","object","offers","opening","options","overridden","pages","parent","passed","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 30th, 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 ve extended this for a few days, use code to get $3 off the direct version of Marked 2 . The Productive Writer 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 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 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","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 27th, 2015",
"ts": "1448658840",
"summary": "I wasn 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 t unusually packed. All of Winona 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 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 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 s good through Monday. Don t forget about the Productive Writer 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","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 26th, 2015",
"ts": "1448539200",
"summary": "Thanks to Clarify for sponsoring BrettTerpstra.com this week! I ve been using Clarify for a long time, and I m honored to have Blue Mango supporting this blog. Clarify simplifies the process of documenting tasks large or small on your screen. With screen capture, annotation, and writing tools, as well as comprehensive export options, it s a one-stop application for capturing, describing, and sharing documentation. You may have heard about Clarify before and thought you didn t need it after all, much of what you can do in Clarify you can do in Pages or Word. But that s like saying you don t need OmniFocus because much of what you can do in OmniFocus can be done in iCal or a checklist app. You d be sort of right 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 re still not sure how Clarify fits into your life, check out these videos . The possibilities are endless, and for $15, it 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","honored","makes","mostly","options","paragraph","parents","possibilities","process","pulled","quick","right","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 25th, 2015",
"ts": "1448496000",
"summary": "I ve mentioned WALTR before , and am a happy user of Boom 2 a great utility for boosting and eq 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 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","mentioned","movie","price","quality","sending","sound","utility","viewing"]
},{
"title": "Shell Tricks: Quick line numbering",
"url": "/2015/11/24/shell-tricks-quick-line-numbering/",
"tags": ["terminal"],
"date": "Nov 24th, 2015",
"ts": "1448387820",
"summary": "It s often useful to quickly see line numbers when viewing source code files. The command and related tools can display with line numbers. There s also the command, but it doesn t number blank lines and tends to mess up formatting. There 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 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 t love the output, though. The paste utility concatenates the corresponding lines of the given input files, replacing all but the last file s newline characters with a single tab character, and writes the resulting lines to standard output. For this tip, we 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 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","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 23rd, 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 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 s mentioned. Nifty. Stock Up Another great source for free stock photos, sourcing and searching 26 different free photo sites. Rover 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","oarrabi","output","partnership","photo","photos","project","reliably","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 19th, 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 s large screen. It’s built around seamless Dropbox sync and natural gestures that let you interact directly with your words. If that s caught your interest I d recommend skipping straight to a 30 second video of it in action. That s by far the best way to get a feel for what makes Syml special. Syml is opinionated. It 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 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 s fully optimised to take advantage of iOS 9 features like Multitasking, Split-View and Spotlight integration. This is 1.0 just the beginning. Syml gets out of your way, and lets you focus on your writing. Words really don 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 18th, 2015",
"ts": "1447873080",
"summary": "I 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 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","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 17th, 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 ll see if you pull down any menu from the menu bar. There are a few that don 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 exactly, including upper and lower case and assign a shortcut. That 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 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 because Finder changed the menu item title to Compress [filename] in the contextual menu you couldn t easily assign a shortcut to it. I mentioned on Mac Power Users that I 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 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 16th, 2015",
"ts": "1447700160",
"summary": "Today s shell trick is for converting urls into valid shell paths. This isn 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 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 re reusable and useful in other functions and aliases. I handle shell escaping with the default Ruby Shellwords module . It 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 s more readable and allows more portability as the tilde will expand to whatever the current user 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 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","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 13th, 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 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 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 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 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 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 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 d ordered this week, and it s just as good as the tape I 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 except for Emma, occasionally ) while I 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 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 t generally review $6 products I found randomly on Amazon, but I m excited about this one. If you ve ever wished your phone, tablet, or",
"keywords": ["device","mobile","phone","sticky","suction","amazon","assuming","cellphone","disclaimer","granted","lizzytape","mount","stevens","sticker","suction","systematic","across","adhere","adhered","adhesive","affixes","again","almost","assumed","available","bathroom","because","before","begin","bought","brushing","buying","carseat","checking","child","children","comes","couple","cutting","dashboard","device","devices","driving","dropping","easily","edges","efforts","empty","ended","especially","eventually","except","excited","expensive","family","first","format","former","found","fully","furry","generally","having","iphone","introduced","jostled","lasted","lasts","layer","lower","makes","marketed","member","micro","mirror","object","occasionally","ordered","patch","peeling","permanently","phone","podcast","prevent","prevented","previously","price","problem","produce","products","prohibitive","prove","proved","randomly","ready","received","recommend","recording","remove","removed","residue","rides","rubberized","sense","sheet","sheets","similar","slide","slippery","small","smaller","solution","square","started","stick","sticker","sticking","stops","strips","stuff","suction","surface","table","tablet","teeth","traditional","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 12th, 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 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 d like a foundation explanation of Curio, check that out. I also covered the release of version 9 on this blog, so I 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 ve always found importing brainstorming sessions into Curio to be a delight just drag and drop most file types or paste OPML, Markdown, text, and more, and have them converted to native formats in Curio 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 with custom watch folders, fast searches and integration with Curiota (see below) 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 s an omnipresent way to gather resources and notes for use within Curio. I 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 available), and existing users can upgrade for $49.99. A two-week",
"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","meantime","native","navigate","notes","omnipresent","organization","organizing","paste","piece","piles","planning","powerhouse","previously","productivity","project","quick","release","resources","reusable","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 12th, 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 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 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","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 10th, 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 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 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 s an AAC format. Ever since AAC has become the norm on the iTunes Store, the format has seen vast improvements, but audiobook haven 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 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 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 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 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 re inexpensive and available for many platforms 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 app doesn t play these files back, you can choose a different",
"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 6th, 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 m a bit behind, I m posting a larger collection than usual this week. I doubt I ll hear any complaints, so I 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 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 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 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 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 s like we don t even need to blog anymore. Let 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 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 s Bundle Just in case you missed the announcement (and because I know we re a little late",
"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","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 6th, 2015",
"ts": "1446825660",
"summary": "I 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 s NaNoWriMo . Including Marked 2, it 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 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 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 s worth over $60, and we re offering the full bundle for $24.99. It 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","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 5th, 2015",
"ts": "1446724800",
"summary": "Thanks to Fetching for sponsoring BrettTerpstra.com this week! I ve been a Fetching user for almost a year now, and I can vouch that even if you think you have a great memory 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 ve seen without having to decide what to bookmark. Fetching s state-of-the-art search means you can find any post or article you 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","memory","native","notes","pages","provides","readers","recall","regularly","related","remember","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 4th, 2015",
"ts": "1446686640",
"summary": "In Minnesota (where I live), the word interesting is generally used as a passive-aggressive way of saying I 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 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 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 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 re doing at this very moment. I got my Magic Keyboard, and shared some opinions . Granted, I m an edge case in many senses, but this may be of interest if you 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 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 29th, 2015",
"ts": "1446141420",
"summary": "Thanks to Marketcircle and Billings Pro for sponsoring BrettTerpstra.com this week! I ve been using Billings and Billings Pro for all of my freelance time tracking and invoicing for years, and am happy to have Marketcircle 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 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 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 27th, 2015",
"ts": "1445956800",
"summary": "I 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 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 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","'print","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","githubusercontent","hawkwings","highlight","https","improvements","index","language","launcher","lbutlr","mailapp","maintains","makes","mathiastornblom","modifications","numeric","opted","optimized","paste","pmbuko","posted","previously","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 26th, 2015",
"ts": "1445887260",
"summary": "I first mentioned Trickster an app that tracks and filters recently-opened files a couple of years ago , and it 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 s latest features to take advantage of them, so this is a great combo. The Action lets you list, filter, and act on Trickster s tracked files from LaunchBar, as well as send a file from LaunchBar to Trickster. It 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 re an Alfred user, there 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","mentioned","navigable","opened","recently","released","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 23rd, 2015",
"ts": "1445614920",
"summary": "It 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","sharp","template"]
},{
"title": "A magic mistake",
"url": "/2015/10/19/a-magic-mistake/",
"tags": ["hardware"],
"date": "Oct 19th, 2015",
"ts": "1445276340",
"summary": "I 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 m also a fan of HIDs (Human Input Devices), whether it s a LEAP Motion , a good trackball, or my array of keyboards and trackpads. I guess it 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 s the one I ve always come back to. It 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 m prone to. It s also a pleasure to type on, and I ve always come back to it as my primary work keyboard. Despite my admiration for Apple Hardware, I m also willing to acknowledge design flaws when they happen. I m not quick to jump on them, as I ve found the things that people complain most loudly about after a new release are the same things they complain about changing later. I m happy to give it an adjustment period. However, this new Magic Keyboard is killing me. I don t own one of the new MacBooks yet, but this appears to be the same keyboard. I 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 ll be able to get used to the key profile, eventually, but there s one thing that 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 ve ever used is configured. With the new key size, when my index finger hits the top edge of the left arrow, my middle",
"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","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 16th, 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 t record a Systematic. I didn t record an Overtired. I didn t write any blog posts. I didn 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 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 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 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 m planning to offer a special sponsorship of the Web Excursions posts in month-or-longer packages, so if you 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","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 9th, 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 t your job or responsibility. You 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. 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 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 such as Twitter or direct email and then move to a new one, collate prior conversation when switching channels. It s difficult to keep support conversations going when doing so involves searching back through emails or Twitter conversations to put it all together. If you have access to other user s conversations, such as on a support forum, search for existing conversations first. You may find the answer is already there, or a conversation is in",
"keywords": ["customer","developer","service","software","twitter","applications","channels","cheers","closing","cloudapp","collaboration","console","crash","doesn","diagnostic","droplr","especially","express","finding","forums","github","google","however","launch","money","making","marked","pages","pastebin","pasting","personally","public","ripped","report","reports","spent","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","because","before","beginning","benefit","block","cause","chance","changes","channels","characters","choices","clear","collate","commercial","company","compliment","configuration","contain","context","continuity","continuous","conversation","conversations","crash","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","easier","easily","either","elaborate","email","emails","embarrassing","entire","error","everyone","everything","exact","excellent","exception","excited","experience","experiencing","explanatory","express","favorite","feature","first","fixed","folks","forms","forth","forum","forums","found","front","frustrating","generated","getting","going","gratitude","great","guess","guidelines","happy","hassle","having","headed","heated","helpful","helping","helps","includes","including","incorrect","increase","information","informative","interaction","intermittent","involves","issues","keeps","leaves","level","likelihood","likely","links","listed","longer","looking","makes","making","marginally","materials","maybe","medium","middle","money","muddies","myself","necessarily","needs","negative","niceties","obvious","offensive","offers","opening","options","organize","outline","paste","pasted","pasting","people","personal","phrase","platform"]
},{
"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 8th, 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 s new, what more to explore, and what exclusive features you 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","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 7th, 2015",
"ts": "1444244940",
"summary": "Marked 2.5 a major update to my Markdown preview and writing tools collection is now available for direct purchase and from the Mac App Store! It 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 s not enough to intrigue. If you re a writer of any kind and haven 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 6th, 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 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 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 s Notebook I 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 re on this site, just start typing any search term (no input box needed). It 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","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 3rd, 2015",
"ts": "1443902400",
"summary": "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 s the deal? Dear Abby for nerds? (Sep 16th) I 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 s perfect for opening or saving all of the Top 15 resources for 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","ideas","intelligently","interest","latest","links","nerds","newsletter","nvalt","opening","planning","posts","products","quick","quickly","recent","report","resources","right","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 3rd, 2015",
"ts": "1443885300",
"summary": "I make a concerted effort to not curse online. I 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 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 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 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 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 %C6;*#$!¡@ø@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 2nd, 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 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 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 re not a web designer but need websites) Posterino (I don t use it every day, but it 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","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 1st, 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 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 serial numbers, storage capacity, applied settings, installed apps, and more 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 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 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","nights","numbers","people","personal","protect","provides","remotely","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 29th, 2015",
"ts": "1443561660",
"summary": "I ve updated the Similarity bookmarklet that I posted yesterday . If you missed it, it s a bookmarklet for desktop browsers that lets you quickly gather links in Top X resources for 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. It s a little more forgiving when finding containers now, so it 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 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 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):",
"keywords": ["bookmark","bookmarklet","browser","chrome","google","safari","amazon","cloudfront","markdown","product","similarity","below","bookmarklet","bookmarks","boxes","break","breaks","browsers","certificates","changed","changes","characteristics","clicked","collections","common","containers","copying","desktop","determining","different","figured","finding","fixing","forgiving","formats","gather","generating","hosted","likely","links","lists","little","missed","needed","offers","output","posted","posts","pulling","quick","quickly","related","remotely","resources","round","seems","selecting","server","spaces","tests","think","titles","trailing","updated","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 28th, 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 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 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 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. 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 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 t work for anyone using older browsers. No offense to those folks, but I just don t care about them. This should work on mobile, but I make no guarantees.",
"keywords": ["bookmark","chrome","safari","chrome","hover","javascript","markdown","pinboard","similarity","typing","analyzes","anyone","because","below","bookmark","bookmarklet","bookmarklets","bookmarks","browser","browsers","certificate","click","clicking","container","criteria","custom","development","display","displays","effort","element","external","features","folks","functionality","gauge","guarantees","happens","immediate","interested","issues","level","links","loading","loads","match","mobile","modern","offense","older","output","outside","photos","requires","resources","restore","security","server","sibling","simply","stock","times","using","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 25th, 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 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 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 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 ve been hunting for a good decal to replace it. This site has some of the most intriguing, though I 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","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 24th, 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 this week only 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 23rd, 2015",
"ts": "1443023580",
"summary": "If you write technical documentation for or blog about Apple products, you ve probably pondered phrasing, capitalization, etc.. If you re not familiar with it already, Apple publishes and updates a style guide that s complete and useful for any kind of Apple-related writing. I ve broken plenty of rules over my career, but I 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 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 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. So Shift-Option-C is wrong it should be Option-Shift-C. The latter sounds right when you read it, but it s not always obvious when writing. 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 re showing graphical representations (images showing keys in physical form) of key combinations, the rules change. In this case you use a plus sign (+) between the keys instead of the hyphen. If you blog about Apple products, or write documentation for Apple hardware or software, I highly recommend reviewing the style guide. It s well-indexed for quick reference, so go grab the PDF and keep it handy. I added a quick cheat sheet for these particular points to Cheaters , but you can also add a link to a",
"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 22nd, 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 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 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 t benchmarked it very thoroughly. This below code is from an NSTextView subclass. It takes the field 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 syntax 1 . 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. Yes, I should be working toward Swift, but this codebase is quite well grounded in Obj-C, and I m easily intimidated by large undertakings that will break things that are working.",
"keywords": ["ecmascript","interface","javascript","categories","cocoa","javascript","javascriptcore","marked","mathjax","nsregularexpression","nsstring","nstextview","regex","swift","wright","advanced","aging","attempting","attempts","because","below","benchmarked","benefit","break","called","calls","category","choice","codebase","configuration","context","customer","decent","disables","document","dumbs","easily","ended","engine","feedback","field","great","grounded","handy","haven","highlighting","immediate","implementation","inline","input","intimidated","intro","issues","libraries","linters","major","mentioned","method","methods","mistake","needed","newlines","options","override","parse","parsing","paste","provides","quickly","quotes","recently","refreshing","removes","revamped","script","settings","shortcuts","simply","smart","straightenquotes","string","stringify","subclass","support","syntax","system","takes","thoroughly","toward","track","trims","undertakings","upcoming","useful","users","using","valid","validate","wanted","welcome","where","working","works","writing"]
},{
"title": "Web Excursions for September 18, 2015",
"url": "/2015/09/18/web-excursions-for-september-18-2015/",
"tags": ["bookmarks"],
"date": "Sep 18th, 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 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 s Steve Jobs Wait, someone 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","making","mdast","movie","paragraphs","partnership","pause","plugin","processor","protects","replaces","rewind","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 17th, 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": "“Dear Abby” for nerds?",
"url": "/2015/09/16/dear-abby-for-nerds/",
"tags": ["newsletter","suppport"],
"date": "Sep 16th, 2015",
"ts": "1442440860",
"summary": "I 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 at any amount and I 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 plan 1 . I 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 m actually pretty good at. I ll take questions about OS X, Unix, programming, mental issues, productivity, applications, workflows, whiskey 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 ll be using the Memberful setup that I ve already been working with. I 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 t make it easy for me to dump a list of all those supporters. I m working on it, but if you re currently donating through PayPal and want to switch from PayPal to Memberful, feel free to as it will ensure that you re part of the login/email subscription system without dealing with hacky workarounds. Everyone who s already subscribed is already in on the game, and you ll be the first to get the newsletter when it s ready. You re also free to send questions directly until I get a submission form set up. I m hoping this will prove to be a fun way to give something extra to the people who 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?",
"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","based","blast","broad","coming","comments","consist","continuous","contributions","couple","dealing","details","directly","doesn","donating","donations","email","extra","fashion","finger","first","formulated","general","generous","guess","hacky","hoping","income","integration","interest","interesting","ironing","issues","knowledge","launch","level","login","making","mental","monthly","newsletter","paywall","people","planning","productivity","programming","prove","providing","publicly","questions","range","readers","ready","respond","responding","responses","setup","sincerely","stuff","submission","subscribed","subscriber","subscribers","subscription","subscriptions","supporters","switch","system","temple","thoughtful","through","timely","useful","using","weekly","while","whims","whiskey","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 14th, 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 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 t gotten around to putting out an official update. I haven t tested it on 10.11 yet, so if there are some minor patches needed to get that smoothed out, they ll go out with that release when it s ready 1 . 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 s original work that I wouldn 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 t add up to nearly enough to justify that. There are hundreds of thousands of users it s the most successful project I ve ever posted by far, and the one on which I 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. 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 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 m not depressed. I ve been bi-polar my whole life, and have experienced every degree of clinical depression. I can tell you beyond any doubt that it s not the issue. I managed to get a new doctor last week, which was a snafu of its own. I m back on my previous meds, for now, and",
"keywords": ["deficit","disorder","hyperactivity","notational","velocity","another","david","github","halter","marked","notational","prozac","twitter","velocity","zachary","again","allowed","almost","asking","began","behind","beyond","built","charge","clear","clients","clinical","coding","coming","commercial","compatibility","contacted","contributions","cropped","cycle","decided","degree","depressed","depression","development","doctor","dollars","double","doubt","emails","enough","experienced","fiery","finishing","first","fixed","frustrated","getting","going","gotten","ground","handed","haven","heavily","hours","hundreds","hurdles","imagining","income","justify","license","major","managed","minor","money","nearly","needed","needs","nvalt","official","officially","original","patches","planned","polar","posted","product","project","psychiatrist","putting","questions","quickly","rapid","ready","record","reevaluation","release","replace","retired","rooted","rounds","schedule","setback","short","single","smoothed","snafu","sorry","source","spent","started","status","story","successful","successor","suffering","support","supposed","talked","tested","testing","thousands","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 10th, 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 s Mac software runs until October 15th. Now 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 9th, 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 m really into Spacegray right now, but this Sublime Text color scheme is beautiful. Zen Timer I ll be talking more about this little app soon, but if you re using the Pomodoro technique 1 , 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!",
"keywords": ["raspberry","bittorrent","check","netnewswire","pomodoro","raspberry","setapp","spacegray","sublime","timer","today","truly","access","background","beautiful","brought","build","chilicuil","cloud","color","colors","customizable","desktop","drive","excursions","grows","having","hundreds","level","little","manager","monthly","package","partnership","provider","psych","right","scheme","slick","snafu","stopgap","subscription","talking","technique","timer","today","transparent","tundle","using","version"]
},{
"title": "SearchLink 2.2.2",
"url": "/2015/09/08/searchlink-2-dot-2-2/",
"tags": ["macos","markdown","searchlink","service"],
"date": "Sep 8th, 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 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 ve set up in . In my own workflows, SearchLink is still one of the most useful OS X utilities I ve built. If you write in Markdown and ever switch away from your editor to get a link and haven 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 t miss the URL Preview extension I created to validate inscrutable links, still without switching away from your editor. SearchLink v2.3.65 Download SearchLink v2.3.65 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 01/16/24. Changelog Donate More info 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","helpful","including","inscrutable","leaving","links","output","pitch","pointed","redirect","release","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 5th, 2015",
"ts": "1441474860",
"summary": "On behalf of myself and the Giveway Robot 1 , I d like to congratulate the five lucky winners of Dropzone 3.5 licenses from last week s contest : If you haven t received the telegraph from Giveaway Robot, feel free to ping me . If you entered and didn 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 ve written a backstory for him, but it s pretty long. Basically he 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 s just a random number generator.",
"keywords": ["aptonic","dropzone","store","utility","dropzone","giveaway","giveway","hagelin","hulme","robot","ronan","store","terminator","backstory","before","breaking","chisenhall","circuits","congratulate","contest","entered","features","fried","generator","going","haven","keyboard","leader","licenses","lucky","myself","navigation","overtaking","potential","protaganists","random","reading","received","right","robot","series","telegraph","thanks","travel","triggering","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 4th, 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 t absolutely require user editing now, it 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 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 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 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 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 s ready to run. You can also hold down Option in Automator 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 and others, but an Application can be more convenient if",
"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","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","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 3rd, 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 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","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 2nd, 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 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 iPad 1 with an external keyboard (the Logitech K480 is awesome , by the way). I ll write more about that adventure as I get time, though I m so late to the working on an iPad game that I don t have that much new to say 2 . Anyway, to the point. Dropzone developer John Winter has been awesome enough to sponsor my blog the week I ve been on vacation, and he 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 I also saw the new F-Terminal bathrooms at the MSP airport, which I can t stop talking about. I do actually plan to write an airport bathroom review post.",
"keywords": ["aptonic","dropzone","hampshire","iphone","maine","productivity","store","utilities","airbnb","anyway","brettterpstra","coast","dropzone","entries","giveaway","hampshire","logitech","maine","robot","sanebox","sanevacation","saturday","sorry","terminal","thanks","turns","verizon","winter","accepted","adventure","again","airport","aside","asking","awesome","bathroom","bathrooms","beautiful","below","cable","codes","colonial","decide","decided","developer","disappear","either","emails","ended","enough","entire","explanation","external","fates","feature","flavor","folder","giveaway","great","headed","hotels","house","iphone","inbox","internet","keyboard","laptop","mailbox","maybe","messages","money","moving","noticed","offering","point","posts","productivity","promo","randomly","readers","record","relying","replied","return","right","rustic","selecting","signal","sponsor","stays","taken","talking","thank","third","unread","vacation","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 27th, 2015",
"ts": "1440673200",
"summary": "I m happy to have Dropzone sponsoring BrettTerpstra.com this week. It 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 s a free upgrade to all existing customers, and is also being offered at a 50% discount for new customers 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 26th, 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 24th, 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 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 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 m about to mention. Its goal is stricter handling of ambiguities in the syntax, and it s a justifiable one. The negative reactions to the idea seem primarily summed up as you re not my real dad. People seemed more offended by the approach than the spec . I 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 s standard is useful. Many users learn a syntax particular to a specific processor, and then face disappointment when their documents don 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 t about proposing any standard or new flavors, it 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 t universal (e.g. centering with , fenced code with backticks or tildes, strikethrough characters). It s fine to make use of the latter, as long as you re aware of what won t work elsewhere. Ambiguous formatting without recognizing the general rules, though, is just shooting yourself in the foot.",
"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","endnote","endnotes","enough","ensures","entities","environment","error","escape","escaped","escaping","especially","essentially","estimate","everyone","evolved","example","exception","explaining","extended","extension","fairly"]
},{
"title": "mdless: Better Markdown in Terminal",
"url": "/2015/08/21/mdless-better-markdown-in-terminal/",
"tags": ["markdown","mdless","terminal"],
"date": "Aug 21st, 2015",
"ts": "1440165900",
"summary": "I wanted to be able to view Markdown README files quickly and pleasantly from Terminal. More often than not, I m working in an iTerm2 visor window, so opening any app including a simple 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 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 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 s been tested on systems with Ruby 1.9 through 2.1. It should work on non-Mac systems, but I haven t tried it out. is a work in progress, but it 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","often","opening","pages","pleasantly","project","quickly","rendered","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 20th, 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 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 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","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 19th, 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 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 ve been a Choosy user for a long time, but it s a dead project and I 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","iterm","images","latest","learning","markup","multiple","partnership","photos","placeholder","project","provides","reliably","replacement","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 18th, 2015",
"ts": "1439910000",
"summary": "I ve been heads down on a few projects for a while now, but I m getting close to the release of the next update to Marked 2 (free to current users). There s been a lot of refactoring, refining, and some new features I think you ll like. I 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 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 s internal syntax). The big one is Spelling and Grammar checking. I ve always loved Marked 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 preview 1 . You can turn on spell check and optionally grammar check 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 t visible. For a while now, the Help documentation has been mirrored between Apple s system and an independent internal web page. That 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 t matter much to existing users, but there 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 s needs. Users who ve already run Marked can still launch this from the help menu at any time. I enjoy adding useful features to Marked (maybe too much), and I tend to make any non-essential feature optional, and preferences panes get a bit",
"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","endnote","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"]
},{
"title": "Markdown Quicktags lives again",
"url": "/2015/08/17/markdown-quicktags-lives-again/",
"tags": ["markdown","quicktags","wordpress"],
"date": "Aug 17th, 2015",
"ts": "1439839800",
"summary": "I have a renewed interest in my Markdown Quicktags project. It 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 m not using WordPress anymore. Now I 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 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 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","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 13th, 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 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","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 11th, 2015",
"ts": "1439298000",
"summary": "I published my version of Pedro Lobo 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 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 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 t exist yet, it s created from a template. Also, it uses Notification Center for messages if Growl isn 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 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 re still using AppleScript. It would be more fun in JavaScript, but I have a LOT of old AppleScripts around 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","instantly","instructions","linked","links","located","messages","notes","nvalt","nvwikilinker","outline","paths","patterns","projects","property","published","readable","reads","references","relative","return","right","routine","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 10th, 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 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 s Guide to Python If you re new to scripting (or programming in general), I 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 ve greatly enjoyed getting his Objective-C oriented list of curated highlights from the developer world, so I 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","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 6th, 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 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 5th, 2015",
"ts": "1438800540",
"summary": "As an introvert with poor social skills and lack of desire for company most of the time, I m a bit of a hermit. I would love to live in a Walden-esque cabin, miles from civilization, but it 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 s an incorrigible idiot. We ve reached a point where pleasantries are no longer exchanged, and I can t imagine a better housing situation. I get the benefits of living within civilization without the need for interaction. It s gone even further than that, though, and developed into a cold war. I enjoy the problem solving aspect. He s passive with his aggression, but it 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 t be sporting. The solution turned out to be easy. Simply constructing a taller, wider sign reading Don t vote for 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 hour 1 . I could go on about the fun we ve had ever since we gave up on being cordial. I ll simply say that I didn 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 m quite enjoying the battle of wits. Don 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 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, and appreciate the buffer he provides from the world. I m still working on a solution to the",
"keywords": ["introversion","midwestern","minnesota","mower","skills","social","states","united","midwest","minnesota","simply","walden","aggression","apart","appreciate","arrangements","arrow","aspect","backyard","battle","because","begins","benefits","blatant","bluff","border","buffer","built","cabin","challenge","civilization","comes","coming","company","constructing","cordial","covers","decent","developed","disagreed","driveway","enjoy","enjoying","especially","esque","everything","example","exchanged","excuses","falls","feeling","fence","flake","forest","forth","friend","friends","glaciers","going","greetings","harmless","hermit","hollow","honestly","housing","idiot","imagine","inches","incorrigible","interaction","internet","introvert","knock","lawnmower","lawns","living","longer","middle","miles","missed","moron","moved","mower","neighbor","neighborhood","nightmare","offer","passive","people","pleasantries","point","pointing","political","position","problem","provides","reached","reading","required","retaliations","rides","ridge","riding","right","satisfying","series","signs","simply","since","situation","skills","small","social","solution","solving","sporting","stealing","strongly","summer","takes","talking","taller","thought","together","trick","turned","turns","upper","visible","where","whole","wider","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 1st, 2015",
"ts": "1438434000",
"summary": "Thanks to Harvest for sponsoring BrettTerpstra.com this week! As a developer, it 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 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 re spending on client work, you 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","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 30th, 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 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 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 ve been planning a wood version of something similar to go along with the Shuttle . Speaking of The Shuttle 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 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","horizontal","hosted","important","integration","keyboard","labor","legal","management","mentioned","music","notch","offer","orientation","pages","partnership","paying","permanently","piece","planned","planning","platforms","player","point","price","priced","project","reasonable","remains","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 24th, 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 s a realistic assessment of a limited resource. I m an incorrigible optimist. It s served me well, for the most part. I m always willing to take a gamble, and I 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 ve hit a fair medium. I have projects in the work that I forecast will make things even better, and I 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 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 t for the tempering quality of having pessimists around, I 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 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 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 albeit skewed idea of how crippling pessimism can be, and the damage that optimism can cause. These extremes aren 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 unencumbered by reality and previous failures is something that can only be achieved by an individual who just isn 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. If we all had both personalities, would we cancel ourselves out before we had a chance to evolve ideas? I m",
"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 23rd, 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 20th, 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 m buried in development work on a new version of Marked 2 (I 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 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 ll refer you to the ESN page . Keep listening! Overtired had a couple of weeks off between WWDC and Christina 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 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 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 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 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 t be able to implement a lot of it without some re-working, but if you re looking at Jekyll, be sure to try out Octopress 3 in the exploration process.",
"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","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 16th, 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 13th, 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 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","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 9th, 2015",
"ts": "1436468400",
"summary": "If you ve never explored Bash s file, there 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. The first part (before the colon) is the keybinding, the second half is the command. In this case, they 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 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 command that will take the output as the argument. For example, if I ve typed: it s going to return the first",
"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","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 9th, 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 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 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","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 6th, 2015",
"ts": "1436198400",
"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Safari is( nt?) the new IE A post from Nolan Lawson titled Safari is the new IE set off a discussion of Safari s development, broaching a concern I 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 t the new IE: it s the user-centric web Nolan follows up with Safari is the new IE 2: Revenge of the Linkbait iPhone, iPad, Mac Buyer 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 s Victor Agreda Jr. Going to Do Next? I 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 ve always been able to relate. This article from his hometown newspaper was a great read. There s a good Systematic episode with Victor , as well. Zuli Smartplug Presence Pack I haven 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","measured","newspaper","offers","partnership","people","personality","product","products","quest","rebuttal","relate","release","reliably","response","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 3rd, 2015",
"ts": "1435928400",
"summary": "I put together a little utility this morning to help me remember what GitHub repositories I 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 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 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 m actively pursuing them). This system just provides tidy checklists for things I might get around to but which have no real urgency. It 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","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 2nd, 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 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 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 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 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. 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","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 29th, 2015",
"ts": "1435582800",
"summary": "I 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 re ignored. Preserves reference links and footnotes, but It s assumed that if you 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","ignored","important","indentation","indented","issues","items","levels","links","lists","multiple","nested","newlines","paragraph","paragraphs","preceded","preserves","prevents","processors","project","readability","regardless","required","respected","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 28th, 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 sleeping on the couch, sleeping on dog beds, and enthusiastic interactions with other residents 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 while not included in our field testing thus far 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 NerdUsefully s flagship product, The",
"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","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","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 25th, 2015",
"ts": "1435230000",
"summary": "SummerFest 2015, a festival of artisanal software, is sponsoring BrettTerpstra.com this week to let you know about this year 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 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 s the time for new plans, fresh projects, and great new ideas. Whether you 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.",
"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 24th, 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. 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 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 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","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 24th, 2015",
"ts": "1435150800",
"summary": "As you may know, I 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 . 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 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 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 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 23rd, 2015",
"ts": "1435073700",
"summary": "Marked 2 has over 70 shortcuts for everything from exporting PDFs to navigating the preview. Not knowing them doesn 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 ll have quick search, but if you 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 ve never explored them, check out the cheat sheet and see what you 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 More info",
"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","instance","knowing","level","matched","missing","moving","navigating","preview","project","quick","quickly","recommended","right","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 19th, 2015",
"ts": "1434737940",
"summary": "I m not a security expert. This post is an opinion interlaced with the things I 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 XARA 1 exploits in an article on The Register , my heart sank. I ve spent years using security as a point of argument in platform debates. I don 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 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 re walking the line between security and convenience again. Most of what I do every day relies on these technologies. It s stated that Apple had 6 months to at the very least prepare a statement. Historically it 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 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 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 d like to think that this stringent and detail-focused process at least ends up providing security and quality. The malware that passed through the review wasn t detectable by static analyzers, and the",
"keywords": ["apple","exploit","icloud","iphone","keychain","store","vulnerability","acronym","agilebits","apple","drafts","historically","keychain","launchcenter","openbsd","password","register","serious","store","workflow","access","action","actions","again","against","allow","analyzers","announcements","anyone","argument","article","attacks","automate","beauty","because","between","bigger","built","bundle","causes","centering","change","clamping","clarify","combination","comes","comments","communication","contents","continuing","convenience","credential","cross","debates","declare","deconstructed","defined","depth","describes","desktop","detail","detectable","developer","developers","developments","discouraged","discussion","doors","ecosystem","especially","expert","exploits","exposed","faith","favorite","flaws","flexibility","focused","framework","frustrating","frustration","generating","getting","great","hackers","handicap","handler","handlers","handling","heart","hoping","hurdle","icloud","imore","iphone","implementation","implemented","increased","indicated","indication","inter","interlaced","keychain","learned","legacy","malware","measures","multiple","normal","operating","outside","panic","party","passed","patch","personally","platform","platforms","point","preemptively","prepare","proactive","process","proven","providing","publicly","publish","quality","quietly","rapidly","recent","registration","related","release","relies","report","reported","requiring","research","resource","resources","retrospect","rigorous","schemes","scrutiny","secure","security","seems","serious","sometimes","sources","space","spent","spoofing","stated","statement","static","steal","storage","stringent","successfully","surprised","system","systems","taken","taking","technologies","think","third","through","toward","trojan","unauthorized","upcoming","using","version","visible","vulnerabilities","walking","wants","weaknesses","wouldn","writing","wrong","years"]
},{
"title": "Web Excursions for June 19, 2015",
"url": "/2015/06/19/web-excursions-for-june-19-2015/",
"tags": ["bookmarks","icons"],
"date": "Jun 19th, 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 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 m a huge fan of Reveal.js (and slides.com ) 1 . I m also always looking for more ways to use my Leap motion controller, so this is awesome. I 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 t tested this Ruby gem far enough to be sure it s a perfect solution, but it s a great start. MutationObserver API I ve been doing a lot of JavaScript learning lately and was surprised to find a new API I d overlooked. MutationObserver attaches to DOM elements and watches for changes, saving you from any additional custom events or polling. You re probably using the wrong dictionary This was pointed out to me by bowerbird on Twitter. It 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.",
"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","based","bowerbird","brought","change","changes","considering","controller","creation","custom","default","designs","dictionary","doing","elements","endless","enough","environments","events","excursions","files","format","found","great","haven","headache","hundreds","icons","inordinate","learning","liked","looking","maybe","monthly","motion","options","overlooked","packs","partnership","persuasive","pixel","plugin","pointed","polling","practical","presentation","researching","saving","slide","slides","solution","spent","spotlight","subscription","surprised","tested","today","updated","using","watches","while","widths","wrong","youpy"]
},{
"title": "MightyDeals: Bootstrap Starter Kit [sponsor]",
"url": "/2015/06/18/mightydeals-bootstrap-starter-kit-sponsor/",
"tags": ["sponsor"],
"date": "Jun 18th, 2015",
"ts": "1434625200",
"summary": "Thanks to MightyDeals for sponsoring BrettTerpstra.com this week! If you 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 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.",
"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 16th, 2015",
"ts": "1434484800",
"summary": "Here s another fun icon set from FreeVectors.net: Retro Social Media icons. The download includes PSD, EPS, and AI files, so they re easy to customize. It s free, go for it If these aren 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","icons","includes"]
},{
"title": "Web Excursions for June 13, 2015",
"url": "/2015/06/13/web-excursions-for-june-13-2015/",
"tags": ["bookmarks"],
"date": "Jun 13th, 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 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 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 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 s a collection of base typography styles and Sass mixins that make it simple. postcss/postcss I 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 ll know it 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. [ ] 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","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","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 11th, 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 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","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 10th, 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 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 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 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 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","installation","instructions","lexical","meaning","officially","plugs","preferences","produces","quick","recent","released","resource","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 9th, 2015",
"ts": "1433871480",
"summary": "Thanks to everybody who entered in the Painless tmux giveaway! And congratulations to the lucky winners. If you didn 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 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 8th, 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 Don 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 5th, 2015",
"ts": "1433534040",
"summary": "I built a quick Action Extension for OS X 10.10+ this morning. It 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.",
"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","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 4th, 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 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","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 4th, 2015",
"ts": "1433426400",
"summary": "Thanks to DevMate from MacPaw for sponsoring BrettTerpstra.com this week! Originally an in-house product now used by some of the best in the Mac development community 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 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 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 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 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 3rd, 2015",
"ts": "1433361900",
"summary": "I ve updated my fork of Fletcher Penney s MultiMarkdown Quick Look plugin with TextBundle support. It 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","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 3rd, 2015",
"ts": "1433342400",
"summary": "MindNode 2.0 for Mac is out today. It 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 m very happy to see. There 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 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 2nd, 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 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 ll need, and productivity tips for a different kind of workplace are all covered in Darren 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 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","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 1st, 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 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 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 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 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 s a very cool addition that I ll be incorporating across a lot of the TE-Tools . As an example of some of my experimentation, I 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 week 1 . Then you can use to insert the date for the next Tuesday in the calendar while typing. through are",
"keywords": ["abbreviation","snippets","automation","bundle","filled","format","javascript","nested","standard","textexpander","tools","tuesday","abbreviation","abbreviations","across","actions","added","allow","allowing","allows","available","based","build","building","calendar","called","change","containing","context","couple","create","customizing","dates","default","different","directly","displaying","documented","dropdown","entire","example","excellent","experimentation","field","findings","format","function","functions","group","groups","handled","handy","having","included","incrementally","information","inserted","latter","letter","libraries","library","locale","logic","manipulation","mentioned","named","names","nests","object","offers","options","output","placeholder","placeholders","playing","popup","potentially","preference","prefix","project","provides","release","requires","responses","results","retrieve","return","rewrite","script","setting","share","snippet","snippets","special","started","statement","thought","through","times","tools","triggered","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 29th, 2015",
"ts": "1432922400",
"summary": "There 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 Recent versions of Marked 2 have included a URL handler. Rather than expanding the AppleScript library immediately, I 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 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 on that window s",
"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","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","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 29th, 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 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 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 m liking most about it is its simplicity. Sets and tags, and a nice browser. That s it, and that s what I ve been looking for. Photo managers aren t great for icon sets, but this is. Clark 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 s request to intensify investigation and prosecution of severe online threats against women. [ ] 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 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 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","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","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 28th, 2015",
"ts": "1432834860",
"summary": "I set up a TeeSpring storefront where I ll be offering t-shirt designs as they 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 ll see how this goes. TeeSpring will print and ship these shirts if at least five of a given design are sold. If there s one you re interested in, sign up and then get your friends to pile on and ensure you get it. It s peer pressure with mutual benefits. I set the prices as low as I could. Women 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","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 28th, 2015",
"ts": "1432810800",
"summary": "Thanks to Backblaze for sponsoring BrettTerpstra.com this week! A world free of data loss worries: that 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 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 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 27th, 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 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 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","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 27th, 2015",
"ts": "1432746000",
"summary": "Smile has officially released TextExpander 5 for Mac. I ve been in on the beta test round and I 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 s part of your collection. You can ignore words, remove suggestions en masse, or if the suggestions get annoying just disable the feature. I ve found the suggestion feature most helpful when I start writing a piece about a specific product. It s usually a product name with intercaps that I 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 t fathom that any Mac owner isn 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","needed","normally","notifications","offers","officially","often","owner","phrase","piece","preview","product","products","programmatic","reject","released","reminder","remove","requires","round","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 27th, 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 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 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","hundreds","inessential","lemmatizing","locking","monthly","mounted","music","partnership","personal","phone","posts","printing","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 26th, 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 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 s a good time to be writing Mac apps. Whether you 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","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 25th, 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 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","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 22nd, 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 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 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 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 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 21st, 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 t gone the Leap route, here 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 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 someone who only meets with one person at a time anyway 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 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","meetings","meets","others","palette","partnership","party","person","plans","plugin","preferences","preview","productivity","ready","route","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 21st, 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 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","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 20th, 2015",
"ts": "1432141200",
"summary": "Postbox 4 was released last week , and it s good. Yes, I m way behind on blogging, but that s another post. Postbox has long been of interest to me because it offers stability and a degree of extensibility. I 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 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 s inbox. The Domain Fencing feature is new, too, and something I haven t seen implemented anywhere else before. When composing a message or reply, it can intelligently warn you if you re sending it to someone outside of your organization when you shouldn t be, and if you have multiple accounts it can let you know if you re replying from the wrong account. There s a lot more to check out , and you can read the full release notes , but if you 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","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 20th, 2015",
"ts": "1432134060",
"summary": "I ve become an even bigger fan of Sync since BitTorrent released 2.0 , so I thought I 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 s a blog post with the announcement, and the full changelog has all of the details. If you 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","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 14th, 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 s always with you. Version 2.0 came out on March 18, and it 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 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 7th, 2015",
"ts": "1431025140",
"summary": "Ok, so I teased The Shuttle a while ago, but it s ready for sale now. It s a handmade oak holder for the Apple Remote that looks great with the sleek design of the remote. Its raison d ê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 s come a long way since then. Now, thanks to my father s engineering and woodworking skills, it 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 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 t lost it once. I m embarrassed to admit how much better The Shuttle has made my life. - Merlin Mann This is a handcrafted piece that s built to last, and it s not an impulse purchase item. I 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 7th, 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 available on Mac, Windows and Ubuntu 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 a new feature in version 7 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","mobile","notes","object","offers","package","picture","platform","prioritize","project","projects","reschedule","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 6th, 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 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 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","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 5th, 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 t use Dark Mode in Yosemite, but I do need it when testing app UIs. I hadn t paid attention to this option previously, but it 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","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 4th, 2015",
"ts": "1430745600",
"summary": "Joshua Howland, Caleb Hicks, and Andrew Madsen launched a Kickstarter called Wired In today. It s a Bluetooth-enabled desktop sign that lets co-workers know when you re busy. It has the obtuse effect of shutting an office door in an unobtrusive package that doesn 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 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","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","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 3rd, 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 t like cooking more than once a day, and I don t like eating too many frozen meals and processed foods when I 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 s a major entertainment point of cooking for me. Some recipes are just safer to go crazy with than others. I ve gone from vegetarian to carnivore and back to vegetarian, but there s one simple meal a vegetarian sandwich that I ve always enjoyed. I don t know how to name it, and it changes a bit every time I make it. It s kind of a vegetarian Rueben, but very loosely so. Every part of the recipe is tweakable and it s hard to screw up. The meat of the sandwich is tempeh . I start by seasoning it because if you don t, it 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 s handy, rarely planning ahead, and somehow they always seem to work. Next is the sauerkraut. Don t use the stuff in the can that tastes more like can than cabbage. Get the stuff that s still a little crisp and without a ton of salt and sweetener in the brine. It 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 ve used everything from Thai Peanut salad dressing to Worcestershire sauce. Quantity used depends on the strength of the flavor and personal taste. Lightly butter the outside of two slices of bread. Any oil-based spread will work, this is more for browning than",
"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 1st, 2015",
"ts": "1430485200",
"summary": "Not that I plan to make a habit of Friday Freebies, but here s a little something I ve been playing with for a while. It s not an app. It s not even functional. Just a series of rock-lyric-inspired typographic wallpapers for iOS and desktop. I didn 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 More info 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","iphone","inspired","little","lyric","otherstuff","output","permanent","pixel","playing","plunder","possible","primary","random","ratios","ringtones","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 30th, 2015",
"ts": "1430407320",
"summary": "CloudCannon is running a free online conference for all things Jekyll this weekend. If you 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 re not familiar with Jekyll, it s a a simple, blog-aware, static site generator. It s what brettterpstra.com runs on, and how I 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 s page, a blog, or any website from GitHub 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 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.” Mike Neumegen, JekyllConf organizer and CEO of CloudCannon. If you 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 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 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 ve been part of the private beta testing for Jekyll support, and during the conference CloudCannon will be announcing a move to public beta. For a demo of the CloudCannon Jekyll CMS in action,",
"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 30th, 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 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. 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 29th, 2015",
"ts": "1430317320",
"summary": "I haven 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 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 re way behind on Systematic and only have time to catch up on one episode, make it #137 with Molly Holzschlag . Molly s first appearance last week is the beginning of a series where we re going to tell her life story, and it 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 s going to be part of the story, but it 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 s bringing the tools for a future in coding to middle school girls. We 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 ve started bringing guests on board to take the crazy even further. If you re looking for a podcast that 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","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 28th, 2015",
"ts": "1430258160",
"summary": "I m releasing a little side project called StretchLink today. It 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 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 t get a beta round, but it s been tested on a variety of my own machines. If you do run into issues, don 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","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 28th, 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 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 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 s before the time the task runs, it deletes the line and runs the build command. And here 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","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 27th, 2015",
"ts": "1430139600",
"summary": "I frequently use in the shell to get output to the OS X clipboard. I 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 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 if weren t already aliased to for me, I 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","intelligently","little","login","making","manually","meaning","morning","named","needed","output","passed","properly","results","return","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 25th, 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 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 ve been using QuickQuestion more recently. Given 1Password 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 t found the right Sketch plugins yet",
"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","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","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 24th, 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 if it s set in the post will generate custom tags in for description (and its OpenGraph counterparts) with the key 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 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 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 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","metadata","modifications","modify","modifying","needed","object","offer","original","output","passed","passes","passing","plugin","plugins","possibilities","posts","processed","processes","processing","registered","renders","returns","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 24th, 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 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 s Apple Watch support built in to the iOS version, too. Of course. I don t have an Apple Watch yet, so I can t tell you much other than that I 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","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 23rd, 2015",
"ts": "1429786800",
"summary": "Thanks to Mighty Deals and Train Simple for sponsoring BrettTerpstra.com. If you 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 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 even better 97% off a lifetime membership. 5,000+ Video Tutorials Learn Adobe 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 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","membership","normally","notch","offer","official","popular","prefer","price","products","professional","quality","range","regular","regularly","resource","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 22nd, 2015",
"ts": "1429730760",
"summary": "I edited a bunch of MultiMarkdown tables in Sublime Text 3 yesterday, and by about halfway through I d developed a pretty good system. I thought I d document a couple of tricks for my own future reference, and for anyone else it might help. First, you want MarkdownEditing if you re working in Sublime. It 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 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 s ability to tab through cells, this is handy. Table Editor has commands for adding rows, but I 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 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. I have three bullet lists (with no nesting) that I want to insert into the table as columns. There are a couple of ways to do this with about the same amount of efficiency. First, clear out the bullet",
"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","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","tactile"]
},{
"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 21st, 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 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 posts 1 . I like to have these quietly announce themselves (with a little bit of status notification ), just so I know they re running if I m in the office. I love the command in OS X for this purpose. For scripting purposes, it 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 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 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 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 s the audio output, in case you don t want to bother: By the way, Apple recently (10.10.3) broke the command I ve always used for this. I ll post soon about a solution using Automator, osascript, iCloud, and Calendars.",
"keywords": ["applescript","automator","script","shell","apple","applescript","automator","calendars","english","important","jekyll","pushbullet","while","additions","alone","announce","assortment","asterisks","audio","automation","available","based","before","between","bother","broke","bunch","change","changes","command","context","corner","couple","customize","dates","default","deploy","development","devices","different","discovered","doubles","dynamic","errors","exploring","fluid","found","geared","happy","icloud","languages","laptop","levels","little","localities","localized","media","mentioned","minute","mobile","mostly","notification","notifications","numerals","office","osascript","output","posts","provides","quick","quietly","quirks","recent","recently","reports","roman","running","schedule","scheduled","scheduling","script","scripting","scripts","sentences","servers","setting","settings","severity","shell","short","silently","simple","smart","solution","speech","staging","status","string","switch","synthesizer","system","systems","themselves","timbre","toils","toward","useful","usefulness","using","variables","versions","voice","voices","words","years"]
},{
"title": "Web Excursions for April 20, 2015",
"url": "/2015/04/20/web-excursions-for-april-20-2015/",
"tags": ["bookmarks"],
"date": "Apr 20th, 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 s the kind of service you can expect from us here at BrettTerpstra.com. Lightpack ambient backlight for your displays Lightpack creates ambient colors around your monitor or TV based on the color averages being displayed. I ve seen some hacks of the IKEA light strips to do this, but they were beyond my USB programming capabilities. I m very tempted to go for this ready-to-use-but-still-open-source version icefox/git-hooks Dammit, this is something I 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 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 s broken my system, and stumbled on this tool from my old friend Elliott Cable 1 for programmatically creating plist files in Ruby. Apple Watch Vector UI Kit for Keynote and PowerPoint I ve personally moved away from Keynote as a prototyping tool, but Keynotopia keeps making me reconsider that. Sketch Tricks I 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 s what forced me to start learning about proper UI design and intuitive interfaces.",
"keywords": ["central","comedy","daily","stewart","apple","brettterpstra","cable","check","daily","dammit","elliott","excursions","facebook","frozen","jekyll","keynote","keynotopia","launchdr","lightpack","moodblast","powerpoint","setapp","sketch","stewart","treats","tricks","vector","watch","access","admire","admitting","ambient","article","averages","backlight","balanced","based","because","beyond","broken","brought","build","called","capabilities","check","color","colors","community","compiles","creates","creating","design","directory","displayed","displays","edition","ending","excursions","expect","feature","files","forced","friend","getting","globally","great","hacks","handle","having","hooks","hundreds","icefox","incessant","inside","insightful","installed","interfaces","intuitive","keeps","knowing","learning","light","linked","links","locations","loves","making","monitor","monthly","moved","pages","partnership","personally","plist","primarily","programmatically","programming","proper","prototyping","published","publishing","ready","recipe","reports","repositories","requests","researching","respected","scheduled","service","shame","source","special","strips","stumbled","subscription","surrounding","system","tempted","through","today","trying","tutorials","useful","users","vector","version","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 17th, 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 16th, 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 s a great central music player. VOX 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 s also LOOP, an entirely new way to store your music in the cloud. It 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 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 ve always wondered why the default iTunes player in iOS doesn t have it figured out. It 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 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","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 16th, 2015",
"ts": "1429182000",
"summary": "Thanks to Desk App for sponsoring BrettTerpstra.com this week! Desk App , which won Apple 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 15th, 2015",
"ts": "1429126980",
"summary": "I ve been feeling horrible about my lack of posting recently, so this morning I decided to make something to share. It 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 s trigger from existing abbreviations. It can be left blank. You can then copy the URL and use TextExpander s Add Group from URL command, or download the group and add it manually. I 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 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 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 each passage may be. Paragraph limiting simply",
"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","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 9th, 2015",
"ts": "1428577200",
"summary": "Thanks to Smile and their iOS scanning/OCR app, PDFpen Scan+, for sponsoring BrettTerpstra.com this week! 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 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 7th, 2015",
"ts": "1428414300",
"summary": "For a long time I mistakenly associated CleanMyMac with MacKeeper in my head. The latter is awful, let s not talk about them. CleanMyMac, on the other hand, has proven to be a powerful and safe 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 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 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","memory","menubar","mistakenly","monitors","needs","overall","performs","permissions","powerful","privacy","proceeds","proven","realized","receive","reclaiming","reindexing","released","remove","repair","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 3rd, 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 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 s Console API: Greatest Hits There turned out to be a lot of things I didn t know about Chrome 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","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 2nd, 2015",
"ts": "1427972400",
"summary": "Thanks to Eternal Storms Software creator of Yoink for sponsoring BrettTerpstra.com this week. I ve been a fan of Matthias work for years ( back to 09! ), and I m excited to have Eternal Storm 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 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","makes","manages","mouse","music","navigate","photo","photos","providing","remotely","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 1st, 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, though 1 . I have enough tag-based Spotlight () tools worked out in Bash that traversal in the shell has most of the same conveniences 2 , but still, some of those paths There are a lot of solutions available for efficient directory navigation in the shell. Here 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 ve progressed to tools like autojump and z . I 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 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 s path. Once again, I ve aliased all of its features to the same commands I ve been using for bashmarks. Creature of habit. By the way, if you use bashmarks, here 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 s already bookmarked. It uses the command (list bookmarks) and greps for the current working directory: Here 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 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 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 s not the fastest solution, but it doesn t require bookmarking or that the target be a frequently",
"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","endnote","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 26th, 2015",
"ts": "1427391900",
"summary": "I m not mentioning this because I need sales, I really just don t want anyone to ask me tomorrow if I have any more because they missed this t-shirt run. If you ve been meaning to grab one of The Lab v2 t-shirts , now s the time.",
"keywords": ["shirt","teespring","error","anyone","because","countdown","meaning","mentioning","missed","processing","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 26th, 2015",
"ts": "1427367600",
"summary": "I mentioned the launch of MeisterTask last week , and I 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 in real-time 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 re in, you can easily invite your friends and colleagues to collaborate with you on projects. MeisterTask 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","mentioned","mobile","online","outline","perfectly","pleased","project","projects","reality","related","required","right","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 23rd, 2015",
"ts": "1427122800",
"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. It s only been four days since I last posted one of these. They 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 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 s lacking a few finer details at this point, but it s a brilliant idea that s totally usable right now. It 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 s a hack for overriding Ctrl-R with it, too (`bind \\C-r : \\C-a hh \\C-j ). pdcgomes/XCActionBar Holy crap. A keyboard launcher built into Xcode. Hey.Press - Find relevant journalists. For free. I like this idea a lot. It 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 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 s optional the service is promised to be free forever but it s a smart way to get support from users in palettable increments. PRstack 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","major","marketing","matching","often","optional","outlets","overriding","palettable","partnership","pdcgomes","point","posted","press","promised","proposals","public","publicly","quickly","ranging","relations","relevant","reliably","right","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 21st, 2015",
"ts": "1426974240",
"summary": "As you may have noticed if you 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 ll fail finding a function. Thus, where was born. It 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 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 19th, 2015",
"ts": "1426788480",
"summary": "Blink is an app for people who share links to iTunes and Mac App Store apps and use Apple 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 s capabilities anywhere on iOS, it s a great tool for writers and bloggers who want to take advantage of affiliate linking without jumping back and forth between apps. There 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","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 19th, 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 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 ve mentioned before. It s a utility for Yosemite that pops up a visual selector for input received from any script. I mention it again because now it 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 Blippy - GIF Folders Just in case you didn 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","hilarious","input","keyboard","languages","looks","lucky","making","memes","mention","mentioned","midnight","online","partnership","people","programming","ready","received","right","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 19th, 2015",
"ts": "1426762800",
"summary": "Thanks to Elgato for sponsoring BrettTerpstra.com this week! Elgato Thunderbolt 2 Dock lets you connect everything to your MacBook or Ultrabook at once. With two Thunderbolt 2 ports, connect your computer with only one cable and simultaneously enjoy the extended versatility of Thunderbolt . 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 t connected, so you can leave devices charging even when you 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","separate","simultaneously","single","speed","sponsoring","through","today","versatility","wired"]
},{
"title": "MeisterTask: visual task management from MindMeister",
"url": "/2015/03/18/meistertask-visual-task-management-from-mindmeister/",
"tags": ["mindmeister","productivity"],
"date": "Mar 18th, 2015",
"ts": "1426712880",
"summary": "MeisterTask was officially announced today. It 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 ve been trying MeisterTask out in beta for a while now, and it s a pleasure to use. There 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 ve never used MeisterTask before. Tasks can have links, photos, and other attachments connected, including direct integration with MindMeister maps. With MindMeister s collaboration and voting features, it 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 s an API being finalized right now for custom integrations and tools, too. I m excited about this. I m already using it with family and friends for small-to-medium projects, and I think it will scale quite well. It 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","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 17th, 2015",
"ts": "1426604400",
"summary": "I m certain there s a more elegant way to do this, but I couldn t find it. I needed to sort a Bash array of strings by the length of each element without getting too verbose. Here 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",
"keywords": ["proramming","script","scripting","shell","reiki","allows","array","ascending","assume","cared","certain","change","contains","couldn","elegant","element","elements","fuzzy","getting","length","likely","match","matches","multiple","needed","oneliner","quick","reverse","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 16th, 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 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 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 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","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 14th, 2015",
"ts": "1426363920",
"summary": "I m working on a new splash/intro section to embed in Marked 2 . It 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 s become overloaded with options (i.e. bloated ). This simplifies things greatly (details: 1 ). When I 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 s splash page, this ensures it won t load looking awful because the user didn 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 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 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 s not an optimization. It just ensures that the fonts will be available offline. Here s the link to the script again , in case you missed it. The",
"keywords": ["cascading","google","scheme","sheets","style","amongst","fonts","getting","google","marked","quick","stdin","standard","terminal","using","above","again","argument","attempted","automated","available","awful","because","bloated","builds","button","changes","clipboard","coming","command","configuration","declaration","defaults","designing","details","different","directly","double","download","easiest","embed","encode","enough","ensures","exact","executable","external","finished","fonts","forgiveness","freely","gains","gives","going","greatly","groups","hosted","hosts","import","increases","input","interfaces","internet","intro","latter","launched","locally","looking","looks","markup","match","messy","missed","multiple","navigation","needed","nicely","offering","offline","offset","often","optimization","options","output","outputting","overloaded","panel","paste","preference","process","publish","quoted","quotes","reads","ready","recommend","redirect","reducing","remotely","requests","route","satisfy","script","search","section","selection","series","serves","shown","significantly","simple","simplifies","single","skeleton","slides","source","splash","started","statements","steps","strings","system","target","tedious","themes","transitions","usually","whole","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 13th, 2015",
"ts": "1426281420",
"summary": "I ve had a few requests from people who missed the first (limited) run of The Lab v2 t-shirts . I think there s enough interest to do a small run, so if you missed out the first time around, now 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 t like, so that 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 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","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 12th, 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 s new, what more to explore, and what 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","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 11th, 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 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 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 A JSONP to HTML Script 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 8th, 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 re not a developer, there s plenty of great stuff for both power users and aspiring power users. I 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 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 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. 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 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 s a perfect overview in a compact and easily-accessible interface. I 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 m lost without. I have extensive gestures set up for my trackpad, as well as keyboard shortcuts. It s not as powerful as Keyboard Maestro for keyboard tasks, but it s all I need for just about every shortcut I want to assign. It even powers my Leap Motion Minority Report setup , and there s an iOS companion ( BTT remote ) for even more fun. I ll include FastScripts in this mix as well because it lets me easily add keyboard shortcuts to any AppleScripts available, with the",
"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 5th, 2015",
"ts": "1425588480",
"summary": "Marked 2.4.11 is out in the updater for direct customers (MAS update coming, hopefully soon). It 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 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 s weird to have a celebratory sale for an incremental release, but I 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","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 4th, 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 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 most vulnerable OS despite shoddy reporting I 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 t like about this Sublime Text 3 theme is the group headers in the sidebar, and even they 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","mapping","metaflop","modulator","obvious","online","partnership","party","points","productivity","project","raised","report","reporting","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 3rd, 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 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","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 3rd, 2015",
"ts": "1425409200",
"summary": "As you probably know, I 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 ve been beta testing version 2.0 and am excited to announce that it s stable and available today! The core features of Sync are available for free. There 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 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","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 1st, 2015",
"ts": "1425233820",
"summary": "You re a high schooler. You love music. You want to play music. Not marching band music, and orchestra isn t cutting it for you. You want your own band. You 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 s going to be a rock band, but you have a friend who 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 t need much experience, and a guitar player can usually pick up bass reasonably well, but you don t just pick up drums. But you found them all, eventually. Then you had to find a rehearsal space. You couldn t afford to rent a space, so you find garages and basements at whoever 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 t go well. Maybe it went badly enough that someone in the band gives up and you start the search again. Maybe, though, you 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 t as bad as you thought. Soon you get more cohesive. You get better. Then it 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 s wage. You can t afford good mics, though, so even if the noise bed on that 4-track weren 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 mess. But you can make it out. You can live with it. You make the rounds to the local all-ages",
"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","house","humiliation","imagine","indistinguishable","insane","keeping","keeps","label","labels","later","launch","lessons","letting","level","listeners","little","local","louder","magnetic","makes","making","marching","maybe","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","sales","school","schooler","schoolers","scrap","search","seemed","showing","shows","showstoppers","silent","singer","singers","situation","small","soldier","songs","sound","soundboard","sounded","space","sport","stardom","starting","starts","stereo","studio"]
},{
"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 26th, 2015",
"ts": "1424952000",
"summary": "Thanks to Paddle for sponsoring BrettTerpstra.com this week. I use Paddle for Marked 2 and it s been so good that I 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 m receiving opt-in analytics info that 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 re restricted to specific platforms. That 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 s daily/weekly/monthly active users, where in the world they 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 s no need for complex configurations. Developers wanting to dig deeper can also upgrade to Paddle s Plus packages (starting at $10 per month) to create their own custom, app-specific metrics. Whether that s tracking the number of documents created, level-ups in a game, or tasks created, custom metrics provide the data that s relevant to your app.",
"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 25th, 2015",
"ts": "1424899620",
"summary": "I ve been tweaking the Titler Service I published last week a bit over the last few days. It 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 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 More info",
"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","https","improvements","little","longer","methods","network","nokogiri","official","optionally","original","pairs","parsing","problems","project","published","pulling","punctuation","regex","remove","replaced","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 23rd, 2015",
"ts": "1424700000",
"summary": "If you use Cheaters , you may also be the type of person who uses Sketch . If so, you 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 re new to Cheaters, check out the documentation and download it from the project page . I should also note that there 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 s not the case, I can only imagine what possessed you to read this far. Either way 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 s a fix I think will be handy to others, but I wouldn t want any extra traffic 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 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 s useful to somebody",
"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","imagine","index","installed","latest","nerds","noticed","occasionally","others","outer","pages","person","position","possessed","project","properties","reset","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 21st, 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 t going to make a home theater for you, the automation capabilities and potential uses make it fascinating. To me anyway. Because I m a dreamer. Five minutes to Markdown mastery If you haven t figured out Markdown yet, here 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 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 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","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 20th, 2015",
"ts": "1424466000",
"summary": "I know I ve been a bit slower on posting the madness from the lab lately. I ve been working on more and more larger projects that have two results on my blogging: I don t have as much time to document smaller tricks and tips to an extent where I m comfortable posting, and I m not finishing as many shorter-term projects to woo you with. I think the end results of the things I m working on will be of interest to many of you, but they re taking some time 1 . It 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 m offering less content in the short term. However, a recent surgery and some hefty auto repair bills 2 have strained my wallet, and combined with the fact that the projects I m working on won t pay off until they re finished, I think it s worth a shot. I m not appealing to your sympathy, though. I 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. 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 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 m putting up with it. I like Nissans, but that Murano is slowly killing us. No, not slowly. Quickly. My Audi repair costs pale in comparison.",
"keywords": ["donation","drive","paypal","pledge","however","markdown","marked","memberful","murano","nissans","paypal","quickly","thanks","amount","appealing","appreciate","appreciation","asked","asking","because","between","bills","blogging","build","certainly","choose","comfortable","commercial","comparison","complain","content","continuing","corporate","document","donated","donation","effort","everyone","feasible","finished","finishing","former","guilt","guilty","hefty","hours","indie","interest","killing","larger","latter","madness","makes","mentioned","monthly","mostly","mutually","offering","pledge","possible","posting","prefer","prick","projects","publicly","purchasing","putting","recent","repair","results","share","short","shorter","since","slower","slowly","small","smaller","somehow","split","strained","subscribed","support","supported","surgery","sympathy","taking","think","through","tools","tricks","wallet","weekend","where","while","workflows","working","worth"]
},{
"title": "Shell trick: printf rules",
"url": "/2015/02/20/shell-trick-printf-rules/",
"tags": ["scripting","shell","terminal"],
"date": "Feb 20th, 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 s made string formatting and terminal output so much simpler. Check out the man page (and some more info on format strings )if you 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: 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.",
"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","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 19th, 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 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 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","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 18th, 2015",
"ts": "1424301840",
"summary": "Guess what? This is the 100th project ( see? ) I ve made available for download on this blog. I don t know what that means in the grand scheme of things, but I feel like I should celebrate. I ve been making a lot of new tools lately, but I ve been short on free time to polish and document them for sharing. I have a growing list of tools and projects that I m hoping to get around to posting soon. Oh look, here 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 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 setup 1 . You need to have the nokogiri gem in your system Ruby install. That 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 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 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. URLs are affiliated and cleaned. Your selection is left",
"keywords": ["adsense","locator","resource","affiliatize","amazon","changelog","donate","download","extract","first","google","guess","installing","links","markdown","published","searchlink","service","services","system","terminal","titler","updated","welcome","yosemite","ability","affiliate","affiliated","affiliatization","alone","appends","available","based","before","behavior","below","brackets","breaks","bulleted","called","celebrate","change","choose","cleaned","cleans","click","clipboard","config","configured","containing","contents","couple","create","default","directory","document","documented","doing","double","download","entirely","extension","finding","finds","finished","first","flavor","flavors","format","freaking","gather","grand","growing","hoping","hours","itunes","identical","included","inline","inserted","install","installing","label","leaves","length","links","making","manager","maximum","neatly","needed","nokogiri","notes","often","output","parenthesis","paste","podcast","polish","posting","process","project","projects","quotes","rabbit","referrer","regular","removes","replace","results","right","running","scheme","second","selected","selection","service","setting","settings","setup","sharing","short","specifically","square","steps","switch","system","third","title","titles","tokens","tools","trouble","truncate","unzip","updates","version","versions"]
},{
"title": "The details count with Tally 2",
"url": "/2015/02/17/the-details-count-with-tally-2/",
"tags": ["appreview","appstore","iphone"],
"date": "Feb 17th, 2015",
"ts": "1424199600",
"summary": "I 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 like me have trouble remembering a number when there 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 t even need to be looking at your phone. You can swipe down to decrement the count. That 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 re focusing on what you re counting and not on your phone. There 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 t built it into anything yet. Check out Tally 2 on the App Store . It 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","iphone","increment","infinitely","integration","interface","intriguing","intuitive","launch","looking","makes","needed","night","persistent","phone","purchases","quick","remembering","repeating","reset","right","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 17th, 2015",
"ts": "1424185200",
"summary": "Once upon a time, there was a fun personal database app for Mac called Bento (from FileMaker). It s been a long time since Bento was discontinued and there s been a several-year gap since we ve seen a good replacement. Push Popcorn 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 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","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 16th, 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 MacSparky David Sparks is the only lawyer I ve ever enjoyed working with, and I ve really enjoyed it. He 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","opens","options","partnership","plunge","possibilities","powerful","practice","prevent","programming","projects","published","respective","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 14th, 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 t previously opened. It will make life (and customer support) easier all around. If you 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 s first run. Marked 2.4.10 adds new features such as: I 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 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 If you haven t tried Marked 2 out, there s a free trial available. Grab it and try it out!",
"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","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","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 12th, 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. 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","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 10th, 2015",
"ts": "1423601040",
"summary": "Spotlight is great for finding files without digging through folders. It s great with tagging. It 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 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 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 s a free trial, and it s $29 US if you want to keep using it. If you like being able to find your files efficiently and accurately, it 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","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 6th, 2015",
"ts": "1423259820",
"summary": "I ve always recommended using MindMeister as a collaborative mind mapping / brainstorming platform. It s great for group brainstorming or for sharing ideas in easy-to-parse formats. It recently got even better, though. There 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 d never realized how much I needed this when sharing maps until I tried it. If you re a MindMeister user, you 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 t tried MindMeister yet, here 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","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 6th, 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 s an accurate description of the learning curve when getting into software development. Appendix: Google s website crawlers Did you know you can specifically address Google crawlers with meta tags and element classes? I didn 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 s mind sometimes. Some creative uses for a Twitter feature you d probably rather didn t exist. Edit Droplr Notes Online This is great. Too often I ve had to let a mistake slide in a note I pushed to Twitter, or had to create multiple notes because I didn t catch an error before sending. Droplr continues to be my file/link/note sharing service of choice. And in case you didn 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","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 5th, 2015",
"ts": "1423168500",
"summary": "It s been a while since I brought up keybindings. If you haven 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 ve assembled. To summarize, KeyBindings on OS X can provide all kinds of text editing assistance that s available and consistent across every app you use. One thing I 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 s what s used when you use C6;k to delete text. It s more expansive in the shell or in Emacs, but it 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 t yank in another app. That being said, here s a handy trick that makes using it worthwhile: multiple clipboards using the kill ring. Note: Most instructions you 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 ve done this before) a text file at . If you 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 re a Bash user, you can use a wider variety of Emacs shortcuts to delete/copy text. Most importantly, you can use to delete backwards to the previous whitespace, or",
"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 5th, 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 s become so much easier since iPhone 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 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 s the key feature, but there 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 t use folders to organize your notes. Instead, it uses a more powerful system incorporating #hashtags and @mentions, and they ll sync across all of your devices with iCloud. Letterspace was just released last week. It 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","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 2nd, 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 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 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 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 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 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 d like to write for TUAW. He was on his way out, on to writing for Ars Technica, Macworld, and more, and he 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. , signing on to write for TUAW. I think",
"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 29th, 2015",
"ts": "1422532800",
"summary": "A big thanks as always to Smile for their support of BrettTerpstra.com. It 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 s powerful mobile PDF editing app. Add text, images, and signatures to PDFs Correct text in original PDFs via editable text blocks Fill PDF forms, now including specialized signature fields",
"keywords": ["character","document","format","icloud","iphone","optical","pdfpen","portable","recognition","smile","store","airdrop","bates","brettterpstra","drive","increase","pdfpen","protect","share","smile","access","annotation","automatically","blocks","brings","computers","depend","devices","documents","editable","editing","encryption","features","fields","forms","highlighting","highlights","honor","icloud","iphone","images","including","level","makers","mobile","navigation","numbering","original","pages","password","powerful","privacy","productivity","professional","protection","provides","sidebar","signature","signatures","smoothly","software","specialized","sponsoring","store","support","thanks","tools","useful","users","using","version","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 28th, 2015",
"ts": "1422463620",
"summary": "I 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 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 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 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 ve always hesitated to make a declaration like this. But 1Writer has developed into a truly great companion for nvALT. I ll update if others reach its level, but for right now, if you 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","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 24th, 2015",
"ts": "1422133200",
"summary": "I just published project called Reiki , a shell function that I 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 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","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 20th, 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 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 ve been unusable in web applications when served directly from GitHub. Here 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","hosts","iterm","inspired","living","makes","mapping","markdown","partnership","people","productivity","proper","prototyping","repositories","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 20th, 2015",
"ts": "1421762400",
"summary": "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 m going to sell it to you. It won t be cheap, these are handmade, built to last, and gorgeous. Also guaranteed to work (I haven 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","hiding","larger","longer","mechanical","paper","pieces","production","prototype","prototyping","remote","remotes","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 17th, 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 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 t know what he looked like (turns out he 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 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 s Marina Epelman in the background, too, whom I didn t know at the time but she 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 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 re really passionate about this 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 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 s as charismatic, smart and funny in person as I had imagined. Merlin 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 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","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","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 16th, 2015",
"ts": "1421451300",
"summary": "I made an Übersicht widget to fix an Übersicht frustration. Actually, it s a frustration with every desktop info app I 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 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 t confidently pronounce the word, but I figured out a way",
"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 15th, 2015",
"ts": "1421364240",
"summary": "A big thanks as always to Smile for their support of BrettTerpstra.com. It 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 s powerful mobile PDF editing app. Add text, images, and signatures to PDFs Correct text in original PDFs via editable text blocks Fill PDF forms, now including specialized signature fields",
"keywords": ["character","document","format","icloud","iphone","optical","pdfpen","portable","recognition","smile","store","airdrop","bates","brettterpstra","drive","increase","pdfpen","protect","share","smile","access","annotation","automatically","blocks","brings","computers","depend","devices","documents","editable","editing","encryption","features","fields","forms","highlighting","highlights","honor","icloud","iphone","images","including","level","makers","mobile","navigation","numbering","original","pages","password","powerful","privacy","productivity","professional","protection","provides","sidebar","signature","signatures","smoothly","software","specialized","sponsoring","store","support","thanks","tools","useful","users","using","version","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 15th, 2015",
"ts": "1421330400",
"summary": "I ve been talking with the folks behind Fetching about future plans for the app. I m excited about what they 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 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'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","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 13th, 2015",
"ts": "1421178240",
"summary": "My favorite Mac mini colocation service, macminicolo , turned 10 today. There s a great timeline post on their blog that chronicles the history of the Mac mini and of macminicolo itself. They didn t ask me to post this, but they ve been long-time supporters (and sponsors) of this blog and I 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 s been a great, low-cost solution for Mac owners since it 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 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 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 re running a headless mini (on macminicolo or elsewhere), check out this blog post on HDMI dongles. Tricking the mini into thinking you 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","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 11th, 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 m always up for playing with new monospace coding fonts Aqua Notes - Waterproof Notepad These came up in Systematic 125 (coming soon), and I 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 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","hoping","kotfu","living","marked","monospace","notes","partnership","pencil","playing","recipes","regular","reliably","required","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 10th, 2015",
"ts": "1420921920",
"summary": "Vitag has proven useful enough to me that I 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 alias , but it 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 re each used on. It s headed toward a tag-suggestion and cleaning set of tools, but isn 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","pairs","point","polish","project","proven","requires","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 8th, 2015",
"ts": "1420718400",
"summary": "WinterFest goes for just a few more days, and it s an effort that I 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 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, what might that little book look like? I sketched a fast outline in Tinderbox. I 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 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","massage","myself","nineteen","notable","offer","online","outline","pasted","posts","price","prices","projects","proposal","proud","quick","reading","rearrange","relevant","repositories","right","rooting","rough","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 6th, 2015",
"ts": "1420562460",
"summary": "I ve heard from a few people that this script might be useful to them. I ve also created an app version of it you can run, but it still takes a wee bit of command line setup. It s pretty simple, though, and I 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 t technically need to be open to do this, but it will only sync your latest bookmarks from other devices when it 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 toread as well as a .readinglist 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 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 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 t need to modify BOOKMARKS_PLIST Here s the script version, and you can grab the Automator Workflow below. Note that this is the first time I ve ever published a Python script and I m still feeling my way around building CLIs with it. I 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 More info",
"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","including","install","latest","launch","library","marked","minute","modify","newer","parse","people","permissions","pinboard","posting","private","published","pulled","readinglist","recall","recorded","regardless","right","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 5th, 2015",
"ts": "1420501560",
"summary": "If you re driving in a snow-covered state this winter, here are some basics, presented with my normal lack of scrutible levity. Don 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 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 re already stuck in a ditch with 3 of snow and your cell phone is dead 1 Whiskey doesn 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 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 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 re already an adult who doesn 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 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 t fuck with it if you haven t had some practice If any of this does not make sense, stay home Side note to my Wisconsin friends: if you 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 re in the left lane, it does indeed mean you re being stupid. Thank you for reading, and stay safe out there. Except for folks who have 50°+ weather right now, you just",
"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","endnote","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 5th, 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 s the result. It 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 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:",
"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","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 5th, 2015",
"ts": "1420466400",
"summary": "It s that time of year again. Well, I 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 s a pretty complete list. I m including some of the hardware purchases I 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 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 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 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 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 ve also been working with Hype2 for HTML5 animations. There aren t many of worthy competitors left in this arena, but Hype2 has done a great job for me thus far. Macaw is a newcomer this year, and is an impressive tool for responsive design",
"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 1st, 2015",
"ts": "1420113600",
"summary": "Thanks to Harvest for sponsoring BrettTerpstra.com this week! Managing teams is hard. Imagine it s Monday morning and your team doesn t know what they re working on for the week. Plans change and schedules change with them. Spreadsheets weren t built for this. Harvest Forecast is a tool designed to plan your team s time. Visualize schedules in Forecast and easily adjust them as needed. Forecast keeps your team s expectations on the same page and helps you move projects forward. As new projects come in, you ll know who 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","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 29th, 2014",
"ts": "1419888600",
"summary": "There 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 t want. Just full versions of some great artisinal software . If you re missing any of these apps (and especially if you re a writer), now 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","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 26th, 2014",
"ts": "1419640680",
"summary": "Vitag is a quick script I wrote today that I think might be useful to others. I don 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 s in the brackets, save and close, and those changes are immediately applied. It s rough, I just wrote it tonight, but it seems solid thus far. I 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 More info",
"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","instructions","opens","others","people","project","quick","rough","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 26th, 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 ve seen but didn 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 s a set of typewriter Cherry Blue keycaps, compatible with any Cherry MX board. That 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 s at on GitHub and install it with . It s quite stable at this point 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 s what 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 ). 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 A script for maintaining a collection of templated git hooks on your development machine and keeping every project that gets them installed up-to-date with any",
"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","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","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 25th, 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 s an amazing story teller, and it 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","shared","story","teller","together","uninterrupted"]
},{
"title": "Dropzone 3 [sponsor]",
"url": "/2014/12/25/dropzone-3-sponsor/",
"tags": ["developer","dropzone","sponsor"],
"date": "Dec 25th, 2014",
"ts": "1419508800",
"summary": "I m honored to have Dropzone 3 from Aptonic as this week s sponsor. It 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 Add to Grid 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 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 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","major","needed","opens","others","overhaul","powerful","productivity","progressing","quick","recently","released","reorganise","rewritten","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 24th, 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 ve never worked in a department store and apparently have not had much contact with adult scissors before. It 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 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 d still make you a nice card, though I might leave a blank spot so you can customize the message. It s not that I don 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 m not a monster, I just know that I would appreciate the extensibility option if it were offered to me. No? That s ok, I 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 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 surprised by something written inside a card? Probably not. You",
"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","saving","scissors","seemed","sentiment","share","shopping","siblings","signature","signed","since","skilled","social","space","spawn","spending","stand","standing","store","stores","surprise","surprised"]
},{
"title": "Slopes 1.4 for winter sports lovers",
"url": "/2014/12/22/slopes-1-dot-4-for-winter-sports-lovers/",
"tags": ["appreview"],
"date": "Dec 22nd, 2014",
"ts": "1419272520",
"summary": "This year at WWDC I ran into Curtis Herbert, who showed me an iPhone app he d developed called Slopes . It 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",
"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","iphone","iphones","ignore","images","impressed","information","integration","interactive","latest","makes","management","metrics","outing","outlast","phone","previously","released","replays","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 20th, 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 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","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 18th, 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",
"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 13th, 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 s simple . We let loose a bit, and ended up with an explicit tag. It 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 s obviously Obama s fault Gopher, your first BBS, and of course 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","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","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 13th, 2014",
"ts": "1418488920",
"summary": "CodeRunner 2 from Nikolai Krill is out, and it s pretty awesome. In case you 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 t already a CodeRunner user, you 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 s a free trial available. You ll also find a list of all supported languages on the homepage . Before you ask, yes, I ve heard of Peppermint and am quite impressed with it. CodeRunner is still my default right now, and I 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","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 11th, 2014",
"ts": "1418338860",
"summary": "iTextEditors continues to be one of the most popular destinations on this site, but it s getting a little bit stale. I ve kept it up to date with all of the submissions that come in, but I ve seen a dozen new text editors come through the App Store that I haven t had time to try out. I need a hand. If you re not familiar with iTextEditors, it s a feature comparison chart for iOS text editors that includes up-to-date App Store information for every editor it covers. I ll be adding new criteria to it soon, and finally finishing a mobile version, but it s a great overview as is 1 . 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 s worth adding your app. The chart gets a few hundred views every day, and sometimes thousands depending on who s linking to it at any given time. It s good exposure, and it takes five minutes of your time to be on it. If you re a user who has experience with any iOS text editor, whether it s for notes, journaling, or long-form writing, your contributions are greatly appreciated. I m always looking for new submissions, corrections, and updates. If you know of an editor that should be included but don 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.",
"keywords": ["apple","dropbox","icloud","store","among","bittorrent","click","markdown","store","adding","answers","appreciated","chart","click","column","community","comparison","continues","contributions","corrections","covers","criteria","custom","depending","destinations","develop","developer","dimensions","dozen","editing","editor","editors","experience","exposure","familiar","feature","filter","finally","finishing","flavors","getting","great","greatly","handles","haven","headers","highlight","hopefully","hundred","iphone","itexteditors","included","includes","indicating","information","journaling","keyboard","latest","linking","little","looking","minutes","mobile","needs","notes","others","overview","popular","requirement","resource","sometimes","specific","stale","submissions","support","takes","thousands","through","title","updates","usage","version","views","worth","writing"]
},{
"title": "In preparation for the new Systematic",
"url": "/2014/12/11/in-preparation-for-the-new-systematic/",
"tags": ["music","podcast","systematic"],
"date": "Dec 11th, 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 s a new logo. It s pretty. A big thanks to Jory Raphael for this one: I couldn 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 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 s a bigger story to tell, I won t hesitate to go over the mark. There 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","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 11th, 2014",
"ts": "1418312100",
"summary": "I apologize for being a little slow on posting for a bit now 1 . Here 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 s in the clipboard before pasting, without going to a clipboard manager or dumping to a text file. It s especially useful when you 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 s not just the recent surgery, it s that I 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 ve been running out of time and energy to write them up in detail. More coming soon, though, I promise.",
"keywords": ["command","interface","jekyll","pbpaste","convenient","jekyll","shell","terminal","tricks","while","access","affecting","alias","apologize","applications","before","buffer","built","check","clipboard","coming","command","commercial","connected","content","contents","copied","detail","double","dumping","energy","especially","executing","freebies","going","hitting","including","index","landing","legitimate","little","machine","makes","manager","metadata","mnemonic","opposed","outputs","pager","pages","paste","pasteboard","pasting","piped","plenty","plugin","posting","posts","preview","promise","quick","recent","remote","running","screen","series","simple","simply","surgery","system","useful","value","verify","wanted","working","write"]
},{
"title": "Drobo and Transporter Holiday Deals [sponsor]",
"url": "/2014/12/11/sponsor-drobo/",
"tags": ["sponsor"],
"date": "Dec 11th, 2014",
"ts": "1418299200",
"summary": "I 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 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 5th, 2014",
"ts": "1417811880",
"summary": "The first episode of the new Overtired on ESN is up. It s me and Christina Warren ( @filmgirl ) talking about things that people talk about, and a lot of things they don t. Even I find it fascinating. Check it out , and if you haven 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","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 4th, 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 3rd, 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 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 (there 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","ithoughtsx","import","including","lists","little","numbers","options","outline","parameter","people","popping","queue","quirks","quotes","readability","relatively","return","right","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 2nd, 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 s first version, except that they 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 s not a lot in the way of advanced editing capabilites, yet, but I 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 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","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 2nd, 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 t know him personally, but I ve been followig his work and buying his stuff for a while. I mention this because he 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 s a $100+ value, and it s $44 today. If you re a Sublime Text fan, it 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","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 28th, 2014",
"ts": "1417222140",
"summary": "I didn 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 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 version support -l 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. -l c:email shows all contexts containing a fuzzy match of email ) -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 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","match","matching","methods","otask","optional","output","project","projects","pushed","receive","results","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 28th, 2014",
"ts": "1417197840",
"summary": "I m not a fan of Black Friday. You probably think I m a snob for saying that, and that 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 t like to go shopping even on quiet days. If you re reading this, it means you re not scampering through WalMart scavenging shelves of stuff that still isn t worth what it s priced at. You re at home wondering how pretentious I must be to write a blog post about hating Black Friday. That 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 t know what to do with it. It s still more thoughtful than that Amazon Gift card you were planning to order. I m not a fan of Cyber Monday, either, for the record. It 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","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 27th, 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 25th, 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 t have to deal with the repurcussions (e.g. notifications) of starring everything. I d love to see this integrated with a bookmarking tool of some kind 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 s name tool a run for its money. Viewport Sized Typography Yes, Chris wrote this in 2012, but I 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 s really cool in Chrome and Safari. I should probably start testing stuff in Firefox again soon 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 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.",
"keywords": ["cascading","firefox","github","javascript","jquery","sheets","style","astral","belle","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","author","availability","badges","based","because","bookmarking","brilliant","brought","challenge","check","click","coming","common","company","contents","custom","dates","developers","dimensions","domain","elements","everybody","everything","excursions","executing","filtering","finding","funny","generation","great","helpers","helps","hundreds","ideas","includes","inserting","integrated","interface","keyboard","markdown","meaurements","money","monthly","nonetheless","notifications","offers","partnership","piece","preprocessor","references","repetitive","repos","repurcussions","right","similar","sizes","sizing","sorting","starred","starring","startup","stuff","subscription","suggestion","table","tagging","tasks","testing","through","times","today","tools","transclusion","ultimate","variable","viewing","viewport","website","world","write","wrote"]
},{
"title": "Systematic and Overtired are moving!",
"url": "/2014/11/24/systematic-and-overtired-are-moving/",
"tags": ["overtired","podcast","systematic"],
"date": "Nov 24th, 2014",
"ts": "1416846120",
"summary": "I 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 t been allowed to eat since midnight and I can 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","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 22nd, 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. 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 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 More info As a side note, here 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","higher","indexed","install","level","levels","linked","needed","needing","original","outputting","override","parse","point","process","readmes","recognizes","recorded","redirection","repeat","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 21st, 2014",
"ts": "1416596400",
"summary": "If you missed it, you can catch my review here . Don t forget that it 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","simple","trial","videos","winners"]
},{
"title": "The Transporter private cloud [Sponsor]",
"url": "/2014/11/20/the-transporter-private-cloud-sponsor/",
"tags": ["sponsor"],
"date": "Nov 20th, 2014",
"ts": "1416484800",
"summary": "A big thanks to Transporter for sponsoring BrettTerpstra.com this week. I 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 18th, 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 s called WALTR , and if you collect videos in any iTunes-incompatible formats, you 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 t have time to test that ) 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 s dropzone. It crunches them and uploads them to your device in one step. You don t even need to open iTunes. Honestly, I don t collect a lot of video files. When I watch movies, they 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 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 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 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 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 t win, you ll still have a chance to grab it at the intro price. See? I 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","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","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 18th, 2014",
"ts": "1416322800",
"summary": "Hackito Ergo Sum published a security analysis on Sunday, and it 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 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 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 t private keys, they re essentially just identifiers for a folder. You can 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 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 ll be the first to admit that I don t have enough security expertise to assess all of the potential dangers presented. I m personally satisfied with the response from Sync for now. I 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. We’ve gone through the claims made by Hackito and after reviewing it",
"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 18th, 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 or even binaries located outside of a default scope it won t return anything. The alternative is the shell builtin . When you use , it will tell you whether it 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 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 re trying to remember what 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","options","outside","overriding","possible","priorities","remember","results","return","returns","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 17th, 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 s pretty cool. It uses choose with doing to provide a graphical interface of sorts Crumbles Crumbles are kinda like reaction GIFs with a way bigger vocabulary 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 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 Spotlight 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","iphone","images","interface","kinda","kinds","learns","mapping","missing","partnership","personality","plugin","productivity","reaction","responds","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 17th, 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 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 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 BetterTouchTool 1 . 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 t had much luck making it work with launchers (LaunchBar, Alfred, etc.), but I m sure there are ways.",
"keywords": ["applescript","interface","alfred","applescript","bettertouchtool","easily","fastscripts","javascript","keybindings","launchbar","popclip","yosemite","above","accidentally","action","annoyance","before","below","choice","choose","command","dismiss","easily","expand","expect","extension","finger","fingers","fixed","fortunately","functionality","giggles","hacking","handy","haven","invoking","keyboard","kinds","launchers","making","natural","paragraph","popping","popup","provides","script","selected","selecting","selection","sequence","shortcut","shows","simple","simply","single","starting","swipe","tools","trackpad","trigger","triggered","using"]
},{
"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 14th, 2014",
"ts": "1415996460",
"summary": "If you 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 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 t override existing shortcuts ). 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 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 13th, 2014",
"ts": "1415880000",
"summary": "I m pleased to have TextExpander touch from Smile as this week s sponsor. Seriously, if you re not using TextExpander on your iOS device (and your Mac) yet, you re missing out. Whether it s a simple email signature or several paragraphs of a standard response, you 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 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","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 12th, 2014",
"ts": "1415816280",
"summary": "It 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 re intrigued by some of my command-line posts but would prefer to have someone who 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","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 10th, 2014",
"ts": "1415638860",
"summary": "I m officially announcing SearchLink 2.2.0 today. It s still free (for now), and I m really excited about this update. The documentation has been updated and the changelog is immense. If you re new to SearchLink, it 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 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 t get in your way if you never need it. Whether you 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 s worth knowing about the new syntax and options. Here 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 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 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 s id the reference definition will be moved to the end of the document create footnotes with if id isn t specified, one is generated footnotes are",
"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","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","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","today","together"]
},{
"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 9th, 2014",
"ts": "1415561400",
"summary": "I ve mentioned previously that I ve been using mind maps frequently when writing. It 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 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 ll see the changes in the resulting Markdown document, previewed in whatever theme you 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 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 s already a very useful tool. I 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 d like to acknowlege a severe bug in Marked 2 on Yosemite which occurs after an export. If you ve run into this bug, know that I 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","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 6th, 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 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 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 6th, 2014",
"ts": "1415275200",
"summary": "I 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 ve been working on forever just disappeared! This happens to people everyday. If it happens to you, don 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 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 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 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","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 3rd, 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 s this piece of it as a Service and a CLI. It 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 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 s (24mb in kb) in Kilobytes). The file had a size of 25165824, which converted to 24.00MB (that s 24576.00KB in Kilobytes). I don t know how many people will ever have a use for this, but I liked the regex enough that I figured I should share it 1 . 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 More info 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 (it s 88.82 petabytes)",
"keywords": ["bytes","conversion","bytes","changelog","convert","donate","download","example","first","github","human","kilobytes","piped","published","random","stdin","searchlink","service","system","updated","yottabytes","adding","argument","arguments","becomes","below","between","block","bytes","capacity","click","command","containing","conversion","converted","curious","decided","double","enough","executable","features","figured","formats","former","genesis","human","input","install","larger","liked","machine","making","memory","multiplier","parentheses","people","petabytes","piece","pipes","possible","prepping","quadrillion","ranging","readable","recongized","recording","regex","representation","representing","return","rewrite","right","script","share","shipped","sizes","someday","specify","surrounded","syntax","syntaxes","translated","unzip","where","works"]
},{
"title": "Web Excursions for November 01, 2014",
"url": "/2014/11/01/web-excursions-for-november-01-2014/",
"tags": ["bookmarks"],
"date": "Nov 1st, 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 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 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 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 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 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","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 28th, 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 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 t know, here s the scoop 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 s additional logic or just more complex manipulations than simple syntax provides. That 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 s just the full string of the overall match. You do have access to the operators, which you can use for referencing capture groups (,, ) in the match. However, you also have access to , which provides a object for the current iteration with all of the capture group 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 t go into a detailed example, but here 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 s an overdrawn example to illustrate a simple one-liner: Loads of fun. Of course this is only useful for string manipulation/processing up to a certain limit, at which point you ll probably want to start",
"keywords": ["blocks","expression","regular","'cheshire","'cheshire'","'cat'","'grin'","can't","cheshire","hatter","however","loads","matchdata","regexp","store","string","stringscanner","typically","we're","within","access","aceghns","addressed","allows","alpha","among","among","anybody","argument","array","available","based","before","block","bracket","brettterpstra","broader","calls","can'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're","where","width","within","wouldn't","wouldn't"]
},{
"title": "Web Excursions for October 27, 2014",
"url": "/2014/10/27/web-excursions-for-october-27-2014/",
"tags": ["bookmarks"],
"date": "Oct 27th, 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 s a Chrome plugin that translates between various humane markup formats (Markdown, Textile, MediaWiki, etc.). It 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 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 25th, 2014",
"ts": "1414284660",
"summary": "I 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 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 ve updated it in a few ways for version 1.5. I 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 ll need to include information for iTunes and/or Amazon affiliate accounts. There 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 s not the most convenient configuration method, but Services don t offer a lot of options. I 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 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 More info",
"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","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","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 22nd, 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 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 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","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 22nd, 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 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 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 s archive support, it 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 s recently-added support for versioning, it 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 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","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 21st, 2014",
"ts": "1413922080",
"summary": "*Updated: * I didn t know about it when I thought of this, but there s a relatively large initiative already started by Luc Vandal called #RateFriday . I don t care which day you choose to do your civic App Store duty, I m just happy you re doing it. Here s a thought, albeit a slightly cheesy one: let s institute App Review Tuesdays. It 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 re otherwise satisfied with, you re affecting the developers rankings while simultaneously preventing them from contacting you to help you out. It s a lose-lose. On the flip side, if you attempt to contact a developer and don t receive a response, or get a response that only makes things worse, a review stating such can be helpful. I 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 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 s what I 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 re not sure what to drop a rating on, just open up a Spotlight search in Finder (⌘⌥-Space), type in kind:app and arrange by Last Opened. See what you ve",
"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 21st, 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 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 s nearly done! Don 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","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 20th, 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 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 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","overview","package","partnership","possibilities","robkitson","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 15th, 2014",
"ts": "1413406800",
"summary": "Drafts 4 is out as a Universal app. I ll leave it to the experts to offer the full review, and just mention that there 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 m excited about this because it s going to be relatively easy to port the tricks I built for my old WordPress plugin, Markdown QuickTags . I 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","selections","tricks","working"]
},{
"title": "On creation without consumption",
"url": "/2014/10/13/on-creation-without-consumption/",
"tags": ["learning","personal"],
"date": "Oct 13th, 2014",
"ts": "1413228600",
"summary": "I do two podcasts on 5by5 ( Systematic and Overtired ), but I ve admitted many times that I rarely listen to podcasts. I m often asked why (and how) that is, and I d like to share the results of some self-examination. In short, my brain isn t wired for consumption. I m happiest creating. It 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 t think that s an accurate word to use. It s not a meandering path, but a determined course of exploration. My entire life I ve been bad at school. I can t sit through lectures, and I can 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 s ideas, and followed Henry David Thoreau 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 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 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 d rather be writing than reading. I could never even play D D with my nerd friends because I got bored with other people s stories. I can watch movies, and I can listen to music, but I do it from an",
"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 13th, 2014",
"ts": "1413221460",
"summary": "If you like your AeroPress and haven 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","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 10th, 2014",
"ts": "1412954040",
"summary": "I haven 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 s podcast Preservation State along with Jason Snell . It was a fun conversation. I don t even remember how I met Philip now, but he 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 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 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 s very random, and that s why I m enjoying it. I m not sure where it s headed yet, but it s a fun ride if you haven 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 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","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 9th, 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 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 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 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","scheme","selections","software","staging","terminal","users"]
},{
"title": "Sponsor: TextExpander touch",
"url": "/2014/10/09/sponsor-textexpander-touch/",
"tags": ["sponsor","textexpander"],
"date": "Oct 9th, 2014",
"ts": "1412852400",
"summary": "Thanks to Smile for their continued support! I m thrilled to have my TextExpander snippets available everywhere in iOS 8. Whether it s a simple email signature or several paragraphs of a standard response, you 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 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","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 8th, 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 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 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","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 8th, 2014",
"ts": "1412791200",
"summary": "I reviewed AeroPress Timer last year , and have been using it ever since. Version 2 is out now, and it 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 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","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 8th, 2014",
"ts": "1412788200",
"summary": "Congrats! Don t forget that Marked 2 is 30% off all this month (both on the App Store and direct sales). If you 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","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 3rd, 2014",
"ts": "1412360640",
"summary": "I 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 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 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 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 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","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 2nd, 2014",
"ts": "1412247600",
"summary": "I 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 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","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 1st, 2014",
"ts": "1412197200",
"summary": "I 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 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 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 re using the overlay results, you ll also see options for sending to Marked or nvALT. I 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. 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","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 25th, 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 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 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 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 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 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","iphone","including","inspiration","latest","links","looking","looks","manager","massive","measure","nicely","package","parser","partnership","parts","pixel","quiet","reliably","right","round","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 25th, 2014",
"ts": "1411642800",
"summary": "I m honored to be sponsored by mySleepButton this week. It 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 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 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 As you entertain these sundry images, you simply can 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","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","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 24th, 2014",
"ts": "1411599600",
"summary": "I ve been working hard on a hundred things this week (well, 14), so I ve been heads down. Somehow, I still managed to get some stuff up that I m happy about, and wait until you see what I ve been doing with my free time (and sleepless nights) Sponsor: Hack Reactor (Sep 18th) First, a big thanks to Hack Reactor for sponsoring this week. If you 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 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 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 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 22nd, 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 ve been testing this out and it 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 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","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 20th, 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 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","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 19th, 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 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 s not really an advertisement, it 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 s any demand, I can do a light on dark version that will work with more colors. The shirt is available in men s and women s sizing, as well as tank top and hoodie styles. I chose premium materials, so they 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","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 18th, 2014",
"ts": "1411059600",
"summary": "I ve been working on a mind mapping post for some time now. It started as a Macworld piece, but I took too long 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 m expanding one node, I ll often randomly think of something related to the project but unrelated to the area on which I m focusing, and I can just tack those on to other topics until I m ready to focus on them. It s a great way to remember everything that crosses my mind while I 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. Map A single Main Topic and its children. A mind map document may contain more than one Main Topic, but I 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 s the topic at the top. Everything branches from here. Node/Topic Every item on the map that isn t an attachment, note, callout, or relationship is a topic. The terms node and topic are interchangeable, and depend on what application you re",
"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","aesthetic","aftershock","against","ahead","alignment","allow","allowing","allows","almost","annotation","annotations","another","anyone","appearance","applications","apply","arrange","arrows","assigning","associate","associated","association","associations","attach","attached","attaching","attachment","attachments","automated","automatic","automatically","available","avoids","based","basic","basics","beauty","because","becomes","before","began","begin","beginning","begins","belong","belongs","benefit","between","beyond","blazing","bloat","bother","bottom","boundaries","boundary","brain","brainstorm","brainstorming","branch","branches","branching","breadcrumb","breaking","browser","browsing","bubbles","build","built","callout","callouts","capability","capture","categories","categorize","category","center","central","chapter","chapters","child","children","choice","clarify","clarifying","clarity","clear","clicking","clockwise","closely","closer","coding","collaboration","color","colored","coloring","colors","comes","comfortable","common","companion","computer","concept","concepts","concerns","concrete","conducive","confident","confusion","connected","connecting","considerations","considered","considering","contain","container","contains","context","conversion"]
},{
"title": "Counters•, a new tally app for iPhone",
"url": "/2014/09/18/counters-a-new-tally-app-for-iphone/",
"tags": ["appreview","iphone"],
"date": "Sep 18th, 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 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 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 18th, 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 17th, 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 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","seriously","services","string","subscription","taking","today","typography","using","works"]
},{
"title": "PicGIF Giveaway",
"url": "/2014/09/16/picgif-giveaway/",
"tags": ["giveaway","macos"],
"date": "Sep 16th, 2014",
"ts": "1410876000",
"summary": "There are a few good Mac apps for creating animated gifs from movies and images. I don 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 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","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 12th, 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 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","setup","smart","software","support","together"]
},{
"title": "Sponsor: PDFpen Scan+",
"url": "/2014/09/11/sponsor-pdfpen-scan-plus/",
"tags": ["sponsor"],
"date": "Sep 11th, 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 s not just a scanner, it 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 with embedded OCR text 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 s iCloud storage. PDFpen Scan+ is universal. It works on both your iPhone and your iPad, and it 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","precisely","preview","process","results","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 10th, 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 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","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 9th, 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! 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 s a suprise included that you 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","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 9th, 2014",
"ts": "1410271380",
"summary": "If you didn t win but part of your job is building prototypes for websites, you 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","tools","websites","winners"]
},{
"title": "Web Excursions for September 06, 2014",
"url": "/2014/09/06/web-excursions-for-september-06-2014/",
"tags": ["bookmarks"],
"date": "Sep 6th, 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 re working. I haven 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 furbo.org - The Terminal A Siracusian compendium of Terminal tricks on OSX. Here 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 4th, 2014",
"ts": "1409870880",
"summary": "Because my wife is out of town and I m bored, I have taken it upon myself to provide four more ringtones , in addition to the six I 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 t, you can always make your own .",
"keywords": ["apple","garageband","iphone","itunes","ringtone","because","assuming","based","batch","before","bored","musical","myself","proclivities","ringtones","share","songs","taken"]
},{
"title": "Sponsor: MindMeister",
"url": "/2014/09/04/sponsor-mindmeister/",
"tags": ["sponsor"],
"date": "Sep 4th, 2014",
"ts": "1409828400",
"summary": "Thanks to MindMeister for sponsoring BrettTerpstra.com this week. I 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 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","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 3rd, 2014",
"ts": "1409760480",
"summary": "I frequently forget about charging my iPhone and iPad until I 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 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 ve ever suffered from charge-forgetfulness, check it out . There 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","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 2nd, 2014",
"ts": "1409677200",
"summary": "If you design for the web, you ve probably used an array of tools for wireframing and prototyping. If you haven 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","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 2nd, 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 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 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","sleek","specifically","styles","themes","think","version","weights"]
},{
"title": "The Ulysses winners",
"url": "/2014/09/01/the-ulysses-winners/",
"tags": ["giveaway","markdown"],
"date": "Sep 1st, 2014",
"ts": "1409624760",
"summary": "Check out the app if you didn t win, it 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","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 29th, 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 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 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 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","indent","information","insanum","issues","kinds","links","message","minute","mobile","notes","nvalt","originally","package","partnership","people","personal","pidlug","potentially","publishing","quickly","recollfs","results","revive","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 28th, 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 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 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. 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 27th, 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 m most excited about right now (aside from the next version of Marked, which is going to be awesome). A new standard that I 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 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 26th, 2014",
"ts": "1409063220",
"summary": "I ve been working with the Soulmen, creators of Ulysses , to create a new standard for the transport of plain text between applications. It s called Textbundle , and I 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 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 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","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 23rd, 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 s a lot easier than the docs make it out to be, especially if you 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 t read her blog, you should add it to your feeds now. Introduction to Grunt and Gulp.js 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 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 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","offers","partnership","person","possibilites","preprocessor","replicating","runners","scripts","series","single","smartest","source","subscription","target","today","using","videos"]
},{
"title": "Übersicht hacking",
"url": "/2014/08/22/ubersicht-hacking/",
"tags": ["ubersicht"],
"date": "Aug 22nd, 2014",
"ts": "1408732080",
"summary": "As I ve mentioned (all over the place), I ve been hacking around with Übersicht for a few days now. It s been a lot of fun. Übersicht is GeekTool for even geekier geeks. You edit the widgets manually in CoffeeScript (or JavaScript, if you 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 ve gone ahead and built a repository of some of the widgets I m working on, and there 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 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 m using this in the LoadChart widget to store load average readings over time (JSON array). I can (I 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 s more, but basically you have all the power of WebKit available. CoffeeScript is fun, Stylus is awesome (hadn 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 s not hard to crash Übersicht if you try. Have fun, and check out the project page !",
"keywords": ["coffeescript","geektool","javascript","webkit","'body'","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 22nd, 2014",
"ts": "1408713180",
"summary": "I ve spent my free time the last few days playing with Übersicht , but I found enough time to try out Spillo . It s a new Pinboard client for Mac, and it s not bad at all. This isn 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 d be fine with it. But for this, I 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 s default). Here s the result. If you use Spillo (and you should check it out ), I imagine you ll find it useful.",
"keywords": ["chrome","safari","'desc'","'spillo","'title'","'url'","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 21st, 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 Add to Grid 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 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 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 20th, 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 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. Delight is in the Details 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 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 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 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 20th, 2014",
"ts": "1408541400",
"summary": "I 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 t implement all of it. I thought I 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 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 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 s much better. If you 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 re used to creating slugs (hyphenated words). If you do anything with file naming and prefer to keep spaces out of your titles, you 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 s trying to go. Thus, the last item in a list that s the last thing on the page is a little problematic. Beyond that minor snag, this is something I use daily. You can always use alternate keybindings such as",
"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 19th, 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 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 s broken). If you 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 s a 5-pixel stripe on the edge of the screen, it s a little hard to show well. But I tried",
"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 18th, 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 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","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 15th, 2014",
"ts": "1408112220",
"summary": "I detailed the command in the last Shell Tricks post, so I thought I d go over some tricks for doing the opposite next: closing and quitting apps. The first thing I 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 ve mentioned it before, as well as tricks for adding Bash completion to it. Second, I 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 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 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","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 14th, 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 re on the go. Take PDF documents with you and add notes, highlighting, and other markup even when you 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","smilesoftware","sponsoring","styluses","supports","thanks","using","while"]
},{
"title": "Recap: Aug 13th, 2014",
"url": "/2014/08/13/recap-aug-13th-2014/",
"tags": ["recap"],
"date": "Aug 13th, 2014",
"ts": "1407970800",
"summary": "Sponsor: MindNode 3 (Aug 7th) A big thanks to MindNode for sponsoring BrettTerpstra.com this week. If you re looking for an elegant mind mapping solution for iOS and Mac with great sync, this is it. At least it s not a telethon (Aug 8th) Thanks to everyone who 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. Delight is in the Details giveaway! (Aug 13th) Jump in now and enter for a chance to win The Complete Package of Shawn Blanc s Delight is in the Details! Recaps are a quick, curated summary of one week 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","mapping","monthly","nerds","offering","pieces","posts","powerful","preprocessor","quick","recently","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 13th, 2014",
"ts": "1407961680",
"summary": "I mentioned a bit ago that Shawn Blanc s book, Delight is in the Details has recently received a big update. I m happy to announce that Shawn is giving away 3 copies of The Complete Kit to BrettTerpstra.com readers. That 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","mentioned","randomly","readers","received","recently","value","videos"]
},{
"title": "The OnTop Winners",
"url": "/2014/08/12/the-ontop-winners/",
"tags": ["appstore","giveaway","iphone"],
"date": "Aug 12th, 2014",
"ts": "1407865020",
"summary": "Thanks to everyone who entered. If you haven t yet, be sure to check out OnTop on the App Store ! Note from Giveaway Robot: C mon, that s not a name. Seriously. I ll give it to you this time, but",
"keywords": ["store","andre","artur","david","essner","giveaway","johan","keating","kraft","matthew","meenhorst","ontop","patrick","reinier","robot","romin","roque","seriously","store","thanks","yinjie","check","entered","everyone","giveaway","haven","winners"]
},{
"title": "Clarify for Markdown blogging",
"url": "/2014/08/11/clarify-for-markdown-blogging/",
"tags": ["appreview","macos","markdown"],
"date": "Aug 11th, 2014",
"ts": "1407776400",
"summary": "I 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 s designed for screen-based documentation, and I 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 folder 1 . 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 t open up your entire drive for moving files around, so this functionality is limited to the non-MAS version.",
"keywords": ["format","jekyll","store","clarify","first","jekyll","liquid","markdown","passthru","second","store","annotate","available","based","basic","before","blogging","called","clarify","converted","customize","designed","dimensions","drafts","drive","effects","entire","example","examples","export","files","folder","format","frame","fully","functionality","great","headers","images","improvements","lesson","limited","loved","markdown","mentioned","moves","moving","official","output","outputs","paragraphs","plugin","portions","posting","presentations","publish","ready","recent","resized","right","screen","screenshots","second","supports","templates","templating","tools","trial","tutorials","uploads","using","version","wanted","whatever","write","written"]
},{
"title": "Web Excursions for August 11, 2014",
"url": "/2014/08/11/web-excursions-for-august-11-2014/",
"tags": ["bookmarks"],
"date": "Aug 11th, 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 s Ecosystem: An Expenses Report I 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 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","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 8th, 2014",
"ts": "1407517200",
"summary": "First, I d like to thank everyone who s responded to my pledge drive. It 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 s another preprocessor script for Marked 2 that you might find useful. It 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 preferences 1 . 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 t contain any snippets, it won t do anything, so it doesn 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 C6;⌘⌥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 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 t expand unless you re viewing in Marked with the preprocessor enabled. In cases where you want to use the Markdown file elsewhere, you ll want to run the script separately or as a Service that will update the actual source text. Because the",
"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","endnote","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"]
},{
"title": "At least it's not a telethon",
"url": "/2014/08/08/at-least-its-not-a-telethon/",
"tags": ["personal","support"],
"date": "Aug 8th, 2014",
"ts": "1407502800",
"summary": "First, I d like to thank everyone who s been supporting me since I went independent. Every time I see the $3-12 monthly donations come in, I m grateful for you. I don t push the reader support thing too much, beyond small links at the bottom of posts. The numbers haven t grown much in the last few months, though 1 , so I thought I 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 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 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 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 s easier for me to collect your names and emails if there s a value-added feature available in the future. I 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 m also open to contract work. I don 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.",
"keywords": ["donation","paypal","telethon","consultation","contact","contract","first","lastly","marked","memberful","monthly","overtired","paypal","systematic","added","again","amount","answering","automate","available","basis","beyond","bottom","churning","coder","collect","company","consultation","contract","contribution","contributions","delighted","developer","difference","donation","donations","easier","emails","enjoy","established","everyone","feature","found","freelancing","front","generally","grateful","grown","haven","ideas","increase","independent","lights","links","makes","monetary","monthly","names","needs","numbers","offer","offering","posts","private","productivity","promotion","proof","questions","reader","reasonable","regular","since","small","sponsors","stream","suggestions","support","supporting","system","tagging","thank","thought","tools","trades","useful","value","visitors","writer","writing"]
},{
"title": "Sponsor: MindNode 3",
"url": "/2014/08/07/sponsor-mindnode-3/",
"tags": ["sponsor"],
"date": "Aug 7th, 2014",
"ts": "1407430800",
"summary": "A big thanks to MindNode 3 for sponsoring BrettTerpstra.com this week. I m a big fan of MindNode on all platforms, but the latest version for iOS is spectacular. I 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 s a great step forward. I mind map all of my projects from the beginning. Mind maps aren 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 ve always considered MindNode the most elegant. It 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 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","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 7th, 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 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 m not replacing Fantastical , I will say that OnTop is a very strong competitor. And at $2.99 US, it s a bargain. It doesn t have a Mac companion like Fantastical does, but for iPhone management of your calendar, it 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","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 6th, 2014",
"ts": "1407366000",
"summary": "Vox 2.1 with SoundCloud integration (Aug 2nd) I 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 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 ve used the command in Terminal, there are probably some tricks you didn t know here Recaps are a quick, curated summary of one week 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","integration","interest","nesting","notes","pages","posts","project","proof","quick","release","remember","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 6th, 2014",
"ts": "1407344400",
"summary": "You may already be familiar with the command in Darwin (OS X 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 . 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 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 s a great shortcut for opening an app that may have a document crashing it when it first opens. It doesn t always work, but it s usually the first thing I try in those situations. It 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 s a trick for pasting your current clipboard text to Marked. Of course, Marked 2 can do that with just ⌘⇧V, so it s less handy. Here 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 t get any separation between files, meaning that using it for Markdown output isn 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, I just alias to my $EDITOR script . You can also use the switch to cause to wait for the opened application to exit before exiting the command. The switch causes a new instance of the",
"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 6th, 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 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","version","winners"]
},{
"title": "Shell Tricks: man pages",
"url": "/2014/08/05/shell-tricks-man-pages/",
"tags": ["browser","terminal","tools"],
"date": "Aug 5th, 2014",
"ts": "1407258000",
"summary": "Man pages make Unix go round. I can t think of any system that 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 ll show you is how to get a man page open in Preview.app. It s simple, the command has an output format ready for PostScript conversion: An aside about the command 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 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 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 command line or from a web browser. I use a bash function that",
"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","highlighted","including","input","installed","interesting","keeps","launch","linking","local","meaning","methods","navigate","often","opening","output","pages","particular","party","permanence","printer","profile","ready","restored","restoring","right","round","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 5th, 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 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","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 4th, 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 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 ve actually changed any preferences and only refreshing open updates if it s relevant. That second one might throw you off if you ve been compensating for Marked 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 s reference can be Hopefully that makes sense. I 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 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 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 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","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 4th, 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 m really curious about these Ergodox keyboards. I haven t had much luck falling in love with click keyboards in the past, but I also haven 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 s url shortener was automatically allowed in Twitter DMs. While that makes no sense to me from Twitter s perspective, here 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","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 4th, 2014",
"ts": "1407170100",
"summary": "Continuing the Shell Tricks series, here s a handy Git trick. I ll be moving away from the Git tips soon, so don t lose heart if you love the command line but aren 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 ll know I figured out a trick but can t remember what it s aliased as. Then I have to list all of my aliases, grep for the one containing the base command I m looking for, and then work to memorize that. Here 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 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 t work with the next part. Now, when I run , it outputs:",
"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","justified","lists","little","looking","match","memorize","memorizing","moving","nifty","options","output","outputs","problems","remember","right","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 3rd, 2014",
"ts": "1407075180",
"summary": "I 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 m going to add them to the Bash Fun series rather than creating a new one, so that s the place if you want to track them. I should mention that serial posts on my blog don 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 ll need to do your own annotated tags at the time of a release for this to work. For my changelog, I don t need the date, but I 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 d probably want to include the flag with that as well. The Markdown formatting isn t perfect off the bat if you include the full commit body, as I haven 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","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 2nd, 2014",
"ts": "1407008460",
"summary": "My favorite music player just got cooler. I 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 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 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","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 30th, 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 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 re a coder and you don 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 ll unveil it once I decide how I 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 you 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 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","inexpensively","integration","interest","offsite","posts","quick","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 30th, 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 d love to give away four copies on my blog. If you use Git, you ll want to take a shot at these ($59 value). As I 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 t beat a graphical, clickable log of all your commits with instant diffs and file navigation. Combined with Kaleidoscope , I 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 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","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 28th, 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 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 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 s not terribly active these days (I don 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 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","hydra","inspiration","jtmarmon","looking","mostly","palette","palettes","partnership","picker","plugin","pointed","project","quickly","ramonpoca","right","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 27th, 2014",
"ts": "1406507520",
"summary": "Why does Snoop Dogg carry an umbrella? Fo 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 d at least show off the results. Left to right, top to bottom. It s the only way I know. That s just too much stuff. Boy ain 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 t like leaving the house if I can t put the top down. Number 1 is my real fun for the day. I 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 s transitioning to Dark Sky shortly, I just already had that one worked out As an aside, I made this post in the Clarify beta, which can export to Markdown. It s really cool for documentation and image annotation. Hope you had a more productive Sunday. I shouldn t be so hard on myself. I worked out a cool new retina image solution, finished a draft of the children s book I m working on, caught up on customer support, fixed some Marked bugs I guess it 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","homemade","house","image","images","indicator","layers","leaving","little","minute","minutes","myself","nasty","natural","network","output","parameters","permanent","pinging","processes","productive","results","retina","right","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 24th, 2014",
"ts": "1406224800",
"summary": "A huge thanks to Backblaze for once again sponsoring BrettTerpstra.com. Don t lose your work. Back up all your data with Backblaze online backup . It s unlimited, unthrottled, uncomplicated, and at $5/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 $5/month. Backblaze continuously and securely backs up all the data on your computer and external hard drives. It 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 24th, 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 Using Tables With Ulysses and Marked A good introduction to Ulysses 3 and Marked 2 integration. Together for iPad and iPhone 1.0 I ve been a fan of Together for a long time, and it 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 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","hundreds","iphone","integration","introduction","looks","missing","monospace","monthly","notably","options","partnership","programmer","programmers","recently","requires","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 23rd, 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 ve been practicing lately, it should be of help to anyone using Sublime Text. Recaps are a quick, curated summary of one week 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","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 23rd, 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 ve been practicing some of my lesser-used shortcuts. Here s a basic cheat sheet. Forewarning: I customize so many aspects of my editor that I may have forgotten that some of these aren t defaults. If you run into conflicts or problems, let me know and I 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 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 lines as multiple cursors, then",
"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","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 23rd, 2014",
"ts": "1406122500",
"summary": "Shawn Blanc s multimedia book, Delight is in the Details, 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 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 22nd, 2014",
"ts": "1406058960",
"summary": "Congratulations to all of you! If you don t hear from the Giveaway Robot shortly, let me know . For everyone who didn 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 22nd, 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 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 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 ve been using git-flow , that workflow is now built into Tower. It 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.",
"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","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 22nd, 2014",
"ts": "1406034000",
"summary": "Here 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 t necessarily output HTML. Marked 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 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 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 s Behavior settings. You ll need the latest MultiMarkdown binary installed, so grab it if you don t, and make sure it ends up in . If you don t have Marked 2 yet, it has a lot to offer. I 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","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 21st, 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 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 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 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","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 19th, 2014",
"ts": "1405774800",
"summary": "It 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 m making better choices and look forward to living to a respectable old age, if everything goes well. I m grateful for every. single. day. I ve been more or less clean for over a decade now. 1 I 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 t a popular kid, but I didn 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 ve done, it s not to brag. Far from it. It s simply to underline that the average person has no concept of what I ve done to this body. I ve been checked into hospitals for unrelated injuries and accidents, and when blood panels came back I d receive a visit from a doctor, often in pairs, who would tell me that I should technically be dead 2 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 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. After 15-30 days of rigorous self-examination and horrible feelings of isolation, a relapse",
"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","endnote","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"]
},{
"title": "Web Excursions for July 18, 2014",
"url": "/2014/07/18/web-excursions-for-july-18-2014/",
"tags": ["bookmarks","personal"],
"date": "Jul 18th, 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 s Notebook There have been times I 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 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","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 18th, 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 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","stars","strikes","today"]
},{
"title": "Giveaway: Polymo for iPhone",
"url": "/2014/07/17/giveaway-polymo-for-iphone/",
"tags": ["appstore","giveaway","iphone"],
"date": "Jul 17th, 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 17th, 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 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 Review: Dropzone 3 (Jul 16th) The latest version fo Dropzone is out, and it s awesome. Recaps are a quick, curated summary of one week 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 17th, 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 ve gone all in with Meteor, we’re on our way to becoming Meteor experts. We 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 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 16th, 2014",
"ts": "1405516440",
"summary": "I m a bit late in covering this major update to one of my favorite applications. I ve been too busy enjoying it, I guess. Dropzone is a menu bar app that lets you add Destinations 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 scripting 1 . 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 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 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 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 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 Liquid-formatted image link with proper sizes",
"keywords": ["dropbox","store","adding","destinations","dropbox","droplr","dropzone","finder","flickr","github","installing","jekyll","liquid","popclip","similar","store","yoink","ability","across","action","actions","advanced","allowing","animates","another","anywhere","applications","automatic","bundle","bundling","changes","check","clipboard","collect","compression","consider","covering","destinations","developers","dragged","dropped","easier","enjoying","example","examples","exciting","expanded","favorite","features","files","folders","formatted","great","guess","icons","image","images","improved","improvements","includes","indispensible","integrate","integrated","interface","items","larger","later","latest","limited","major","makes","multiple","normally","offers","opens","operation","optimize","organizing","packed","palette","polish","preferences","processes","proper","receive","release","reorganize","repository","representing","returning","right","running","screens","scriptable","scripting","sense","share","shows","similar","simple","simply","sizes","small","split","starts","straight","system","takes","target","thought","through","tried","truly","updates","upload","uploads","useful","version","whole","within","workflow"]
},{
"title": "Web Excursions for July 14, 2014",
"url": "/2014/07/14/web-excursions-for-july-14-2014/",
"tags": ["bookmarks"],
"date": "Jul 14th, 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 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 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","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 12th, 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 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","shell","solved","through","using","variable"]
},{
"title": "The Transloader winners",
"url": "/2014/07/11/the-transloader-winners/",
"tags": ["giveaway","macos"],
"date": "Jul 11th, 2014",
"ts": "1405115700",
"summary": "If you won and haven t heard from the Giveaway Robot (and have checked your spam folder), drop me a line . If you didn t win, be sure to check out Transloader and its companion iOS app . While you re at it, don 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","utilities","winners"]
},{
"title": "TagBak, tag backup and restore",
"url": "/2014/07/11/tagbak-tag-backup-and-restore/",
"tags": ["backup","scripting","tagbak","tagging"],
"date": "Jul 11th, 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 10th, 2014",
"ts": "1405016220",
"summary": "This week I 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 9th, 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 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 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","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 9th, 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 their s in the giveaway lineup. Transloader is an app that you run on your Mac at home and your iOS device while you re out. When you stumble on a link that you want to download any kind of file link 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","running","seems","stumble","syncs","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 7th, 2014",
"ts": "1404738000",
"summary": "I 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 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 s very rudimentary, but it doesn 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 s been renamed or moved. This is really handy on your local filesystem. Unfortunately, it doesn 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 ll post when it 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 More info",
"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","helper","however","issues","little","local","mostly","moved","network","pieces","portions","ready","renamed","restore","restoring","returns","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 6th, 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 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 5th, 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. Merica, soccer, home entertainment and my obsession with solving tagging problems (and Christina s obsessive backups). It was a good time. If you haven t checked out Overtired yet, it s a fun podcast (I think). It s more free-form and geekier than Systematic. Don 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","obsession","obsessive","podcast","problems","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 4th, 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 ll go back to bed after this 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 s a work in progress and will likely become its own resource after it s fleshed out a bit. I 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 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 d recommend just deleting the symlinks for and in (where brew installs them). Git strips tags when transferring to a repository, and I haven 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 t need individual version control. I haven 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 t worked yet, but I need to do some further research. I haven t tested with other languages that are commonly used in scripts that would affect my files yet. I m especially curious about Python, so if anyone beats me to testing it out, I d appreciate the update. Dropbox does preserve tags during sync (as of an update quite some time ago) Time Machine maintains them (obviously). Arq",
"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","backup","beats","before","below","browser","carefully","check","checking","class","cloud","coding","collection","commands","comment","common","commonly","compressing","concern","confirm","confirmation","confirms","contact","control","crafted","credits","curated","curious","default","defaults","deleting","developers","download","downloaded","ecosystem","either","emailed","emails","enough","environment","especially","everything","extended","extensive","files","fleshed","folder","forks","found","generally","going","great","group","growing","haven","havoc","holiday","homebrew","icloud","inadvertently","individual","input","installable","installed","installs","interface","keeping","keeps","languages","likely","little","locally","looks","loses","losing","loving","maintained","maintains","matters","mentioned","minimal","mirroring","offer","offered","party","people","personal","personally","pointing","polluting","possible","preferred","preserves","preserving","problem","process","projects","proponent","provides","receiving","recommend","release","remove","repository","research","resource","resources","restore","restored","restores","results","right","rsync","scenarios","scripting","scripts","seeing","services","share","shared","sharing","slated","solutions","strip","stripping","strips","summer","supposed","switch","symlinks","system","systems","tagged","tagger","tagging","tarball","taxonomy","tested","tester","testing","tests","think","third","through","times","today","tools","touch","transferring","tricks","unnecessary","unsure","useful","using","utilities","valuable","version","versions","vital","warning","website"]
},{
"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 3rd, 2014",
"ts": "1404432360",
"summary": "This won t affect too many people, but if you 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 ll find your tags disappearing after shell scripts or command line filing act on a file. Ruby s FileUtils also fail to preserve the extended attributes. I m quite sure this wasn t happening to me before, as I ve been using my TagFiler system for quite some time and have always found my files easily. I recently noticed that nothing that s been automatically filed in the last few months has any tags at all. I don t know if (or how) coreutils might affect Ruby s filesystem tools, and I m not sure if the problems are even related. If anyone can enlighten me, I 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 s a switch () for the Coreutils command that will avoid stripping the attributes, but it doesn t exist for the command, so you d have to script to and . For TagFiler, for the time being, I 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 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","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 3rd, 2014",
"ts": "1404418680",
"summary": "I ve been a Nozbe subscriber for years now, and I 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 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 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 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 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","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 2nd, 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 s still coming together, but I think you 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 ve heard from a lot of people with a lot of solutions since I posted this, but I 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 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 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 m saying. Recaps are a quick, curated summary of one week 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","interest","knowledge","learn","linked","links","little","motion","notes","people","posted","posts","programmer","quick","rapid","readmes","referenced","report","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 2nd, 2014",
"ts": "1404306000",
"summary": "Don 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 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 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 m enamored with it. MindManager has similar tools, but they re absolutely rubbish next to MindMeister s. I haven 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 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 m not getting paid to gush about MindMeister. This referral link is the closest I 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",
"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","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","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 1st, 2014",
"ts": "1404238680",
"summary": "There s probably an existing tool to do this, but I couldn 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 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 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 More info",
"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","highest","including","indexed","input","level","levels","limit","linked","lowercase","makes","morning","needed","output","platform","point","possible","process","processed","processing","punctuation","readmes","redirection","results","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 30th, 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. 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 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 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 m currently using four vertical columns (⌘⌥4) because it s easiest for me to visualize the numeric shortcuts in that format, and I 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 ( MarkdownEditing ) in each column, give it a header that includes the column number and a title so that I don t have to think at all when switching by number. Then I start a new list below that with a single hyphen and a space, leaving the cursor after the space. Now, Control-[1-4] jumps me between columns in one keystroke,",
"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","endnote","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"]
},{
"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 29th, 2014",
"ts": "1404065040",
"summary": "I m really excited for the winners of the Curio 9 giveaway. It 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 ll want to do even more of it. Congratulations to the lucky two: Bummed you didn t win? Go check out the 25-day free trial , and if you think it 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","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 28th, 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 m learning a lot just skipping around 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 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 27th, 2014",
"ts": "1403889540",
"summary": "I had a great time with Christina this week discussing everything from browser tab management to Google Reader replacements we ve settled on. I 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","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 27th, 2014",
"ts": "1403888280",
"summary": "You ll see the basic desk setup, the treadmill, and the primary LEAP gestures in action. I don 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","imovie","iphone","morning","music","pause","player","primary","quells","requests","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 26th, 2014",
"ts": "1403791500",
"summary": "I m still excited about both my treadmill desk and my Leap motion controller . In fact, they complement each other nicely. When I 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 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 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 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 use 1 , 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 s still more I can do, such as using Leap and trackpad gestures to",
"keywords": ["bettertouchtool","controller","geektool","itunes","motion","spotify","audio","bettertouchtool","control","dashboard","desktop","geektool","items","jekyll","mailmate","minority","mission","motion","powermate","readkit","report","simplify","slicereader","speakable","spotify","switcher","actions","alleviating","audio","background","because","becomes","between","brisk","building","builds","button","buttons","centers","changing","commands","common","complement","computer","concentration","conditions","consistency","control","controller","controlling","controls","dealing","delivery","difficult","directions","either","email","enabled","enjoyable","excited","exploration","explore","extra","faster","feeds","feels","finger","fingers","flagging","fullscreen","gesture","gestures","giving","group","hands","hashes","higher","hitting","itunes","including","information","interface","items","jumping","keyboard","laborious","later","lights","mailboxes","makes","maximizes","media","messages","motion","mouse","music","natural","navigate","navigating","navigation","nicely","numbers","package","paging","pause","performing","phases","played","playing","playlist","poking","preset","presets","previews","primary","provides","quickly","reading","reveals","right","sales","screen","scrolling","setup","shows","single","spaces","speak","specific","speed","speeds","spoken","stats","steady","swipe","swipes","swiping","switch","switches","switching","system","tagging","takes","tasks","temperature","thinking","toggle","toggled","toggles","track","tracking","trackpad","tracks","treadmill","triggering","triggers","typing","using","usually","various","video","viewing","walking","watching","weather","while","widgets","window"]
},{
"title": "Sponsor: WatchMeCode",
"url": "/2014/06/26/sponsor-watchmecode/",
"tags": [],
"date": "Jun 26th, 2014",
"ts": "1403780400",
"summary": "Master the art of JavaScript with this week 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 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 ll learn something or you ll get your money back, and you get to keep all the videos you 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","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 25th, 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 d lost the convertible. Marker, Grablinks, and Bullseye fixes (Jun 23rd) If you 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 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 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","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 25th, 2014",
"ts": "1403726580",
"summary": "I mentioned yesterday that Curio 9 is out, and I 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","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 25th, 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 d never crossed paths before. Brian is a serial entreprenuer, though he dislikes the phrasing of that title. He 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","serial","spent","startups","surprising","title","witty","working","years"]
},{
"title": "Overtired is go",
"url": "/2014/06/24/overtired-is-go/",
"tags": ["overtired","podcast"],
"date": "Jun 24th, 2014",
"ts": "1403632260",
"summary": "My new podcast with Christina Warren is live! It 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 s a great start and I m sure it 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","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 24th, 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 ve been playing with Curio 9 for a little while now. The number of new features is overwhelming enough that I 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","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 23rd, 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 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 ll need to overwrite your current bookmarklets with the versions below. After that I ll be updating the source files on my server and no further changes should be needed in the future. I 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","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 22nd, 2014",
"ts": "1403466600",
"summary": "This is a tale of woe spawned from a navigational disability 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 d be able to locate the car again easily. We wandered down to Nicollet Mall and looked for a restaurant that wasn 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 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 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 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 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 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 phone s battery has been getting to a point where I get",
"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","highway","hotel","hours","iphone","inability","irritable","jumped","justice","knowing","landmarks","later","learn","lighting","little","location","logically","looked","marker","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","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","worth","write","wrong"]
},{
"title": "Sponsor: Assistant.io",
"url": "/2014/06/19/sponsor-assitant-dot-io/",
"tags": [],
"date": "Jun 19th, 2014",
"ts": "1403175600",
"summary": "Thanks to Assistant.io for sponsoring BrettTerpstra.com this week. I 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 t make scheduling group meetings any easier enter Assistant.io . Remember that time when you tried to schedule lunch with a few friends, but it STILL hasn 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 ve run into all of the above situations and then some. That 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 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 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! We dare you to try it out right now (it s free!), and tell us that it didn t make meetings just a little less painful (sorry, we can 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","ourselves","overflow","painful","people","picks","podcast","potential","propose","proposed","respond","responded","ridiculous","right","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 18th, 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 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 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 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","interest","myths","navigation","positive","posts","quick","reinforcement","rocker","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 18th, 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 ll talk about in a minute. It s a strong departure from my usual fare. I don 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 most pertinent to dogs in our society 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 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 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 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, and again, studies have shown that this form of training",
"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","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","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 18th, 2014",
"ts": "1403090880",
"summary": "I was joined this week by Jordan Cooper. He s a comedian, web marketer and general internet guy. I had mentioned in episode 100 with Merlin Mann that I 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","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 17th, 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 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 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","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 13th, 2014",
"ts": "1402672500",
"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Steady.js If you ve ever worked with throttling onScroll handlers in a web page, this looks like a clever solution. I 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 a commenting server similar to Disqus Recommended by a friend on Twitter, I m seriously considering the switch. I don 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 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","onscroll","partnership","people","photos","recognition","reliably","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 12th, 2014",
"ts": "1402584720",
"summary": "This script provides an easy way to jump around the filesystem if (and only if) you 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 s forgiving about capitalization and partial tags. In fact, it 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 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","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 12th, 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 re on the go. Take PDF documents with you 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","highlighting","icloud","integration","markup","notes","price","private","secure","sponsored","using","while"]
},{
"title": "Recap: Jun 11th, 2014",
"url": "/2014/06/11/recap-jun-11th-2014/",
"tags": ["recap","systematic"],
"date": "Jun 11th, 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 ve never had more than one ). 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 t miss it! Recaps are a quick, curated summary of one week 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 10th, 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 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 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","sleep","taking","thanks","think"]
},{
"title": "Even better random filenames",
"url": "/2014/06/09/even-better-random-filenames/",
"tags": ["lipsum","scripting","terminal"],
"date": "Jun 9th, 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 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 s the basic idea, just for reference. It 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","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 8th, 2014",
"ts": "1402248420",
"summary": "Thanks to everyone who entered, and congrats to the winners. If you didn t win, I highly recommend checking it out anyway. It 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","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 7th, 2014",
"ts": "1402146000",
"summary": "It s been a busy week, and I 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 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","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 6th, 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 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 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","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 5th, 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 5th, 2014",
"ts": "1401966000",
"summary": "This week, brettterpstra.com is sponsored by Doxie and their line of portable scanners. I 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 s Mac app makes it easy to organize and create multi-page PDFs on your desktop or in the cloud. Doxie s just about the size of an empty paper towel roll, so it s easy to scan then tuck away in a drawer when you re not using it. Doxie is all about different paperless workflows that is, Doxie s app is like an inbox for your scans, and you 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 s up to you. Doxie offers complete flexibility for organizing all your paper. Here 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 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","offers","organize","organizing","others","paper","paperless","portable","products","recognition","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 4th, 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 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","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 3rd, 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 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 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 ve been using ScreenFloat for a few years now and I still consider it the best in class. That s why I 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 ll be drawing the winners right after I get back from San Francisco, so we 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","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 2nd, 2014",
"ts": "1401764760",
"summary": "I know I 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 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 d show off. (It will, of course, be available in the non-MAS version, too). It s about bookmarking your document when reviewing. I was very unsatisfied with Marked s current bookmarking capability. It s not a highly-used feature, but why have it there at all if it 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 s easier to show I m looking forward to meeting up with as many people at WWDC as I can find time for, so don t be shy about pinging me for coffee (etc.)! I ll be writing for TUAW and podcasting, too, by the way, and I 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","highly","improvements","looking","meeting","overall","people","pinging","podcasting","popular","quiet","related","release","requests","reviewing","right","sandboxing","spent","thought","tomorrow","unsatisfied","version","weekend","working","writing"]
},{
"title": "Sponsor: Infragistics",
"url": "/2014/05/29/sponsor-infragistics/",
"tags": [],
"date": "May 29th, 2014",
"ts": "1401361200",
"summary": "I 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 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 28th, 2014",
"ts": "1401325140",
"summary": "I love music. I love discovering new music. I love discovering old music. I didn 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 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 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 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 s surprising to me that I didn t really get into Motörhead until I was already down the punk rock avenue a ways. Like I said, reverse chronology. I ve spent most of my adult life digging backwards through music history. I didn t buy Doors or Emerson, Lake, and Palmer records until I was 18. Along the way, Zeppelin, AC/DC, Guns N Roses, and more bands than I can name passed by, but many of them didn 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 you can appreciate it. It was punk rock that really defined my",
"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 28th, 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 s my day off: just breathe (May 26th) My plecostomus fish was enjoying memorial day, so I made a video. It s goofy, but I like it. Mirror your MindMeister maps to nvALT (May 27th) This is how I 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 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","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 27th, 2014",
"ts": "1401220980",
"summary": "I had a great time talking with Brett Kelly ( @inkedmn ) this week. He 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 ). 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","ideas","independent","inkedmn","maybe","offer","recently","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 27th, 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 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 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 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 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 t set up image exports yet, mostly because they re not searchable with Spotlight and there s no point for me if I have the PDF and MindManager versions. Next, you ll need to run it at intervals. I suggest using via a configuration tool",
"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","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 26th, 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 23rd, 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 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 s Perspective I do love Federico Viticci s reviews. Also see Stephen Hacket s and Shawn Blanc 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","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 23rd, 2014",
"ts": "1400865960",
"summary": "I hear frequently from people who are new to Markdown. While it s not a terribly complex syntax, it can be a little hard to grasp when you re starting from scratch. This is especially true if you don t already have a background in HTML coding. So I made a video to help out. The video is available through Peachpit 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 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 22nd, 2014",
"ts": "1400781600",
"summary": "I m excited to have OmniFocus 2 for Mac as this week 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 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 ve ever used OmniFocus on the iPad, you re familiar with the Forecast view, which shows you all of your upcoming due dates combined with calendar events and more. It s extremely useful, and one of the primary reasons that I ve always reviewed my tasks on my iPad instead of my desktop. Well, it s on my desktop now, and it 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 re looking for some help getting started, Omni provides Support Short videos shot just for OmniFocus 2 s new interface. There 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","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 21st, 2014",
"ts": "1400713200",
"summary": "Sponsor: Dream Hosting (May 15th) Thanks to this week 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 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 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","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 21st, 2014",
"ts": "1400691600",
"summary": "This week 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 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 d had more time for. Don 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 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","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 21st, 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 t source from your own search history, multiple results for ambiguous search terms it s quite a list. You should really just go try it . The instant weather forecasts are great, too, and sourced from Forecast.io . DuckDuckGo 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 re already familiar with the concept. If you 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 t found the need to with the new design. If you re not a DuckDuckGo user yet, go give it a whirl . What you won 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","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","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 20th, 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 s now a universal app (both iPhone and iPad), and requires a new purchase. At the $2 US intro price, though, there s really no reason for anyone to not grab it. iThoughts UI has been fully updated to the iOS7 design philosophy. It 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 s always been the biggest sticking point for me with iOS mind mapping in general: I work and brainstorm more fluidly when I m using a keyboard and an app that has great keyboard shortcuts. It 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 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 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 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","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 16th, 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 16th, 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 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 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 t had any luck yet. It s in homebrew, but if anyone gets this working, I 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","highly","homebrew","hopes","improvements","integrating","items","mapping","monitors","network","partnership","productivity","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 15th, 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 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 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 s really no crime in that. If you re still reading and are a tmux user, I ll assume you know what to do with this script. That 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","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 15th, 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 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 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 14th, 2014",
"ts": "1400108400",
"summary": "It s been a busy week. If you listen to Systematic , you probably know why 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 ve given away for free). It 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 d hoped they would. If you 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 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 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 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","hoped","insensitive","install","jumping","listen","little","location","manipulation","matching","mobile","navigation","needed","possible","posts","projects","quick","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 14th, 2014",
"ts": "1400097600",
"summary": "Here 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 s not really OS X-compatible anymore). allows fuzzy matching as long as the characters are in order. So, if you re in and you type , you ll jump up to your Dropbox folder. There 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 t affect your current shell unless you source it with . That s an inconvenience. If you 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 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 14th, 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 despite being an audiophile 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","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 14th, 2014",
"ts": "1400086800",
"summary": "I first mentioned Yoink back in 2011 , and I ve run it every day since. It s a small utility that shows up when you start dragging files and gives you a convenient shelf to collect them on until you re ready to drag them out into another folder or application. It s extremely handy. I ran one giveaway for Yoink shortly after its release, but it s time for more: Eternal Storms has provided 5 7 more Yoink codes to hand out. It 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","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 13th, 2014",
"ts": "1400014620",
"summary": "Thanks to everyone who entered, and best of luck honing your Vim skills. If you didn t win a copy of Painless Vim, go buy one . It 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 s one of the most helpful I 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","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 12th, 2014",
"ts": "1399921200",
"summary": "I ve updated Marky the Markdownifier with a few key fixes and improvements. It 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 headlines 1 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 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 mode 2 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 s not live yet. It s something I would really like to have, though, so I ll try to wrap that up. needs an update, too Lastly, I ve given the styling a small kick in the pants. It s not as bad as it was, but it still not great for smaller mobile screens. It s pretty good on iPad, but it still mostly works like the Desktop app it was built as, and lacks mobile usability. I ve started playing with mobile solutions. I 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 s still rough, though. There 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 s an in-flux Reader-only version that uses the same back end. Feel free to play with it, but it s my playground and may or may not funciton properly at any given time. To use it, just pass a url to run Readability and formatting on to ?u=",
"keywords": ["import","interface","languages","markup","programming","ascii","desktop","lastly","markdown","markdownifier","marky","mobile","multimarkdown","night","python","readability","reader","safari","access","adjusted","annoying","anyone","aside","attributes","available","basic","because","between","bookmarklet","bookmarklets","bothered","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","equivalents","especially","extend","favorite","feature","fixed","fixes","format","formats","formatted","formatting","funciton","getting","great","handlers","handles","haven","headers","headlines","iphone","improvements","includes","indent","indents","integrations","interface","inverted","issues","items","knows","lacks","learn","linked","links","looks","markdown","markup","mention","messy","methods","mobile","modifying","mostly","needs","nested","options","overhaul","pants","parenthesis","parser","people","planned","playground","playing","position","preview","programtically","proper","properly","query","quotes","readability","reading","replacing","requests","returns","rewrite","rough","screens","scroll","seemed","semantic","services","single","slashes","small","smaller","solid","solution","solutions","solve","spaces","started","straight","string","style","styling","switching","syncs","tables","through","title","tooltip","traffic","trailing","tried","unicode","updated","updates","usability","users","version","watch","website","where","within","works","written"]
},{
"title": "PopMaker: a PopClip extension generator",
"url": "/2014/05/12/popmaker-popclip-extension-generator/",
"tags": ["popclip","popmaker","video"],
"date": "May 12th, 2014",
"ts": "1399899600",
"summary": "I don t know yet if this project is going any further, but I thought I d share what I ve been experimenting with. It occurred to me after a couple dozen request for can you make a PopClip extension for this? that I could probably put the power in the hands of people who aren t necessarily comfortable editing PLIST files. I present PopMaker. PopMaker is an OS X app for generating PopClip extensions. It 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 s ugly right now, but it works. I ll explain it further in a second, but here 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 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 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 d think: surround selected text on either side with whatever characters you specify when generating the extension. You can use",
"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","helpful","icons","implicitly","import","inserted","install","interested","keyboard","knowledge","launch","licensed","limited","local","necessarily","nvalt","occurred","opening","optionally","package","pairing","palette","people","pixels","point","potential","prefix","prevents","primarily","project","questions","replaces","required","resulting","results","right","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 11th, 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 ve been enjoying for a while now. I was never a big user, but I 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 ve been using it in various ways since. I m aware that there 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 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 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 s the script, do with it what you will. (Updated 2019-12-17) Here 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 re in tmux you already have a status bar. If you use iTerm 2 s tmux integration, all tabs and windows share the same session, so it s ultimately kind of pointless. Whatever.",
"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","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 10th, 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 s a quick tip for Dash users. If you want to put Dash 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 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","inclined","pages","powerful","quick","quickie","replace","rhymed","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 9th, 2014",
"ts": "1399640400",
"summary": "If you re a text editing, Terminal surfing kind of computer user, you probably find the venerable text editor Vim to be fascinating. Either because you re a whiz at it and fully understand it, or because you re like me and have spent years listening to the cool kids talk about it. I 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 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 s written from a very human perspective by Nate Dickson , who s basically documented the frustrations and victories of learning Vim. To quote him: my quasi newbie status is part of why I m writing this book right now. I 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 ve most recently gotten myself into. Now that I m fairly comfortable, I d like to pass what I 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 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 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","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","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 8th, 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 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 ve tested it on Ruby 1.8.7 (Lion/Mountain Lion) and 2.0 (Mavericks) and haven t run into any issues 1 . Because of the new structure of the script and just because it s way smarter it s highly recommended that you make use of the file for configuration instead of directly editing the script. There s more information on this in the documentation. Download the latest version below, and if you re new to SearchLink, be sure to check out the project page . SearchLink v2.3.65 Download SearchLink v2.3.65 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 01/16/24. Changelog Donate More info Aside from initial encoding errors, but that always happens and they should be fixed now.",
"keywords": ["click","double","itunes","languages","mavericks","programming","searchlink","aside","because","changelog","donate","download","markdown","marohni","mavericks","mislav","mountain","published","searchlink","service","stupid","tuvbv'","thanks","updated","backlink","because","below","brettterpstra","changelog","check","class","clicking","command","configuration","description","directly","dlbox","donate","double","download","downloading","editing","editor","embed","encoding","endnote","endnotes","enjoy","errors","everyone","fathom","fixed","fnref","footnote","footnotes","github","happens","haven","height","hellip","highlighter","highly","https","information","initial","install","installed","issues","language","latest","ldquo","leaving","links","magic","mdash","meaning","mislav","mucking","noteref","onclick","parser","plaintext","project","projects","published","quick","rdquo","recommended","releases","required","reversefootnote","rouge","rsquo","script","searches","searchlink","searchlinkconfig","smarter","structure","tested","thumbnail","title","trackgoal","ttscoff","updated","uploads","version","wanted","width"]
},{
"title": "Sponsor: PDFpen Scan+",
"url": "/2014/05/08/sponsor-pdfpen-scan-plus/",
"tags": [],
"date": "May 8th, 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 with the embedded OCR text 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 s available on the App Store, and if you 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","multi","needed","overlay","pages","paste","photo","precise","preview","printed","process","recently","refined","right","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 7th, 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 t for everyone, but if you 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 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 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","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 7th, 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 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","through"]
},{
"title": "Two-day Marked Sale!",
"url": "/2014/05/07/two-day-marked-sale/",
"tags": ["marked"],
"date": "May 7th, 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 ve been waiting to buy the latest version of Marked and just needed a nudge, now 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 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 d make a great test case, let me know and I 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","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 5th, 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 t tried it, but for those who use both apps, it looks like a good way to at the very least 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 ve been looking for this for a while. It 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 s claims to outperform jQuery and CSS3 animations. I haven 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","mockups","outperform","partnership","promising","providing","rcmdnk","reliably","replacement","rougher","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 4th, 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 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 s written to your Mac user s home folder the first time it 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 xxx above, denote the first word/characters of a note title that will be filed into folders. Thus, if I had a note called xxx Ideas for nvALT.md , 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 t going to happen. The Notational Velocity codebase that nvALT",
"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","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","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 2nd, 2014",
"ts": "1399043340",
"summary": "I ve been playing with wrappers for OS X s command line Spotlight tool for a while now. I 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 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 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 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 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 More info",
"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","ideas","including","interface","interpreted","maintains","needed","permutations","playing","prime","query","quick","ready","requests","results","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 2nd, 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 s Mail was smart mailboxes (pseudo-mailboxes based on search criteria), but MailMate took those to a new level. I 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 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 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","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 30th, 2014",
"ts": "1398898800",
"summary": "Sponsor: Backblaze (Apr 24th) Thanks to Backblaze for their gracious support of brettterpstra.com this week. If you re not running offsite backups, you 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 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 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","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 30th, 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 username 1 . 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 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 More info",
"keywords": ["bitly","interface","itunes","locator","programming","resource","shortening","additionally","automator","bitly","bitlyize","changelog","clipboard","donate","download","legacy","published","service","system","thanks","updated","account","action","advanced","affiliate","append","apple","automatically","bachya","catching","choose","clear","click","clipboard","command","configuration","configure","configured","containing","contextual","corrected","create","creating","custom","customize","default","domain","double","download","earlier","example","fields","finds","itunes","includes","install","intelligently","itunes","links","major","mistake","often","output","personally","preserving","query","quickly","required","results","right","script","section","selected","services","settings","short","shorten","shortening","showing","social","string","strings","submitting","times","under","uneditable","updating","username","various"]
},{
"title": "Systematic 94 with David Chartier",
"url": "/2014/04/29/systematic-94-with-david-chartier/",
"tags": ["podcast","systematic"],
"date": "Apr 29th, 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 ve known for years but haven t talked to nearly enough. Don t forget, I 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 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","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 29th, 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 re a Ulysses III user, there 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 t considered it. Sending a URL, text snippet or image to your iPhone doesn t require any special apps Quip API Did you know Quip has an API? Combined with Marky , that means you can import and export Markdown documents 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","homebrew","iphone","image","import","including","install","installing","lists","little","managing","obvious","painfully","partnership","reminders","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 28th, 2014",
"ts": "1398699900",
"summary": "This post is for the Mac coders, and won t be of much interest to those not using Xcode for development. If you are, however, and haven t explored some of the available plugins, this might be enlightening. Or frustrating if you already know all of this, but you can 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 t about my favorite themes, which is obviously a very personal choice, but I will mention that when I m not using a custom version of Twilight , I love Spacedust . First, do yourself a favor and install Alcatraz . It 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 ve become overly accustomed to Sublime Text s ability to make Command- 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 Autocomplete for ImageNamed based on the assets in your",
"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 24th, 2014",
"ts": "1398353940",
"summary": "My project has been a great tool for me, and it 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 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 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 s just a handy trick I figured most people hadn t considered. If you spend time on the command line and are prone to forgetting what you 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","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 24th, 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 s unlimited, unthrottled, uncomplicated, and inexpensive at just $5/month. Backblaze backs up your music, movies, photos, and whatever you 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 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 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 23rd, 2014",
"ts": "1398294000",
"summary": "Sponsor: MultiMarkdown Composer (Apr 17th) Thanks to my favorite Markdown editor for sponsoring BrettTerpstra.com this week. If you 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 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","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 23rd, 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 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 s keeping your Mac awake Good tip for those annoying times when your Mac just won t sleep and you can 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 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","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 22nd, 2014",
"ts": "1398201840",
"summary": "I didn t know what ethnography was until I chatted with Alex Enkerli on this week s episode of Systematic. It 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 m still working my way through all of the great submissions to the Audiodrop, but don t forget that if you have an interesting job or pursuit that you think is changing things for people around you, I 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","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 22nd, 2014",
"ts": "1398179820",
"summary": "I got an advance preview of the app Moviedo and I ve been loving it. It was officially released today. If you love movies and keep lists of movies to watch, movies you 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 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 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 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 s a very flexible database application, specifically geared to movies and with a lot of features to back that up. It doesn t try to be any more than that, though. It s everything I want in a movie listing app, and nothing I don 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","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","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 18th, 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 s kind of the opposite, really. Like he 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 m procrastinating on stuff I need to do today As a random aside, you can still get Marked 2 for 25% off at MacUpdate Promo . The deal runs for two more days. I 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 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 17th, 2014",
"ts": "1397758740",
"summary": "Congratulations! If you didn 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 17th, 2014",
"ts": "1397732400",
"summary": "I m excited to have my favorite Markdown editor on the Mac, MultiMarkdown Composer , as this week s sponsor. 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 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 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 MultiMarkdown Composer is developed by Fletcher T. Penney the developer of MultiMarkdown 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","helps","highlighting","including","labels","limitations","lists","makes","marks","moves","multimarkdown","myself","navigate","original","others","pairs","panel","preview","remember","reorganize","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 16th, 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 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 complete with options for internationalization right from PopClip 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 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 s become an absolutely essential blogging tool for me. I 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 ll enjoy it as much as I did. Recaps are a quick, curated summary of one week 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","interest","internationalization","libraries","lifespan","limited","linked","officially","options","others","panel","parsing","patched","people","posts","powerful","quick","realize","regularly","right","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 16th, 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 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 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 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 t mind donations at all, or even a small monthly contribution . SearchLink v2.3.65 Download SearchLink v2.3.65 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 01/16/24. Changelog Donate More info",
"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","itunes","improvements","information","inline","issues","keywords","leaving","links","monthly","niggling","podcast","preference","preferences","project","regardless","report","results","returns","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 15th, 2014",
"ts": "1397577000",
"summary": "I knew I liked Ryan Irelan from watching his videos and some brief contact around the internet, but I didn t expect to enjoy talking to him as much as I did on Systematic episode 92. Ryan in addition to being Vice President of Tech at Happy Cog and offering his own array of tech education videos at Mijingo 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","mostly","mundane","music","objects","offering","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 14th, 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 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 t know why it took me so long to discover these, but they 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 s awesome. The Chrome Inspector can point me right to a line in a Sass partial (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 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","honestly","issues","iteration","looking","mapping","methadone","night","partial","partnership","plugins","point","productivity","quickly","requires","rhythm","right","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 14th, 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 14th, 2014",
"ts": "1397480400",
"summary": "It 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 s been neglected since Mavericks came out and wasn t working for me anymore. I 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 s not super-polished, but I got it to a point where it was working smoothly for me and thought I 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 s working great right now on my Mavericks machine, so I d say it 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 s note section. The details of the tool and its syntax are on the OTask project page . It s been tested with OmniFocus and OmniFocus 2, which you probably don 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 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 m not spending much time on that. If you 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","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 13th, 2014",
"ts": "1397408400",
"summary": "Version 2.1.1 of SearchLink is up, and it adds only one new feature. It s one I ve been using a lot, though, so I figured I d better go ahead and share it. If you re anything like me (no one s accusing you), you use reference links when blogging in Markdown. I tend to put all of the links I know I m going to use into a block at the top of the post, and then just use notation to reference them. Well, SearchLink 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 s it. More info on what SearchLink actually is on the project page . SearchLink v2.3.65 Download SearchLink v2.3.65 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 01/16/24. Changelog Donate More info",
"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","inline","leaving","links","newest","newish","notation","output","outputs","project","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 12th, 2014",
"ts": "1397329200",
"summary": "Version 0.2.5 is a big update to my project . It s so huge that I 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 d like to thank everyone who s contributed pull requests on GitHub (like the command). You re all awesome. I 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","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 12th, 2014",
"ts": "1397314800",
"summary": "You ve probably heard that Fantastical 2 for iPad is out. I 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 s a joy to use. The basic idea behind Fantastical on all platforms (it 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 table 1 is a reconsidered layout and gesture setup that Flexibits has dubbed The Fantastical Dashboard. It 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 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 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 re one of a lucky five people who sign up for the random drawing below, you can get",
"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","automatic","available","based","basic","behind","below","brings","calendar","check","checkmark","click","codes","contact","contest","copies","create","dates","decided","definitely","depth","deserve","devices","dictation","double","drawing","dubbed","email","encourage","ended","enter","entry","events","everything","excitement","expand","expands","favorite","features","finding","first","fledged","geofence","gesture","giveaway","glass","handle","having","heard","holding","holds","icloud","iphone","included","including","intro","invitees","language","layout","leaving","links","lists","lucky","magnifying","meaning","multi","natural","often","originally","parser","people","platforms","price","private","promo","random","realm","reconsidered","remind","reminder","reminders","repeating","right","schedule","screen","search","sending","setting","setup","showing","snippets","starting","starts","style","support","supports","swipe","syntax","systems","table","tablet","ticker","times","tricks","turns","value","version","whatever","wicked","winners","winning","works","writing"]
},{
"title": "Sum: PopClip extension",
"url": "/2014/04/11/sum-popclip-extension/",
"tags": ["popclip"],
"date": "Apr 11th, 2014",
"ts": "1397221200",
"summary": "I turned yesterday 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 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 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 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.2 Download Brett's PopClip Extensions v1.45.2 A few PopClip extensions for Markdown writing and other useful tools Published 11/30/14. Updated 02/07/23. Changelog Donate More info",
"keywords": ["extensions","github","popclip","brett","brett's","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","install","locales","negative","numbers","options","output","pencil","popup","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 10th, 2014",
"ts": "1397134800",
"summary": "Here 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 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 s found in the text. Negative numbers work as well. The output doesn t replace your existing text it appends the total number after a new line below the selection. I ve toyed with making a Markdown Table Calculator that lets you use spreadsheet-style SUM fields to get row and column totals, but that s still just an idea. This is just a quick and dirty solution. 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 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 More info",
"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","ignores","including","information","inside","install","interested","internationalization","lists","making","match","myself","needed","nitty","notation","notes","numbers","often","output","places","quick","replace","right","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 10th, 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 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","sponsored","using","while"]
},{
"title": "Recap: Apr 9th, 2014",
"url": "/2014/04/09/recap-apr-9th-2014/",
"tags": ["recap"],
"date": "Apr 9th, 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 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 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 re catching up be sure to hit that one, too! Recaps are a quick, curated summary of one week 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","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 9th, 2014",
"ts": "1397053440",
"summary": "I got to meet Brother Gabriel Mosher at Macworld this year. It wasn t the first time we d crossed paths, but it was the first time we actually got to talk. He s a Dominican friar living in the Bay area, and he s putting technology to use in the priory in intriguing ways. I 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 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","taste","technology"]
},{
"title": "Web Excursions for April 08, 2014",
"url": "/2014/04/08/web-excursions-for-april-08-2014/",
"tags": ["bookmarks","evernote"],
"date": "Apr 8th, 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 s a lot of finagling required to make this tip work for specific situations, but it 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","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 8th, 2014",
"ts": "1396969200",
"summary": "I ve been beta testing an app called Cupcake for what seems like forever. A while ago it didn t look like it was going to make it to the App Store. It just did, though, and I think it s of interest to anybody who 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 s a huge timesaver when working in editors and IDEs that don 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 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 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 7th, 2014",
"ts": "1396890000",
"summary": "I ve gushed about the beta of this Mac app a couple of times on Systematic , and it 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 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 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 d love the ability to customize the themes myself, but that 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 re crunched for time it s also the perfect way to get something on the screen without any hassle. I 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","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 7th, 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 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 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 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 s an easy way to help. Amazon Smile donates to your charity of choice every time you shop at Amazon. It doesn t cost you anything, but helps support the charities in great ways. Amazon has taken away Minnesota (and many other states ) bloggers 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 s it. Now shop through smile.amazon.com and you 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 re wondering, that 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","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 3rd, 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 feel better David).",
"keywords": ["macworld","studios","zachary","check","david","macworld","thanks","zachary","change","discussing","discussion","episode","fascinating","found","great","guest","habits","handle","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 3rd, 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 2nd, 2014",
"ts": "1396479600",
"summary": "The Efficient Mac User (Mar 30th) The slides from my Macworld talk are out in the wild. What 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 t forget to check out the rates if you 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 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","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 1st, 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 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","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 31st, 2014",
"ts": "1396277580",
"summary": "There have been some questions about what s in my menu bar as shown in my Macworld session, The Efficient Mac User ( this slide ). Here 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","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 30th, 2014",
"ts": "1396186080",
"summary": "I 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 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 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","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 29th, 2014",
"ts": "1396112400",
"summary": "I m taking off from SFO today. I want to thank everyone I got to meet (and sorry to those I didn 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 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 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 s always great to catch up with them. There are too many more to list",
"keywords": ["agilebits","apple","francisco","macworld","winamp","agilebits","macworld","thanks","winamp","capacity","catch","creator","developers","ended","everyone","exciting","favorite","floor","force","great","helped","interest","interesting","letting","music","permission","photo","player","posting","putting","recap","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 26th, 2014",
"ts": "1395874800",
"summary": "My posting has been a bit light as I prepare for Macworld this week. Come say Hi if you re there! Sponsor: ReadKit (Mar 20th) Thanks to ReadKit for sponsoring BrettTerpstra.com this week. It s my favorite RSS reader and it 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 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 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","specifically","sponsoring","subscribe","summary","tables","testing","updates","version","weekly"]
},{
"title": "Macworld 2014",
"url": "/2014/03/25/macworld-2014/",
"tags": ["macworld"],
"date": "Mar 25th, 2014",
"ts": "1395777540",
"summary": "If you re headed to Macworld, be sure to swing by for my talk. It 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 ).",
"keywords": ["apple","center","francisco","macworld","moscone","twitter","efficient","macworld","thursday","average","called","coffee","depending","focus","headed","helping","swing","users"]
},{
"title": "Dash docsets from MultiMarkdown",
"url": "/2014/03/21/dash-docsets-from-multimarkdown/",
"tags": ["cheaters","cheatsheet","markdown","multimarkdown","scripting"],
"date": "Mar 21st, 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 ll probably keep playing with Cheaters, but this is a new level. The only problem is I don 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 s a procedural script with lots of potential fail points, but I haven 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 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 proper order. You can repeat as",
"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","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 20th, 2014",
"ts": "1395356400",
"summary": "Sorry, the recap is a day late this week. I know you ll survive, but I m apologizing anyway. Sponsor: TextExpander (Mar 13th) Big thanks to TextExpander and Smile for their continued support. If you re not already using TextExpander, I think you 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 t think anyone would care, but I posted it (as is my modus operandi). It 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 t normally use autocorrection on the Mac. Recaps are a quick, curated summary of one week 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","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 20th, 2014",
"ts": "1395327600",
"summary": "If you don t use git and you re not interested in command line logging, move along, nothing to see here. I promise this won 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 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 d have to come up with a way to pass a to the command. There are a couple of possibilities: 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 t nailed down how I want to handle that yet. I m using the first option right now, but the latter option seems the most useful, really. Edit the new post-commit hook file with the script above. You can now run to include the hook with new repositories. You can do this in existing repos to add the hook, too, assuming you",
"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","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 20th, 2014",
"ts": "1395313200",
"summary": "I 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 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 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 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 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 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 19th, 2014",
"ts": "1395234720",
"summary": "I started my project late last week and it s turned into my productive procrastination project. It s a simple CLI that helps you keep track of what you re doing and provides a record of what you ve done. I just pushed doing v0.2.4 . It s a big update and I don t have time to elaborate on everything, but if you 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 t found fuzzy view guessing for command fuzzy searching for all commands that specify a view. On the terminal you ll see Assume you meant XXX to show what match it found, but this is output to STDERR and won t show up if you 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 s total added to them Totals for tags can be displayed at the end of output with",
"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","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 18th, 2014",
"ts": "1395147600",
"summary": "This tip from Macworld is a fun one for writers. It 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 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 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 m using C6;⌘S, but whatever works and won 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 17th, 2014",
"ts": "1395075600",
"summary": "I lamented on Twitter and App.net that my Dock was no longer respecting Keep in Dock, and hadn 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 it s the equivalent of did you try rebooting? but it worked and I m grateful. I don 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 spacer 1 between my communcation/social apps and my dev apps. I quit everything and, thankfully, everything stayed put. I ll keep an eye on it for a while and see if there 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 m not sure. I m simply surprised to find out exactly how much I depend on having everything in its place on my Dock. There s probably a name for that condition",
"keywords": ["apple","finder","killall","operating","system","terminal","twitter","apple","brand","deleting","finder","having","meaning","preferences","terminal","thomas","twitter","added","alone","anguish","background","badges","based","behavior","between","bottom","causes","causing","changes","clicking","commands","communcation","computer","corruption","couple","depend","disappear","everything","experience","first","folder","friend","gazillion","grateful","having","heard","helpful","including","installed","invisible","lamented","location","longer","looked","mental","notification","offered","people","permanently","permissions","plist","plucking","point","possible","preferences","quickly","rebooting","regardless","reset","respecting","restarting","reverts","screen","seeing","setting","simple","simply","social","solution","spacer","stayed","stung","surprised","thankfully","turned","wants","where","while","worked"]
},{
"title": "Web Excursions for March 17, 2014",
"url": "/2014/03/17/web-excursions-for-march-17-2014/",
"tags": ["bookmarks","marked"],
"date": "Mar 17th, 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 s Tiniest, Fiercest Competitor A great dive into what s behind DuckDuckGo and where it s heading. And why. MarkdownTools2 This is pretty awesome. It replicates Marked 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 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 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","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 16th, 2014",
"ts": "1394974800",
"summary": "The CLI that I announced yesterday has been more warmly received than I expected. I ll share expansions and updates to it as they happen. If you ve already installed with , you can update with the latest features using . Fresh installs will get them by default. If I m recording a task I 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 ve found that half my entries are projects I m starting, and the other half are notes that I 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 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 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: That s it for now. See the project page for full instructions and details. I m certainly open to feedback on this tool. Based on Twitter and my email, this is something more people need than I had guessed. Please post issues, discussions and requests on GitHub .",
"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","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 15th, 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: This tool might actually be useful for you. Here 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 ve been doing as I switch between projects. I 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 m using Day One as part of that, as I 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 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 ). If it 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 m polishing up this Day One/nvALT/Markdown script and trying to generalize it to a point where it could work in other people s environments. I 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 of the installation details, explanations and usage instructions are there.",
"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","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","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","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 15th, 2014",
"ts": "1394887620",
"summary": "Well, the Arq 4 winners have been chosen. Congrats to the lucky five: For those who didn 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","solution","thanks","winners"]
},{
"title": "A Notehub CLI",
"url": "/2014/03/14/a-notehub-cli/",
"tags": ["markdown"],
"date": "Mar 14th, 2014",
"ts": "1394837220",
"summary": "So I made this . It s not even what I ve been spending most of my hacking time on the last couple of days, but that s not quite ready to unveil yet. Actually, neither is this 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 s doing what I need it to do for now. If you re interested, see the GitHub repo for installation and usage instructions (they 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","installation","instructions","interested","keeps","light","little","locally","maintain","minimal","neither","notes","optionally","possible","publicly","pushing","ready","returns","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 13th, 2014",
"ts": "1394708400",
"summary": "This week, BrettTerpstra.com is sponsored by one of my favorite apps, TextExpander from Smile. Whether it s a simple email signature or several paragraphs of a standard response, you 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","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 12th, 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 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 s Systematic! Recaps are a quick, curated summary of one week 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","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 12th, 2014",
"ts": "1394640000",
"summary": "Stormboard is a new web app for collaborative brainstorming. It s based on sticky notes and multi-section boards. While not my ideal brainstorming format, it s very effective for quickly getting ideas out, organizing them and developing them. It 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 s added to the board as a sticky. You can change the sticky 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 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 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 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 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 t my personal favorite for brainstorming. I prefer mind maps where it 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","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 12th, 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 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 t have any control over the map after it s inserted, it s a very nice way to add visual interest and convey ideas in a non-linear fashion. 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","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 11th, 2014",
"ts": "1394585820",
"summary": "It was fun talking with David Duval on this week s Systematic. He s a university professor who 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","taking","talked","talking","technology","university","worked"]
},{
"title": "Arq 4 Giveaway!",
"url": "/2014/03/11/arq-4-giveaway/",
"tags": ["backup","giveaway","macos"],
"date": "Mar 11th, 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 s a huge upgrade, and I 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 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 name 1 . Sorry, this giveaway has ended.",
"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","backup","below","budgeting","compatible","copies","device","discard","email","ended","enter","entries","entry","giveaway","going","improved","including","license","major","multiple","myriad","notified","offsite","person","pleased","release","remote","service","single","storage","support","targets","think","types","unified","upgrade","usage","valued"]
},{
"title": "GeoHopper and iBeacons for proximity scripting",
"url": "/2014/03/10/geohopper-and-ibeacons-for-proximity-scripting/",
"tags": ["automation","ibeacon","iphone"],
"date": "Mar 10th, 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 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 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 ve tried. It 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 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 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 ve been through many iterations at this point. I 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 ve gotten far enough to have written my own prototype apps for triggering my lights, but the most constructive solution I 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 error 1 ). 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 s region. I m using GeoHopper on my iPhone to trigger events when I come into or leave the region of a beacon. There s a GeoHopper Mac app that can trigger scripts when devices enter and exit, but I 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 s region, it can send JSON payloads to webhooks. This can be used with services like IFTTT , or as I ve done you can set up your own CGI for it. This requires a local web server. I m not going to go into",
"keywords": ["bluetooth","energy","eventscripts","iphone","apache","applescript","applescripts","beaconosx","bluetooth","choosing","energy","eventscripts","example","execcgi","geohopper","ifttt","indigo","locationenter","locationexit","originally","since","station","triggering","writing","accurate","actions","added","adding","address","anyone","authorized","based","batteries","beacon","beacons","because","below","broadcasting","browser","building","built","checks","comes","computer","constructive","control","crashy","customize","default","depending","details","detection","determined","device","devices","different","directly","directory","easier","effort","enabled","engine","enough","enter","enters","entire","equipped","error","events","example","examples","executable","execute","exits","first","fluctuate","found","going","gotten","hacked","handle","handler","handles","highly","homebrew","hosts","house","ibeacons","iphone","information","interest","iterations","knowledge","language","learned","leave","library","lights","lightson","little","local","location","locations","looks","margin","messages","method","mobile","multiple","myserver","notification","occurred","office","payload","payloads","phone","pivot","platform","playing","point","polling","precise","preferred","problems","prototype","providing","query","range","ratio","reception","recommend","region","relevant","reliable","requires","running","scenario","scheme","script","scripts","search","sending","sends","server","servers","service","services","setting","settings","setup","signal","significantly","skills","solution","specific","started","strength","strings","support","supports","tailored","takes","tasks","technique","through","transmitting","trick","tried","trigger","triggering","under","users","using","version","virtual","wanted","wants","weapon","webhook","webhooks","whatever","within","working","written"]
},{
"title": "Owning your cloud backup",
"url": "/2014/03/09/owning-your-cloud-backup/",
"tags": ["backup","security"],
"date": "Mar 9th, 2014",
"ts": "1394372520",
"summary": "Full disclosure: macminicolo.net sponsors hosting for this website. This, however, is not a sponsored post. I 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 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 Drive 1 , had it added to my colocated mini 2 , 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 websites 3 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 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 s fast, but there s no versioning. You can combine BitTorrent Sync with Time Machine, too, but that requires even more drive space and I m afraid I 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 machine from them starting at $599 ( same",
"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","target","vegas","webdav","ability","access","accessible","added","advanced","afraid","allows","availability","available","awesomeness","backs","backup","backups","bandwidth","between","bookmarking","charge","charges","cheap","choice","clone","cloud","colocated","comments","comparable","completely","concern","connections","control","correction","create","created","daemon","dedicated","defect","depending","device","disclosure","downright","downtime","drive","drives","effort","enough","especially","eventually","expensive","experimented","external","faster","fault","features","first","folder","folders","fully","functions","great","handles","handy","higher","highlight","hosted","hosting","hosts","however","image","initial","interest","internet","intranet","investment","issues","local","locally","machine","macminicolo","management","media","minutes","mirror","monthly","multiple","needed","neediness","network","offsite","options","owning","painful","party","peace","personal","personality","plans","platform","pointed","potentially","powered","prefers","prices","privacy","private","provides","public","pulled","purchased","quickly","recently","recommendation","related","reliable","remote","requires","restore","restoring","security","seeking","seems","server","servers","service","services","shipped","single","sites","solid","solution","solutions","space","speed","speeds","spent","sponsored","sponsors","starting","static","statistics","steep","steeper","storage","support","system","target","targets","tasks","tested","think","third","throttle","usage","using","validate","versioning","virtual","wanting","website","websites","while","wikis","working"]
},{
"title": "Link cleaning extensions for PopClip",
"url": "/2014/03/06/link-cleaning-extensions-for-popclip/",
"tags": ["popclip"],
"date": "Mar 6th, 2014",
"ts": "1394128800",
"summary": "I 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 surprise 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.2 Download Brett's PopClip Extensions v1.45.2 A few PopClip extensions for Markdown writing and other useful tools Published 11/30/14. Updated 02/07/23. Changelog Donate More info",
"keywords": ["analytics","expression","github","google","locator","markdown","popclip","regular","resource","analytics","brett's","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","install","lengthen","modifier","newline","query","regex","replacing","returning","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 6th, 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 5th, 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 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","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 5th, 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 s a problem I ve been looking into for a while now, and would love to hear about any additions you have to the list. I m leaving comments open on this one, so feel free to pimp your favorite solutions. While I m partial to Markdown and plain text in this quest, I m open to other non-Word options. Draft Still my favorite, and constantly growing with new features and active development. I 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 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 ve mentioned this one before, but it 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 s not live collaboration, but with the right tools it 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 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","options","partial","parties","partnership","pieces","pornography","possible","previewing","problem","productivity","projects","proofreaders","proprietary","public","quest","rejecting","reminding","right","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 4th, 2014",
"ts": "1393955640",
"summary": "I was joined on Systematic this week by Nick Honko, a med student with a background in tech. He 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","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 3rd, 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 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 ve added, use the Reset to Defaults button, and paste back in any customizations. Get the update through Marked s auto-update feature (Marked- Check for Updates), or download a trial version at Marked2App.com . As I mentioned last time, if you re a Marked 1 customer looking for upgrade pricing, just shoot me an email . I m working on incorporating detection of long sentences, per HemingwayApp , but it s a bit more complex to do in Marked s web preview than it is in a textarea. I have a solution worked out, but it remains to be seen if it 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 28th, 2014",
"ts": "1393599360",
"summary": "Yes, this is a somewhat cheesy sales pitch, but I think it s important to get the word out 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 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 9, 10% off 10 19, 12% off 20 49, 15% off 50+, 20% off If you d like to take advantage of site licensing for Marked, just drop me a line and I 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","important","incorporate","licensing","makes","options","pitch","possible","process","processors","proofread","public","quantity","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 27th, 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 s free. If you 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 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","started","surrounding","track","twice","version","versions"]
},{
"title": "Sponsor: AeroPress Timer",
"url": "/2014/02/27/sponsor-aeropress-timer/",
"tags": [],
"date": "Feb 27th, 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 26th, 2014",
"ts": "1393459200",
"summary": "Sponsor: ManyTricks (Feb 20th) A big thanks to ManyTricks makers of Moom, Name Mangler, Desktop Curtain and many more 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 s CloudFront service. Day One as project log (Feb 24th) I m finally starting to use Day One the way it was meant to be used, and it s helping my late-night-hacking memory a lot. Recaps are a quick, curated summary of one week 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","meant","memory","night","posts","project","quick","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 25th, 2014",
"ts": "1393338300",
"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. bachya/Sifttter-Redux A modification of Craig Eley s Sifttter for collecting info from IFTTT to Day One 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 transformative 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 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","manually","multiple","pcell","partnership","passive","platform","plugin","programatically","project","refreshes","reliably","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 24th, 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 re going to be at Macworld). We talk about my motivation for the talk, what s going to be in it and who it s going to help. If you are going to be at Macworld, by all means look me up. I m going (almost entirely) on my own dime, so I 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","upcoming"]
},{
"title": "Day One as project log",
"url": "/2014/02/24/day-one-as-project-log/",
"tags": ["dayone","productivity"],
"date": "Feb 24th, 2014",
"ts": "1393250400",
"summary": "I 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 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 s why I use my What was I doing? system (and previously Ian Beck s Scratchpad setup ) and log one-line descriptions when I switch tasks. It s also one of the reasons for this blog, but that s only helpful when I ve finished something. This is all fine and dandy, but I always forget to do it in the moments where I m in the zone and it 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 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 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 t even need to be running. I can also write longer entries if the mood strikes me. It 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 m slow). With the first row highlighting and tag filtering, scanning my last few days of work is quite elegant. I ve been doing it for a week now, and it s saved my failing memory almost daily. Yes, sometimes the popup is annoying, but it s easy to snooze or skip if I don t need it, and taking the moment to fill it in",
"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 22nd, 2014",
"ts": "1393103280",
"summary": "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 21st, 2014",
"ts": "1392991200",
"summary": "I recently added a CloudFront CDN for all static assets on this site. Adding a CDN to Jekyll isn t terribly difficult, but there are a few steps. I found this post , which was very helpful. It s primarily for Rails sites, so I m posting some more detail for Jekyll sites here. The goal is to serve all static assets from Amazon 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 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 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 t need to create a distribution yet, we ll do that with a script: You can set up a CNAME if desired Add a key to your Jekyll installation s and set it to the distribution url. Make sure there s no trailing slash. I ll get back to this in a second. In order to be able to easily invalidate cache objects on CloudFront, you 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 m still experimenting with these settings, and there are some points I m not certain about. If you have access to your servers config, you can try these suggestions out, but use your own judgement. You can turn on keep-alive, if you",
"keywords": ["amazon","cloudfront","content","delivery","javascript","jekyll","network","adding","amazon","amsterdam","apache","boilerplate","brandon","cname","cachebusting","check","cloudfront","create","felix","first","frederic","hemberger","incrementing","javascript","jekyll","leave","liquid","mathis","optionally","plugins","rails","running","schfer","services","setup","templates","tests","while","yslow","absolute","access","account","added","adding","aforementioned","alive","allows","almost","amazon","another","apache","argument","article","asset","assets","automatically","average","avoid","backslash","backslashes","basic","basics","before","below","blank","blanking","blatant","blogging","brewing","broken","busting","cache","caching","certain","cfcurl","change","changes","check","checking","checks","clues","comment","config","configuration","considerations","consistent","console","contains","content","context","cookies","count","couple","create","created","creating","decrease","default","deploy","desired","detail","detailed","developing","development","difficult","display","distribution","doesn","download","downloads","easily","elements","empty","everything","experimenting","expiration","external","extract","faring","filename","filenames","files","first","forgetting","formatting","found","function","generated","generating","generator","germane","glaring","going","grabs","hacked","haven","having","headers","helpful","homebrew","hostname","htaccess","httpd","image","implemented","improve","improved","including","increment","incrementing","information","inserting","installation","interested","invalidate","judgement","leave","level","limit","linebreaks","links","little","loading","local","locally","locations","maintain","management","manually","mentioned","method","misinformation","modify","module","morning","mrning","needed","network","night","normal","nvalt","object","objects","omissions","optimization","original","outlined","panel","parts","paths","people","plugin","plugins","points","polls","popular","ported","posting","posts","preview","previewing","primarily","private","process","production","proofreader","protocol"]
},{
"title": "Quick Tip: caffeinate your Terminal",
"url": "/2014/02/20/quick-tip-caffeinate-your-terminal/",
"tags": ["macos","quicktip","terminal"],
"date": "Feb 20th, 2014",
"ts": "1392912000",
"summary": "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 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 re unfamiliar, the ampersand at the end causes the command to run in the background, freeing up your command line. If you re running it from something like an AppleScript or Automator, this won 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 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 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 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","examples","expos","finishes","freeing","handle","handles","handy","hidden","hitting","idling","keeps","keyless","login","longer","machine","manually","missed","monitor","mouse","moving","options","others","prevent","prevents","process","random","reaction","replicates","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 20th, 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 choice 1 . 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 m loving this one for screencasting, but it 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 s even more beyond that . It 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.",
"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","batch","beyond","bring","brings","built","button","cheat","check","cheers","choice","choose","click","clipboards","clutter","collection","complex","concentration","connect","control","coolest","create","desktop","developers","dimensions","directly","display","displaying","displays","download","features","files","great","green","handle","hides","hotkey","itunes","icons","image","images","impressive","inactive","includes","independent","keyboard","launching","layouts","loving","makes","manager","manytricks","memorized","movies","moving","multi","multiple","myself","picture","pools","positions","renamer","renaming","replacements","resizing","screen","screencasting","scripting","seconds","sheet","shortcut","shortcuts","simple","sponsoring","supporting","switch","switcher","system","tasks","thousands","titles","toggle","tools","tracking","tracks","trial","trigger","using","utility","version","wallpaper","website","window","windows"]
},{
"title": "Recap: Feb 13th, 2014",
"url": "/2014/02/19/recap-feb-13th-2014/",
"tags": ["recap"],
"date": "Feb 19th, 2014",
"ts": "1392854400",
"summary": "I m going to try doing recap posts of articles on the blog for the previous week. On slower blogging weeks they ll be a little short, but I think they 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 ll be published on Wednesdays, and there 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 s sponsor, the PDFpen Family from Smile . Quick Tip: Automating your Mac s wifi power (Feb 15th) Riddle me this: why would you want to script your wi-fi state? If you have an answer, here 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 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 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","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 19th, 2014",
"ts": "1392818400",
"summary": "I 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 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 t already have the command on the server. If the server is a Mac, you do, and it would be a pity to override that 1 . Here are solutions to both problems. If you re interested in trying this, first follow Sean 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 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 below 2 : 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 re in an SSH session and runs or the original accordingly. Note that the argument in Sean 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 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 re logged in remotely. Your choice. Now, when you 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 s the same result you 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. If the SSH detection in the script doesn t work, check out this answer on unix.stackexchange.com.",
"keywords": ["coates","computer","linux","remote","secure","server","shell","coates","create","except","handy","linux","stdin","terminal","above","accessed","alias","allows","answer","argument","arguments","assumption","basic","below","called","caution","change","changes","check","checks","choice","clipboard","closes","comes","command","contents","copies","create","default","detection","different","distribution","doesn","executable","expect","failing","first","forwarding","great","habits","harmless","headless","included","instructions","interested","invalid","launchd","listener","local","locally","logged","logging","machine","makes","needs","netcat","original","output","override","passes","pbcopy","piped","primarily","problems","reaches","remote","remotely","replace","requires","script","server","servers","session","setup","shell","simple","simulate","slightly","solutions","sometimes","stackexchange","standard","statement","stuff","system","think","through","throw","trick","trying","using","version","warning","where","while","working","years"]
},{
"title": "The Shoots & Leaves winners",
"url": "/2014/02/18/the-shoots-and-leaves-winners/",
"tags": ["appstore","giveaway","iphone"],
"date": "Feb 18th, 2014",
"ts": "1392749400",
"summary": "If you didn 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","winners"]
},{
"title": "SearchLink 2.1",
"url": "/2014/02/18/searchlink-2-dot-1/",
"tags": ["search","searchlink","service"],
"date": "Feb 18th, 2014",
"ts": "1392739200",
"summary": "I 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 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 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 C6; 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 s returning a single link or url. The C6; can be before or after a !! , if it exists. There 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 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 s now a YAML file that 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 not to do this and use the defaults, but all your",
"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","twitter","updated","ability","above","action","added","adding","affiliate","again","allows","alphanumeric","assume","bangbang","before","beginning","brackets","browser","bumped","changed","characters","clipboard","config","configuration","constantly","copying","default","defaults","designed","disappear","document","downloads","easier","editor","enter","entire","especially","exists","features","field","finding","finished","first","followed","format","formatting","found","functionality","handy","having","itunes","immediate","input","keywords","leaving","linking","links","makes","making","needed","opening","options","original","parentheses","parse","places","podcasts","potential","powerhouse","project","quick","quickly","return","returned","returning","returns","running","sales","script","search","searches","service","services","settings","several","showing","simple","single","slink","specify","starts","string","suggest","syntax","target","terms","throughout","trivial","updated","usernames","version","video","wanting","where","workflow","works","write"]
},{
"title": "Realmac's solution to Clear confusion",
"url": "/2014/02/18/realmacs-solution-to-clear-confusion/",
"tags": ["appstore","itunes"],
"date": "Feb 18th, 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 t provide any way to migrate users, Realmac 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 re making it apparent that they feel it s the right thing to do. Given there aren 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 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","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 17th, 2014",
"ts": "1392673500",
"summary": "I had a lot of fun talking to Myke Hurley on CMD+Space this week. I won 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","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 17th, 2014",
"ts": "1392645600",
"summary": "Here s a TextExpander trick for automating dynamic portions of snippets. It 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 t just use TextExpander 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 scheduling 1 . In TextExpander, you can embed snippets inside of other snippets, but it doesn 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 ll show you how. First, create a new snippet and give it a label. In my case, it 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 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 s Wednesday, that s going to be interpreted as tomorrow, but if it 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 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 text of your main snippet and it will automatically execute and insert the",
"keywords": ["script","shell","snippet","textexpander","applescript","assign","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","backstory","based","below","between","called","categories","changed","changing","characters","check","collection","content","convert","create","creates","customize","dateformat","doesn","dynamic","earlier","easily","embed","execute","experiment","extra","field","fills","finds","flexibility","format","going","hardcoded","harness","headers","includes","input","inside","instructions","interpreted","label","language","later","match","minutes","modified","natural","necessary","needs","older","output","paste","perfectly","portions","posts","powers","processor","rarely","recap","regular","right","running","schedule","scheduling","script","scripting","seconds","shell","short","skeleton","snippet","snippets","specifics","specifies","sponsor","string","strings","suits","takes","technique","thursday","tomorrow","tools","trick","trimmed","various","verbose","version","whatever","works","write"]
},{
"title": "Marked in the SuperStacked Mac Bundle",
"url": "/2014/02/16/marked-in-the-superstacked-mac-bundle/",
"tags": ["marked"],
"date": "Feb 16th, 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 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 re not a PhotoShop pro. It also includes Sparkbox, which I haven 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 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","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 16th, 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: 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 s any interest in that, leave a comment and I 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 More info",
"keywords": ["iphone","itunes","store","changelog","donate","download","itunesicon","launchbar","omnifocus","project","published","store","updated","below","choose","comment","default","download","easily","example","followed","forgot","itunes","itunesicon","interest","largest","latest","leave","medium","mention","minor","posted","prefer","quickly","recall","recently","retrieving","returned","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 15th, 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 s wifi off with ControlPlane when I m docked to my Thunderbolt Display (it has an ethernet line). I 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","hiding","higher","holers","interfaces","labeled","mousing","network","pauses","preparation","priority","process","quick","quickly","rabbit","repositioning","reverse","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 14th, 2014",
"ts": "1392400800",
"summary": "I wrote about Shoots Leaves back in January , and it 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 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 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","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 14th, 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 t for server load increase and required script refactoring that I don t have time to tackle, I d probably test this out today 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","highlights","hover","iphone","imports","increase","installments","instant","interesting","issues","looking","loved","makes","making","multiple","partnership","preload","professional","readability","reading","received","refactoring","required","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 13th, 2014",
"ts": "1392326160",
"summary": "I just pushed out build 822 of Marked 2 . It 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 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 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 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 t perfect yet, and doesn 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 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","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 13th, 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 11th, 2014",
"ts": "1392141420",
"summary": "I had a great chat with Dave Seah this week. He s the inventor of the Printable CEO and a bunch of other great stuff . He 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 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","stuff","taking","turning","working"]
},{
"title": "An updated Increment Templated Service",
"url": "/2014/02/10/an-updated-increment-templated-service/",
"tags": ["service"],
"date": "Feb 10th, 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 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 More info",
"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","indentation","index","leading","length","maintains","modified","modifier","modifiers","numbers","outputs","placeholders","prefixing","produce","repeat","repeats","replacing","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 7th, 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 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 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 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 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 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 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","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 6th, 2014",
"ts": "1391688000",
"summary": "I d like to thank MnmlRdr for sponsoring BrettTerpstra.com this week. I ve been using the service for a while, and I m pleased to tell you about it! MnmlRdr is a minimal feed reader. That s not to say it s not as powerful as any other RSS service, it s just not cluttered with anything you don t need. It has subscription folders, feed management and full Fever API support, but doesn t weigh you down with any features you won t use. It works with Fiery, Reeder and any other Fever-compatible client. I 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 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","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 5th, 2014",
"ts": "1391657520",
"summary": "There have been multiple articles lately across the parts of the Internet I frequent regarding what one shouldn t post on their social media accounts. I would like to respond to every one of them by saying screw you. I m pretty sure there s no Dear Abby for Facebook, and if there is, it isn t you. To be fair, I could easily not read all of these articles. It would be in my best interest. But I m a sucker for headlines telling me not to do something I really like doing. Most recently it was a screed against Facebook s Look Back videos . I ve had a lot of fun watching 20 seconds of my friend s important moments, but that didn t rub off on the author. I don 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 re polluting the stream with our self-serving or misinformed posts. I hate to be the bearer of bad news, but that 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 m on Facebook is to see cute pictures of my friends pets. I m not kidding. If I thought it was a valid source of news and information, I d be a little more discerning, but it just isn 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 s Broadcasts offer the same kind of low-noise, high-value streams. And here s a hint: use one of the many tools available to see just the links from your Twitter stream. There s no news happening that doesn t have a link in it. Stop pretending that anyone cares about your rules. And if you don t want to see pictures of my pets, song lyrics I consider poignant, restrospectives of my life and other personal trivialities, don 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","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 30th, 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 28th, 2014",
"ts": "1390914000",
"summary": "I wrote up the Vox 1.0 release for TUAW a little while back. It seems like it s only been a few months (it 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 s still a gorgeous, compact controller with cool features like scroll-controlled volume and seeking, but it 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 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","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 26th, 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 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 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 t have to worry about rebuilding it every time. Some updates (like this one) may require extra JavaScript loads, so you 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 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 More info",
"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","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","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 25th, 2014",
"ts": "1390687500",
"summary": "Custom processors are an advanced feature of Marked which provide a lot of power and flexibility if you know how to write scripts and implement them. For the average user they re of less use, but for the power users they 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 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 t have a processor set for that stage and default to the next option. You can easily see what s going on with your script by using a logger set to a file. I use Ruby s built-in Logger module to",
"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","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","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 21st, 2014",
"ts": "1390337640",
"summary": "Cheaters 2.0 is up, and it s a huge step forward. I ve been inspired by Dash to make it faster, easier and more keyboard-centric. The first thing to note is that I 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 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 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 ll want a good icon for it this is the one I 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 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 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 re looking for something that you don 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 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 Google search instead of DuckDuckGo. If you re using Fluid, you can easily jump back to your cheat sheets",
"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","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","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 20th, 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 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 FlowDock, Dropbox 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 PowerMate Bluetooth Yes. SunCycle Switch your Sublime Text theme based on sunset/sunrise times for your location. I haven t actually gotten it to work yet 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","integrates","landings","lands","location","oldest","others","partnership","plans","position","rather","realized","reliably","reminded","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 20th, 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 t, however, do anything special with Markdown. Never fear, Marked fills the void nicely. You can just drag a text note from Together s note list to the Marked icon in your Dock and Marked will preview the file as you go. I don 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 ve already been scripting Together, you 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 t seen Together, check it out . Same for Marked , of course. P.S. Quite by coincidence (I wrote this post yesterday), Together 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","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 17th, 2014",
"ts": "1389996720",
"summary": "I just published Marked 2.2 (820) . Yes, it 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 t upset anybody. It will allow conformance with 99% of GitHub s handling of headers (last 1% in the works). If you are manually generating links based on Marked s auto-generated headers, this may cause some issues you need to fix. I haven 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 (C6;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 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 re already a Marked 2 user, click Marked 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","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 16th, 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 ve always thought they couldn 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 s more to play with than I ll ever have time for. Status Board Electricity Price Tracker My friend John Voorhees put together a great script for tracking ComEd s electricity prices in Panic s Status Board. Even if you re not using ComEd 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","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 16th, 2014",
"ts": "1389896940",
"summary": "In case you 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 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 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 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 it. This allows you to do two",
"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","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","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 15th, 2014",
"ts": "1389811800",
"summary": "I 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 re not familiar with nvremind, you 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 from to folder watchers 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 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 More info",
"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","including","international","issues","makes","messages","named","notification","notifications","nvremind","project","public","quick","recipe","recipes","reminder","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 15th, 2014",
"ts": "1389794400",
"summary": "I ve always said that I m the most productive when I let myself work on what I feel like at the moment. Since leaving my day job, I ve felt like working on everything. I ve actually been a little scattered, but I 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 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 d like to sincerely thank everyone who s shown their support by subscribing to this blog . I 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 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 should I manage to find the time. I 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","indie","kinks","later","leaving","length","little","myself","night","nights","prefer","private","productive","projection","ready","recorded","refining","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 12th, 2014",
"ts": "1389554460",
"summary": "Ok, so here 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 day 1 . Monday will be the start of increased focus on existing projects and attention to new ideas that have been bubbling up. I ll be writing, including finishing my tagging book and working on the children s book. I ll be developing Marked (starting with the App Store version) and adding a couple of smaller apps to the App Store list. I 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 ve decided I don t want to paywall any of my content here. I also realized that with all of these projects, I won t have the energy or time to provide additional content for paid subscribers. So what I 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 s easy, just head over here and sign up with PayPal. It was not optimal. Only a few people get that.",
"keywords": ["engadget","joystiq","store","brettterpstra","engadget","joystiq","marked","massively","monday","paypal","reader","store","supported","thanks","adding","announcement","appreciate","blogging","blogs","brand","brings","bubbling","challenging","changes","children","conflict","consider","content","continue","couple","decided","developing","development","dissatisfied","easier","energy","enjoy","enjoying","environment","everything","express","finishing","focus","going","great","ideas","including","increased","leave","loved","lucrative","making","monetarily","monetize","monthly","needed","offering","official","optimal","outset","paywall","people","personality","pledge","point","powers","projects","radical","reading","realized","shakeup","share","smaller","starting","subscribers","support","tagging","tools","tricks","version","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 10th, 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 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","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 9th, 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 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 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 s calling out to a shell, the $LANG variable I use system-wide doesn 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 More info 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 More info",
"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","important","indented","learned","lists","looks","macos","makes","mangled","mapping","output","pasting","portion","process","script","shell","solved","system","tricks","trouble","updated","using","utility","variable","versions"]
},{
"title": "Sponsor: Acorn",
"url": "/2014/01/09/sponsor-acorn/",
"tags": [],
"date": "Jan 9th, 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 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 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 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","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 9th, 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 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 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 m promised that it 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 m finding that all of the elements I had to point out to people are now intuitive and require very little if any 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 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","mindmeister","obvious","online","palette","people","point","powerful","predictable","promised","radiant","roadmap","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 8th, 2014",
"ts": "1389204780",
"summary": "SearchLink 2.0 is up now. I had enough changes to make after the last version which I already thought was a pretty big step forward that I decided it was time for a major version bump. If you 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 s in the Automator action. If/when new options are added, you ll have to manually paste override values into the config file, but the benefit is that you won 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. 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 m sure myself and other Editorial / Pythonista users would be grateful. Contact me for any info you need. SearchLink v2.3.65 Download SearchLink v2.3.65 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 01/16/24. Changelog Donate More info",
"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","keeping","latest","leaving","links","located","major","manually","markers","modify","myself","needing","online","options","override","overriding","paste","porting","possible","project","properly","reconfigure","replaced","results","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 7th, 2014",
"ts": "1389133740",
"summary": "I haven t been posting about every episode of Systematic for a while now. I ve had some amazing guests lately, and if you re behind on the show you should definitely catch up ! This week 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 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","think","while"]
},{
"title": "Twitterify Popclip Extension",
"url": "/2014/01/06/twitterify-popclip-extension/",
"tags": ["popclip","twitter"],
"date": "Jan 6th, 2014",
"ts": "1389031200",
"summary": "I 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 s page on Twitter or a Twitter search for the hashtag. It 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 re curious. Brett's PopClip Extensions v1.45.2 Download Brett's PopClip Extensions v1.45.2 A few PopClip extensions for Markdown writing and other useful tools Published 11/30/14. Updated 02/07/23. Changelog Donate More info",
"keywords": ["github","markdown","readme","twitter","becomes","brett's","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","holding","install","installing","links","mention","myself","names","often","pencil","pointing","posts","quick","rarely","repository","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 6th, 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 I 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 ve never loved the Automator web view for the same reasons that Gabe created this. Check it out. One tsp. Online Recipe Box I m loving Paprika these days, but here 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","iphone","lists","loved","loving","mapping","partnership","productivity","reasons","recipes","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 4th, 2014",
"ts": "1388868000",
"summary": "I 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 s not working anyway). The Markdown Service Tools have been updated to reflect this, but there s no other change beyond the removal of the AutoLink Service. Also, if you have any Gatekeeper issues, let me know and I ll update the download as needed. SearchLink v2.3.65 Download SearchLink v2.3.65 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 01/16/24. Changelog Donate More info",
"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","itunes","improvements","issues","leaving","links","needed","options","output","parameter","point","project","quickly","quotes","reflect","removal","replacing","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 3rd, 2014",
"ts": "1388775600",
"summary": "I had a couple of friends recently lose their beloved pets. It s a tough thing to watch, and an even tougher thing to go through, but it s guaranteed to happen eventually 1 . I learned some things from my wife, who s lost more pets than I ve owned, and I think there s good advice here for everyone. First, be there for the bereaved. You don 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 m sure the same can be said for human grieving, but I 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 ve just lost a creature you ve known its entire life. So here 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 s a little thing that makes a big difference. In my area, this will set you back $90-125, but it 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.",
"keywords": ["death","parrot","except","first","pamela","peeke","systematic","unlike","account","advice","anonymous","apparently","appreciated","before","beloved","bereaved","break","charged","close","coffee","couple","creature","cremation","difference","donation","entire","eventually","everyone","everything","fortunate","friend","friends","greatly","grieving","guaranteed","happen","house","however","human","invite","learned","little","losing","losses","major","makes","meaningful","movie","outlive","owned","painful","parrots","possible","reasonable","recently","reminds","suggested","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 2nd, 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 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 s uploaded instantly and passed on to your chosen target. Switching targets takes just 2 taps and you re ready to shoot again. Whether you re blogging on the go or sharing images with friends, this is a great app for anybody. It 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","images","included","instantly","intro","leaves","message","passed","picture","price","ready","released","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 2nd, 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 1st, 2014",
"ts": "1388603100",
"summary": "This year I Launched the new brettterpstra.com on a Jekyll platform (I ve written about a few of my Jekyll adventures ). Since then I ve had a couple of projects ship, so I thought I d take time to do my yearly review. The big news for me this year was Marked 2 . I m really happy with the progress it 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 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 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 d like, but it 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 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","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 30th, 2013",
"ts": "1388412000",
"summary": "I made a jQuery plugin called TL DR 1 live on GitHub last night. It 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 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 top 2 . To see one with manually curated (and hastily created) summaries, check this post . Grab the plugin on GitHub. I ll really only be updating it as needed for my own site, but I 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 t read, but you knew that. Moving forward I plan to add snippets and summaries to my posts manually, but what you re seeing on previous posts is the auto-generated summaries.",
"keywords": ["github","jquery","allen","check","christopher","github","maybe","moving","quikscan","action","algorithm","animated","apply","attribute","automatically","based","begins","block","bloggers","called","check","classes","click","collapse","configured","contents","control","created","curated","designed","detailed","determines","experimental","figure","generated","hastily","headers","headlines","inspired","intro","jquery","links","longer","manually","markup","needed","night","options","outputs","paragraph","paragraphs","plugin","point","pointed","possibly","posts","project","relatively","requests","reveal","right","scans","sections","seeing","sentences","settings","short","snippets","styling","suggestions","summaries","summarize","summary","table","templating","texts","updating","upper","using","version","where","write"]
},{
"title": "Web Excursions for December 28, 2013",
"url": "/2013/12/28/web-excursions-for-december-28-2013/",
"tags": ["bookmarks"],
"date": "Dec 28th, 2013",
"ts": "1388269320",
"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Simple JSON processing in shell scripts I didn 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. Twas(n t) the Software Patent BeforeChristmas Stu Maschwitz waxes poetic on the iA Writer Pro snafu. I 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 dead and buried to teens , 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 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","lying","major","media","modular","notions","partnership","playing","plugin","poetic","processing","programs","quiet","rather","reify","relations","relaunch","reliably","research","responsive","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 28th, 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 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 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 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 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 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 s probably more for you to discover. Word Repetition visualization now works for CriticMarkup d documents, and the CriticMarkup word counts are further improved. Lastly, there are more fixes and fine-tunings than I can list (notably, BBEdit 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 ve fixed. If you have any problems that aren t covered in this release, be sure to drop me a line on the support site . Again, grab the automatic",
"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","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 27th, 2013",
"ts": "1388190540",
"summary": "I ve been messing around with creating a decent teleprompter for a long time. I ll probably publish one on the App Store eventually. In the meantime, here s a trick that I 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 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: Now, wait until you see the version I ve been working on for a separate app using Canvas and CSS3 transitions to create the smoothest scrolling Markdown preview IN THE WORLD. Don 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).",
"keywords": ["cascading","markdown","sheets","style","teleprompter","adjusting","canvas","custom","latetotheparty","markdown","marked","shift","store","style","teleprompter","world","action","adjust","amount","arrows","below","between","block","border","change","choose","colors","coupon","create","creating","customize","decent","different","eventually","everybody","feature","getting","haven","highlight","laptop","meantime","messing","middle","midnight","missed","passable","picked","preferences","preview","priority","publish","quick","record","recordings","remove","requires","right","screen","screencasting","scripts","scrolling","secondary","separate","settings","smoothest","speed","style","styles","teleprompter","teleprompters","tomorrow","transitions","trick","using","version","video","visible","voice","waiting","while","width","widths","window","working","worry"]
},{
"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 26th, 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 24th, 2013",
"ts": "1387922400",
"summary": "Just a quick note to let everyone know that I ve fixed a few bugs in the tagfiler.rb script since posting it. If you 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 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","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 24th, 2013",
"ts": "1387908000",
"summary": "There s a lot to remember when you re preparing to record a screencast or a podcast. Quitting some apps, launching others, changing settings I find it easiest just to script everything. That s probably not a surprise to anyone. Here are some tricks I ve learned along the way. You can use them to implement your own scripted environment for screencasting or podcasting. I 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 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 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 ll be coming at it from an Automator perspective, though. There 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 re just stopping/starting a few apps every time, it 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 t relaunch apps at the end that weren t running before. I won t go into that here, but it 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 in a series, but I don t like to use them as my wallpaper every day. This little trick lets me script in a",
"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","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","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","possible","potentially"]
},{
"title": "A GeekTool Time Machine progress indicator",
"url": "/2013/12/24/a-geektool-time-machine-progress-indicator/",
"tags": ["geeklet","geektool"],
"date": "Dec 24th, 2013",
"ts": "1387893600",
"summary": "Here s a quick hack for GeekTool users who use Time Machine and don t have enough stuff on their Desktop. That 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 s hard to find these days for some reason, so I 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 s a full circle. Because it s a font, it works at any size and with any foreground color. For this Geeklet, I 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 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 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 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 s no Time Machine backup running, it disappears. When you 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 t forget to grab Marked 2 for 20% off before the 26th. Use the coupon code .",
"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","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 23rd, 2013",
"ts": "1387832400",
"summary": "The headline kind of says it all. I 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 s email address and give the gift of Markdown, too. See what I did there? That s clever holiday marketing. Don 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"]
},{
"title": "Web Markdownifier for PopClip",
"url": "/2013/12/23/web-markdownifier-for-popclip/",
"tags": ["markdown","markdownifier","popclip"],
"date": "Dec 23rd, 2013",
"ts": "1387821600",
"summary": "To follow up on my Marker bookmarklet , I 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 s a handy trick when you re gathering notes or just want to save a portion of an article. For giggles, I made you a movie. It s not because I don t think you grasp what it does already, it 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 s ability to gather the HTML from the selection. I 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.2 Download Brett's PopClip Extensions v1.45.2 A few PopClip extensions for Markdown writing and other useful tools Published 11/30/14. Updated 02/07/23. Changelog Donate More info",
"keywords": ["formats","github","languages","markdown","markup","marky","writing","brett's","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","movie","notes","portion","relies","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 23rd, 2013",
"ts": "1387807200",
"summary": "It s been a good year for software. I 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 post 1 to share the ones I use the most often. The apps are roughly broken into categories, however arbitrary they may be. They re also listed in alphabetical order, not by preference or awesomeness. Check out the ones that sound interesting! I 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. 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 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 ve found to build files for Mac apps. ImageAlpha / ImageOptim ImageAlpha is the best PNG compression tool I ve seen, and it s free. So is ImageOptim for lossy compression of",
"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","added","adjusted","affordable","allow","allowing","allows","almost","alphabetical","amazing","annotation","annotations","announce","another","anyone","anywhere","applications","arbitrary","array","assign","audio","augmentation","automatic","automatically","awesome","awesomeness","background","backing","backup","backups","badly","based","basement","basic","batch","beautiful","before","behind","between","blast","books","bootable"]
},{
"title": "Quick Tip: Tag Filer without Hazel",
"url": "/2013/12/22/quick-tip-tag-filer-without-hazel/",
"tags": ["launchd","macos","quicktip","tagging"],
"date": "Dec 22nd, 2013",
"ts": "1387748040",
"summary": "If you want to run the Tag Filer script , but don 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 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","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 22nd, 2013",
"ts": "1387723020",
"summary": "This is a variant of my Bullseye bookmarklet which takes a selection including headlines, links, and images and converts it to Markdown using Marky . It 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 t currently detect whether the selection contains hidden elements, so all elements present in the selection are converted (whether you know they 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 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 d rather load it in Marky 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","nodes","occasionally","offer","partial","pieces","preview","putting","rather","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 21st, 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 re currently using Marked 2, just run Marked 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 ve missed an update or two and skipped ahead, it s a good way to catch some of the finer details. This particular release isn t huge, but there 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 ll enjoy the ability to Command-click in the table of contents to collapse and expand sections on the fly.",
"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","latest","links","message","missed","missing","multiple","nested","notes","optional","output","paragraphs","particular","paths","preferences","print","processor","proper","refreshing","release","results","returns","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 20th, 2013",
"ts": "1387568580",
"summary": "I ve finished a tag-based filing system I started working on before Mavericks. I personally think it s flexible enough to be shared, but others may balk at the apparent complexity. It does take some planning and setup, but it s an effective way for me to manage files. The basic idea is that you save new files and incoming attachments that you don 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 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. It will locate General Brainstorming based",
"keywords": ["folder","hazel","management","mavericks","archive","based","brainstorming","choose","desktop","finding","folder","general","hazel","inbox","installing","mavericks","planter","projects","script","searching","shell","smart","speaking","speed","tagname","terminal","writing","action","added","ahead","ambiguously","among","another","applied","apply","assign","assigned","attachments","autocomplete","based","basic","because","becomes","before","benefit","brainstorm","bring","called","capital","chain","check","checks","choose","clicking","colon","colons","command","common","completely","complexity","consider","containing","contains","context","contexts","continues","couple","create","created","creates","creating","deeply","define","delimited","depth","desktop","different","directories","directory","divisions","draft","dropdown","easily","effective","ended","enough","error","errors","example","executable","exist","extra","fairly","filed","files","filesystem","filing","filter","finished","first","flexible","folder","folders","found","generates","grouping","groups","handles","handy","hierarchies","hierarchy","icons","incoming","individual","inside","instantly","keyboard","keystrokes","letter","letters","level","levels","lists","located","locations","longer","looking","major","makes","manually","match","matched","matches","matching","maverickstagging","message","metadata","moved","multiple","named","names","nested","nests","notification","often","organization","original","originally","others","parsed","passed","paths","perfectly","personally","picked","planning","point","possible","prefer","prefix","primary","process","project","projects","rarely","recognized","recognizes","redundant","rename","repetitive","represents","reusable","right","rough","roughly","running","saving","script","search","searchable","searched","searches","searching","section","sections","seeing","segment","semantic","separated","sequence","setup","shallow","shared","shortcut","simple","single","sometimes","somewhere","special","specific","started","starting","starts","string"]
},{
"title": "Web Excursions for December 19, 2013",
"url": "/2013/12/19/web-excursions-for-december-19-2013/",
"tags": ["bookmarks"],
"date": "Dec 19th, 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 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 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 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","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 19th, 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 s important 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 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.",
"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","online","pixel","powerful","professional","provides","publish","responsive","revolutionizing","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 18th, 2013",
"ts": "1387380840",
"summary": "I ve updated the icon grabber script to allow you to specify what type of application you re looking for, be it iPhone, iPad or Mac. In case you 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 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. I 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 More info",
"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","highest","iphone","itunes","iphone","looking","platform","previously","processing","query","quickly","resolution","respective","resulting","retrieving","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 17th, 2013",
"ts": "1387311000",
"summary": "I had a great conversation with Jose de Pierola on Systematic this week. He 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","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 16th, 2013",
"ts": "1387210080",
"summary": "Let me start by saying that I 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 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 t yield the same results every time. Oddly, the 2.4GHz channel was generally faster than the 5GHz. I still can 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 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 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 m not sure if the problem creeps back up eventually, but I m just toggling it regularly to avoid the issue altogether. Now that I 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","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 14th, 2013",
"ts": "1387047300",
"summary": "There was a pretty huge response to the Cognitive Productivity giveaway , and I d like to thank everyone who entered. The winners of a free copy (and all subsequent updates) are: If you re on the list and don t hear from the Giveaway Robot shortly, let me know . If you didn t win and haven 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","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 14th, 2013",
"ts": "1387036200",
"summary": "I haven 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 t seen 1/10th of yet. Chillier than I d hoped, but a good 50 warmer than the town I left behind. Since I don 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","since","taken","today","vacation","visit","warmer"]
},{
"title": "Sponsor: Atlassian's agile guide",
"url": "/2013/12/12/sponsor-atlassians-agile-guide/",
"tags": [],
"date": "Dec 12th, 2013",
"ts": "1386849600",
"summary": "Thanks to Atlassian for sponsoring BrettTerpstra.com this week. Gone are the days of 30-minute status meetings where most people are half-asleep or pecking away on their laptops, oblivious to what s being said. Agile standups are the leaner, more efficient cousin of status meetings where attendees actually stand up. On our feet, we re more focused, attentive, and concise. It 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","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 11th, 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 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 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 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","hundreds","imagined","input","inside","intentional","interest","interface","later","listen","lousy","markdown","monthly","object","outline","partnership","podcasts","previews","provides","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 7th, 2013",
"ts": "1386450000",
"summary": "If you re interested in putting more of your brain into your productivity pursuits, Luc P. Beaudoin s book Cognitive Productivity is one you 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 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 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 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","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 5th, 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 ve got everything you need to unleash yours. Whether you re a pencil nut who knows all the brands ( Caran d Ache , Blackwing , Faber-Castell , we stock them all), or a casual doodler looking for something to inspire you, there s something for you on Pencils.com. Combine that with our legendary customer service and fast, reliable shipping, and you 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 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","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 4th, 2013",
"ts": "1386176820",
"summary": "Marked 2.2 (807) is up. For current customers, use Marked 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 Preferences Print to see the options. I 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 re far more accurate than in the last version. If you haven 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","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 28th, 2013",
"ts": "1385662380",
"summary": "I can t tell you how much I 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 t fully explain. Thanks to everyone who s brightened my week. I ll be starting to contact some of you this week to talk about scheduling. I m going to keep this going. I 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 ll mention it on the shows, and hopefully continue to receive notes from people with great stories. For those who haven t yet, if you 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 t heard one yet that was anything but wonderful to listen to. Just make a recording audio quality isn t important, only what you have to say and toss it into the Audio Drop . I would ask one favor: because I didn t build any kind of database system for this (yet), it 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 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","mention","minutes","myself","notes","people","quality","receive","recording","regular","responses","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 28th, 2013",
"ts": "1385647200",
"summary": "MindNode 3 for iOS is out, and it 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 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 s amazingly handy: when you 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 well 1 , 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 s even a dropdown for a quick Table of Contents type overview of your map for navigation, which is especially handy if you re working zoomed in and don 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 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.",
"keywords": ["icloud","macintosh","mindnode","store","contents","manually","mindnode","speaking","store","table","across","adept","adjusting","affordable","amazing","amazingly","among","animated","apply","arrangement","automatically","available","beautiful","beautifully","between","bezier","branches","bunch","change","child","children","color","colored","colors","connections","context","couple","creating","curve","custom","dashed","design","designed","detach","dotted","dropdown","especially","everything","feature","flawlessly","handy","icloud","ithoughts","impeccably","interface","keeping","latest","layout","looking","makes","mapping","multiple","navigation","nodes","options","originated","overview","platforms","polish","possible","publishing","quick","quickly","repeat","return","sentence","settings","shape","sharing","shuffle","sibling","solid","space","syncs","takes","themes","think","times","trick","typing","universal","using","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 28th, 2013",
"ts": "1385640000",
"summary": "Fracture prints your photo in vivid color directly on glass. It s a picture, frame, mount all in one. It 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","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 27th, 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 t know how many people would participate anyway. So I started a Github repository for it . It has one contribution right now, and that s from me. I often make Styles that I don 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 re willing to share, please either submit a pull request (if you re a Github user), or just contact me directly and I 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 . 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 re added. I 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 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 m open to folder downloads, etc. Eventually I plan to create a bundle format for them. Thanks, and I hope you ll consider sharing the custom styles you create, even if they re revisions and evolutions of existing styles!",
"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","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","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 26th, 2013",
"ts": "1385514900",
"summary": "Marked 2.2 is out, and it s a pretty big update. Stability, speed and rendering fixes and improvements, as well as some new features. I m working on a screencast about some of them, but it won 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 s my favorite, but it s going to take a screencast to explain it properly. For now, there s the help page . If you haven t picked up a copy, this is a great time to jump on board. There s a free 7-day trial waiting for you . Here are the release notes. I 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 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 t manually save a clipboard preview, it 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 {/} navigation for CriticMarkup Tabs Marked s multi-document and book features are some of my personal favorites (thought they re not well known), so I took some time to improve on a few",
"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","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","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 23rd, 2013",
"ts": "1385214600",
"summary": "I 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 t paid much attention to other people 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 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 t know yet how receptive other package developers will be to the idea, but if you have Markdown-related features you 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 s even in the top trending packages right now! If you 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","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 22nd, 2013",
"ts": "1385130960",
"summary": "This might be a cockamamy scheme, but I m taking auditions for an upcoming Systematic guest. I m looking for people who: You have 5 minutes to wow me. Go! Here s how I 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 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 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","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","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 22nd, 2013",
"ts": "1385128800",
"summary": "App.net announced a new feature today called Broadcast. It s a way to selectively subscribe to and receive push notifications from the news sources most important to you. When a source you 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 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 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 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","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 21st, 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 ve been searching for a new email client for a long, long time now. I 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 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 d tried MailMate in the past, but it hadn 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 m blown away by both the default functionality and the extensibility of the system. The one thing I couldn t get working was integration with OmniFocus. The clipper failed to grab a message URL, and I couldn 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. 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 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 can override any part of the bundle s settings. Here s an example bundle for changing the key command for the Add to OmniFocus command. Download: Omnifocus.mmBundle.zip Unzip and place the",
"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","below","blown","building","built","bundle","bundles","change","changing","client","clipper","closely","comes","command","commands","community","contains","contents","couldn","crowd","custom","default","detail","details","digging","editor","email","embedded","enough","entry","example","examples","excellent","excited","exciting","explore","extending","extensibility","failed","feature","features","files","finite","folder","found","friends","functionality","funded","hacking","happen","happy","highlighted","hotkey","identifier","inside","integration","intrigued","issues","keybindings","language","little","looking","mailboxes","makes","making","matches","mechanism","message","mmbundle","mmcommand","modifiers","needed","nerds","normal","override","overriding","package","people","pledge","plist","plugins","point","portion","possibilities","powerful","preferences","problems","productivity","promising","quick","reading","recently","replacing","resembles","restarting","right","rulesets","script","scripting","searching","seeing","settings","smart","solution","solved","standard","stick","stuck","support","system","telling","think","through","times","tools","touching","tried","turned","turning","under","underlying","wanted","where","window","workflows","working"]
},{
"title": "Sponsor: Voila",
"url": "/2013/11/21/sponsor-voila/",
"tags": [],
"date": "Nov 21st, 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 20th, 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 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 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","badge","bells","boasts","check","choose","count","custom","double","excellent","extended","extension","features","first","fonts","gather","gestures","gorgeous","iphone","itunes","including","indicator","looking","mentioned","nicely","overkill","progressed","purchased","quickly","refinements","released","remaining","reminders","scheduling","second","simple","stick","tapping","tasks","themes","todos","tomorrow","typefaces","uncompleted","version","weekends","whistles"]
},{
"title": "Systematic 71 with David Sparks",
"url": "/2013/11/19/systematic-71-with-david-sparks/",
"tags": ["podcast","systematic"],
"date": "Nov 19th, 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 albeit interesting zones. Whether you join us for the tangential voyage or not, you should check out Email on iBooks. It 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","potential","preparation","relevant","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 16th, 2013",
"ts": "1384607400",
"summary": "I 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 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 More info",
"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","icons","image","includes","including","language","languages","local","locale","localization","location","measurement","multiple","native","point","quick","received","renaming","replaced","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 14th, 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 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 ll probably add these to Cheaters soon 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 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 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","highly","hopefully","hours","iphone","integration","little","mapping","meantime","mentioned","pages","partnership","pledged","posting","productivity","promising","recommend","series","sharing","shortcuts","shortening","software","tackles","tagging","think","topic","video","writing"]
},{
"title": "Sponsor: Lootback",
"url": "/2013/11/14/sponsor-lootback/",
"tags": [],
"date": "Nov 14th, 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 re using stock doesn 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","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 12th, 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 re nerdy enough to care. We talked about Texas, too, but I cut it out. Mostly for time (it s a long episode ), plus I don 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","ignorant","interviewing","listening","loves","magic","making","nerdy","opinions","perturb","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 12th, 2013",
"ts": "1384265220",
"summary": "This is a script I m using with GeekTool to output a bar chart of stats for my blog to my desktop. It s specifically geared toward the data returned by FeedPress , but I 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. There 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 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","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 9th, 2013",
"ts": "1384008540",
"summary": "I ve finished the biggest update to Planter thus far, and bumped it to version 2.0. I don 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 s been a while, I 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 ve renamed the command plant. You can, of course, call it whatever you like, but seemed more intuitive to me than . I m not updating the LaunchBar version as I m not using it anymore, but it s still available on the project page with the older version of Planter, if you want it.",
"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","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 8th, 2013",
"ts": "1383928500",
"summary": "Marked 2.1 (793) just went live. Current users can use Marked 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 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 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 s also a fix for some issues viewing Scrivener documents. I 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","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 7th, 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 s PS4 to reports on Google s latest acquisition whether you re looking for the latest Apple product or looking for views on mobile web, Techi is the site to visit. Techi.com 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 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 t even have to visit daily. Just sign up for the daily newsletter and get the latest tech news direct to your inbox with no fuss whatsoever in time for that commute or mid-day coffee. Don 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","mobile","morning","newsletter","offers","original","product","pulse","quick","reports","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 3rd, 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 ve been working on this, but James Berry beat me to it. Command line tagging and tag search for Mavericks that 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 when Verizon decides it 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 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 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","iphone","impressive","increased","jdberry","little","looks","loves","overview","partnership","prefixes","restructuredtext","reliably","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 2nd, 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 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 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 s the script. You ll want to modify it to add the applications and aliases you want, but it s simple enough that it shouldn 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 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","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 1st, 2013",
"ts": "1383328800",
"summary": "Marked 2 is great for live previews while you write Markdown, but it s also very handy for reading long form articles. There 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 s a list of Marked 2 features you quite likely don t know about. For full information on all of Marked 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 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 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 to the point you want, then press z again to return to reading mode",
"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","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 1st, 2013",
"ts": "1383315540",
"summary": "Here 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 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 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 t need anything extra to do that. If I may make a shameless plug and I may, because this is my blog the Markdown results look great in Marked 2 with the Mutli-column theme. If you ve never tried it, it s pretty cool. I 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","mirror","names","newsy","notes","nvalt","point","prefix","quick","reading","recipe","results","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 31st, 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 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 re looking for a simple solution that takes zero setup and covers the most essential window management functions, DoublePane is an excellent solution. It 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","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 30th, 2013",
"ts": "1383138000",
"summary": "Carl Johnson left a comment on my Lazy Markdown Links post to mention that he s long used a similar lazy method for footnotes. It struck me as a great idea. I whipped up another preprocessor 1 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 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 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 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 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 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","johnson","links","markdown","marked","multimarkdown","penney","preprocessor","searchlink","service","shift","style","terminal","tools","while","above","accepts","added","another","avoid","below","blogs","bottom","clean","combination","comment","connect","default","documents","downloads","duplication","either","example","executable","finds","first","folder","follows","footnote","footnotes","format","formats","formatted","freely","gather","generally","generated","great","however","inline","irrelevant","labels","links","marker","matches","mention","method","multiple","output","personal","preferences","prefixes","preprocessor","random","randomize","recently","repeated","rewrote","scenarios","script","separate","similar","somebody","speed","standalone","standard","struck","style","themselves","thought","together","trick","useful","using","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 29th, 2013",
"ts": "1383076800",
"summary": "I 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 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 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 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","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 28th, 2013",
"ts": "1382987700",
"summary": "About one year ago, Hugo Verweij brought us Cleartones Organic (mentioned here ), and I ve used the collection of cleverly simple, non-grating ringtones and alerts ever since. Now he s produced Cleartones Pure, and I m excited that he 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 s is the only sound consisting of a single frequency with no overtones. It s an excellent basis for a set of ringtones, but a single sine wave by itself isn 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","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 28th, 2013",
"ts": "1382965200",
"summary": "I ve actually begun work on a book about tagging, and Mavericks in particular. It s a subject I truly enjoy, and so far it 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 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 ve done a lot with mdfind and OpenMeta in the past, but I 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 re enough to make it unique within the folder. Partials have to be the start of the tag, unless there 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 t really see the point of not just putting the two tags on the file separately. But 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","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","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 27th, 2013",
"ts": "1382907060",
"summary": "This is not a sponsored post, it 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 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 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 m not an IT guy and I m horrible at network stuff. I ve heard plenty of neckbeards 1 complain about OS X as a server platform, but I 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 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 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 s a great deal. Check out the details of the package , and tell em I sent you.",
"keywords": ["computing","macmini","mavericks","network","operating","server","system","virtual","brian","check","dreamhost","macminicolo","mavericks","vegas","amazing","awesome","based","because","celebration","colocate","colocated","complain","couple","crashed","customer","details","doing","downtime","foolishly","going","great","hardware","heard","horrible","hosted","hosting","loved","maintenance","managing","mention","middle","minutes","neckbeards","network","online","others","package","platform","plenty","position","promo","provides","reign","release","remote","response","right","server","service","setup","share","since","software","spare","sponsored","stuff","support","switched","thought","through","times","website","working"]
},{
"title": "Speedier file tagging in Mavericks",
"url": "/2013/10/27/speedier-file-tagging-in-mavericks/",
"tags": ["finder","macos","tagging"],
"date": "Oct 27th, 2013",
"ts": "1382890980",
"summary": "As you might expect, I m enthusiastically exploring Mavericks 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 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 s tag attributes as well as OpenMeta 1 . 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 t use Leap much, but for making a seamless transition it was a great choice. It s a bit expensive for the task if you don t already own it, though, and there are scripting solutions to handle it. Now that tagging is in the spotlight 2 , I 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 re reading this because of what I said in the headline, though, I should probably get around to offering a tip 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 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 m navigating by keyboard, and there s not a shortcut for the Finder Tags dialog by default. So here 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-semicolon 3 ( ). Then click in the Keyboard shortcut field and type your preferred key combination. Note: if you re like me and have more keyboard shortcuts set up than you could ever possibly",
"keywords": ["finder","houdahspot","keyboard","mavericks","openmeta","preferences","shortcut","system","andersen","arrow","characters","default","enter","eventually","finder","folder","google","hazel","houdahspot","however","ironic","keyboard","mavericks","openmeta","preferences","shortcuts","system","thanks","twitter","anyway","appear","archive","attributes","autocompletion","automatically","available","because","before","bottom","built","button","certain","character","choice","choose","choosing","clear","click","clicking","close","codebase","combination","comma","commit","compiled","context","continued","continuing","convert","default","desktop","dialog","dialogs","doesn","dropdown","ellipsis","enthusiastically","everyone","excellent","expect","expensive","experiences","exploring","faster","favorite","field","files","folders","found","function","getting","grabbed","great","handle","headline","hotkey","ideas","including","intended","interest","keyboard","latest","loathe","looked","making","mirrors","native","navigating","noticed","offering","official","options","others","popup","possibly","preferred","punch","reading","reasonable","release","remember","replaces","right","script","scripting","scripts","seamless","selected","semicolon","serious","sharing","shortcut","shortcuts","single","smart","solutions","source","special","spotlight","store","sweeps","system","table","tagging","think","title","tools","transition","trouble","updates","version","while","whole","writing","years","yesterday"]
},{
"title": "TextExpander and Lorem Ingsoc in Wonderland",
"url": "/2013/10/26/textexpander-and-lorem-ingsoc-in-wonderland/",
"tags": ["lipsum","snippet","textexpander","tools"],
"date": "Oct 26th, 2013",
"ts": "1382823060",
"summary": "I ve updated the Random Lipsums group in the TextExpander Tools . Again . I removed some services that weren 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 s perfect for testing stylesheets and, if you happen to develop a Markdown preview app , it 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 together 1 ), 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 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 s a little brute force in some areas, but it 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.",
"keywords": ["mavericks","snippets","textexpander","tools","again","alice","brother","filthy","gutenberg","lipsums","markdown","maruku","mavericks","momentarily","project","random","service","snippets","stuff","terminal","textexpander","tools","wonderland","abruptly","areas","available","based","biggest","bread","brute","butter","closed","command","compatible","completes","considering","creating","definition","dependable","develop","directory","expanded","fellow","files","folder","footnotes","force","generator","going","greenish","group","happen","hatching","hilarious","horror","important","included","install","lists","little","local","located","looking","maruku","mixed","moved","often","ootiful","people","preview","processors","project","raingrams","random","remember","removed","round","script","services","slice","sneezing","snippet","snippets","solid","source","standalone","straight","stylesheets","substitutes","successfully","tables","testing","together","tools","updated","upset","using","various","version","versions","water","weren","words","working"]
},{
"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 26th, 2013",
"ts": "1382810820",
"summary": "For those of you using the Geeklet to display your top RAM processes on your Desktop, I ve updated the script located here with a version compatible with Mavericks and Ruby 2.0. If you re wondering, it 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 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 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 ll add them to the list. Turns out that I put out more stuff than I can support",
"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","located","looked","mention","needs","offering","older","pressing","processes","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 24th, 2013",
"ts": "1382651760",
"summary": "One step at a time, I 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 More info",
"keywords": ["github","markdown","mavericks","tools","twitter","changelog","donate","download","markdown","mavericks","published","service","services","tools","updated","almos","collection","creating","designed","easier","formatted","issues","macos","particular","relevant","right","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 24th, 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 ve discovered now that I 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 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 re writing Mac Apps, you 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 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 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 d hoped. I used my Pinboard/OpenMeta script and a handy OpenMeta 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","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 24th, 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 ve been testing v1.1 for a couple of weeks and I m pleased to report that many of my initial concerns have been addressed. It was a great editor to begin with, but now it s a powerhouse. First off, it s optimized for Mavericks. If you ve just upgraded, you ll appreciate the interface and speed. It 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 m secretly pleased it s not as powerful as Marked , to which you can still send Ulysses documents with a keystroke). There 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 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 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 re editing in full screen, switching between files used to be a bit of a chore. Now there 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 d like to change about the resulting Markdown, but it s a very cool feature. Check out Ulysses III on the Mac App Store. It s $44.99 US, and if you re looking for a full-tilt document management system with great features for long or short-form",
"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","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 24th, 2013",
"ts": "1382612400",
"summary": "I m really excited to have Tonx as a sponsor this week. I 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 s easy to make a better cup in your kitchen than you 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 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","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 23rd, 2013",
"ts": "1382562840",
"summary": "It was fun to connect with old friend and former co-worker Dan Peterson on this week s Systematic. Dan 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","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 23rd, 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 ve added the group as a URL it should automatically update. I m still trying to figure out why some of my Random Lipsums aren t working. I have them working fine from the command line, but they re not expanding in TextExpander. I ll post an update once I figure that out. I m not sure anyone but me is slicing up Orwell s 1984 and turning it into Lipsum text anyway 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","including","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 19th, 2013",
"ts": "1382210460",
"summary": "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 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","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 18th, 2013",
"ts": "1382111040",
"summary": "I ve added a new Service to the Markdown Service Tools for stripping out Markdown formatting, leaving just plain text. It s not something I do often, but I 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 More info",
"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","items","leaders","leave","leaving","macos","often","received","remove","requests","script","stripping","trouble"]
},{
"title": "Marked 2.1 released",
"url": "/2013/10/17/marked-2-dot-1-released/",
"tags": ["marked"],
"date": "Oct 17th, 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 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","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 17th, 2013",
"ts": "1382007600",
"summary": "A huge thanks to Squarespace for sponsoring BrettTerpstra.com this week! Whether you 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","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 16th, 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 15th, 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 s guest on Systematic. Tim and I have known each other for a while and worked together while he was at Engadget. He 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","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 15th, 2013",
"ts": "1381857540",
"summary": "Silvia Gatta and Federico Viticci comprise Icons Coffee , which previously brought us the Perspective Icons set for OmniFocus. Now, they 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 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","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 15th, 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 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 re a Terminal person and haven 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","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 14th, 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 s also now Mavericks-compatible and should handle UTF-8 characters appropriately. SearchLink v2.3.65 Download SearchLink v2.3.65 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 01/16/24. Changelog Donate More info",
"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","itunes","krabbe","leaving","links","notes","restored","search","searches","working"]
},{
"title": "A SearchLink MAS stopgap",
"url": "/2013/10/13/a-searchlink-mas-stopgap/",
"tags": ["macappstore","searchlink"],
"date": "Oct 13th, 2013",
"ts": "1381690680",
"summary": "If you use SearchLink at all, you ve probably noticed that the Mac App Store searches have stopped working. This happened the day iOS 7 came out, and it still hasn 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 ve switched (!mas) searches to use a Google site search instead. This is a temporary stopgap, and I ll switch back to using the iTunes Search API once it can handle it again. Let me know if it doesn t work for you. You can find more info on SearchLink on the project page . If you re updating, remember to swap in your iTunes and Amazon affiliate codes as needed. SearchLink v2.3.65 Download SearchLink v2.3.65 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 01/16/24. Changelog Donate More info",
"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","itunes","leaving","links","needed","noticed","project","remember","resolved","results","returns","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 13th, 2013",
"ts": "1381669200",
"summary": "I m releasing Sidecar13 for Simplify today. It 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 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 d be curious to know how the 13 version looks on an 11 too, if you care to try it out. You 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 More info",
"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","jacket","laptop","location","looks","original","pause","point","release","releasing","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 12th, 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 s something addictive about the chill in the air. I think I could actually live with Fall all year round. I 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 d get to this point. I ve been told many times that I m lucky to be alive, and on many different occasions. I ve always taken that seriously, but at the same time I ve taken it for granted. In the past, I d always just go back to what almost killed me on the first go-round, somehow thinking I d do the same thing just a little different this time. My life was a scientific experiment with no control group. I ve fallen down stairs. I ve fallen into 20-foot holes and landed on my back in broken concrete. I ve been held at knifepoint, and gunpoint. I ve overdosed. I ve engaged in risky behavior of all kinds. There are a couple dozen reasons I shouldn 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 t so lucky. I didn 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 t been as lucky. Maybe you haven 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 re not doing so hot right now, take heart: things can work out. Don t give in, don 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","hills","holes","honestly","killed","kinds","knifepoint","landed","leaves","little","looking","lucky","moving","myself","normally","overdosed","picky","point","pretentious","reasons","reminds","remorse","right","risky","round","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 12th, 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 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 TextExpander You ve heard me talk plenty about TextExpander . It 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 ve spent a lot of time tweaking PopClip , and it 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 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 t be necessary with the advent of Mavericks, but for right now it 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 importantly for me 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 and customizable keyboard shortcuts for triggering any script. Like the",
"keywords": ["applescript","fastscripts","keyboard","magic","shortcut","textexpander","totalfinder","trackpad","almost","applescripts","bartender","bettertouchtool","cocoa","command","default","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","based","basic","build","center","changes","checking","choices","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","especially","essential","essentially","expand","experience","favorite","field","files","flexible","folder","folders","foreground","function","functionality","functioning","gamma","gives","hacking","having","heard","hierarchy","hotkeys","importantly","installs","interaction","involves","keeps","keyboard","launching","limited","little","machine","machines","making","maximize","menus","mouse","navigating","navigation","necessary","night","normally","often","organize","panes","parameters","paste","picks","plenty","point","position","previously","provides","quick","quickly","receive","recently","recommend","regular","regularly","remapping","right","rules","running","screen","script","scripts","selections","settings","several","shame","shine","shortcoming","shortcut","shortcuts","shrink","slightly","snapshots","space","spent","split","standing","sunset","survived","tagged","tagging","target","tools","triggering","trimmed","trouble","tweaking","tweaks","typically","typing","using","utilities","various","vital","waiting","watches","wealth","where","windows"]
},{
"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 11th, 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 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 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","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 10th, 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 s enabled. Even refreshing after an edit is possible. There 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 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","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 10th, 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 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","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 8th, 2013",
"ts": "1381255440",
"summary": "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","legal","myriad","parts","picks","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 3rd, 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 s a full refresh, including hotkey access to your entire password (and credit cards, and serial numbers ) 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 Skype has announced that they 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 s cool. My scripts and LaunchBar actions will break, though, and that makes me love Microsoft less. Again. Demo - jQuery.JamCity (1.1) That s it. I m re-creating my Last.fm page with this. Emmet LiveStyle Emmet LiveStyle is a plugin for live bi-directional (editorbrowser) CSS editing I mentioned this on Systematic #64 , but it 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","hotkey","impressive","including","jquery","makes","mention","mentioned","notes","numbers","others","partnership","party","password","plugin","refresh","reliably","scripts","securely","serial","shutting","similar","supports","today","working"]
},{
"title": "Sponsor: The Theme Foundry",
"url": "/2013/10/03/sponsor-the-theme-foundry/",
"tags": [],
"date": "Oct 3rd, 2013",
"ts": "1380798000",
"summary": "The Theme Foundry has been building premium WordPress themes since 2008. They recently released Collections 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 t find a huge assortment on their site 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","official","partner","premium","process","provider","quality","quantity","recently","released","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 1st, 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 s a link and what 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 t remember who suggested this, but it sounded like fun to create a regex for. It 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 t edit (e.g. in a Tweet), so you can create emails quickly from social applications and the like 1 . That s all for now. If you re a PopClip user, check out the full details for the package on the project page . You won t regret it. Brett's PopClip Extensions v1.45.2 Download Brett's PopClip Extensions v1.45.2 A few PopClip extensions for Markdown writing and other useful tools Published 11/30/14. Updated 02/07/23. Changelog Donate More info I ve just handed the spammers the regular expression to harvest your protected email address that you tweet around. Now they ll be unstoppable. Also, your dog s name in 1337 isn t going to keep the bad guys out for long. Somehow this footnote ended up being a 1Password plug",
"keywords": ["expression","github","popclip","regular","brett's","changelog","cocoadev","copyurls","donate","download","extensions","first","fixpoorlyobscuredemails","github","lastly","markdown","openurls","password","popclip","published","somehow","updated","added","additions","address","addresses","applications","before","bonus","broken","button","called","changes","check","click","clipboard","create","danssite","decent","default","details","detected","duplicated","email","emails","ended","exact","expression","extension","extensions","feature","fields","figuring","finding","footnote","forums","going","halves","handed","handle","handles","harvest","higlight","making","middle","morning","multiple","newlines","opening","package","parsing","processor","project","protected","protocol","quickly","regex","regret","regular","remember","running","separated","server","social","sounded","spammers","split","stuff","suggested","takes","together","tools","turns","unclickable","unstoppable","updated","useful","username","where","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 1st, 2013",
"ts": "1380655560",
"summary": "It was a lot of fun talking to Evelyn Jean Pine on today s Systematic. She 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","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 27th, 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 s a lot of news to share and I ve been short on writing time all week 1 . I figured rather than let good stories slip by, I 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 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.",
"keywords": ["evernote","github","iphone","markdown","pinboard","automated","beginners","blanc","brett","cleanmymac","essentials","evernote","excursions","foldingtext","github","guide","javascript","kelly","markdown","parallax","pinboard","shawn","similar","texts","write","amazing","anima","animation","awesome","based","beginning","blogging","brought","browsing","chapters","crazy","criteria","definitive","dietary","discoveries","document","emphasis","encapsulate","excursions","feature","features","figured","formatting","gotten","great","happen","headlines","iphone","includes","ingredients","inline","jquery","latest","libraries","library","lists","looking","maintaining","making","minimit","offers","optimization","partnership","preferences","previously","ranging","rather","recipes","released","requisite","restrictions","reviewed","scroll","scrolling","services","share","short","showing","signed","skrollr","slick","speed","standalone","stories","themes","tools","updated","updates","users","using","version","while","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 27th, 2013",
"ts": "1380308220",
"summary": "If you didn 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","solid","winners"]
},{
"title": "Marked 2 launched",
"url": "/2013/09/26/marked-2-launched/",
"tags": ["marked"],
"date": "Sep 26th, 2013",
"ts": "1380196800",
"summary": "Marked 2 has officially launched. There 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 t want to drop $12. Unfortunately, I m pretty sure I can t add that copy to the App Store description, but I don t feel that leaving Marked 1 up for a while is going to cause anyone undue harm, and I ll be providing fixes as needed (though it hasn t needed many for a while now). You can try Marked 2 for free (seven day trial) and see if it 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 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 one 1 , but I need to work around a couple of sandboxing roadblocks first. That 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 keyword density Advanced document statistics with reading",
"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","paddle","paginated","preview","purchasing","scrivener","shift","store","unfortunately","visit","voodoopad","watch","youtube","access","allows","amazing","anyone","appreciate","approval","arguments","available","based","basic","because","behind","between","building","built","bundle","cause","changed","changes","channels","circumstances","clearing","clipboard","coming","common","confusion","couple","create","creating","custom","decision","definitely","density","description","designed","detailed","differences","difficult","discrepancy","document","documents","drawer","earlier","easily","either","eventually","everything","evolution","expand","expectations","export","exported","expression","expressions","faster","feature","features","fields","files","filter","finding","first","fixes","folder","footnotes","forum","found","generating","going","goodies","great","guides","happy","headers","headlines","hearing","highlighting","hoping","images","improved","improvements","included","includes","including","incorporate","indexes","information","inline","interview","keeping","keyboard","keyword","keywords","launched","leaving","light","limitations","listeners","lists","lives","looking","maintain","makes","mentioned","migrate","navigation","needed","nested","officially","online","optimized","options","original","outside","overdue","overused","overview","palette","parity","parser","people","phrase","phrases","planning","plate","playlist","podcast","portability","possible","posts","preview","previews","price","process","processing","processor","processors","providing","quality","questions","quickly","readability","readers","reading","receive","received","recently","refresh","regex","regular","response","rewrite","rewritten","right","roadblocks","sandboxing","science","scrippets","scroll","search","searching","second","section","sections","selector"]
},{
"title": "Sponsor: Igloo",
"url": "/2013/09/26/sponsor-igloo/",
"tags": [],
"date": "Sep 26th, 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 ll actually like . Igloo is free to use with your team, it 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 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","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 25th, 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 t finished each day get cleared, so it s great for keeping track of tasks that really only matter if you get them done today or put them off until tomorrow. It s not a full-featured productivity app like OmniFocus, but it 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 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 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 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","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 24th, 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 t tried it, it 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","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 21st, 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 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 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 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 s already out on the App Store. It 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 ve been pruning out apps that are no longer maintained/available, but enough new editors are coming along every week that it 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","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 19th, 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 t left. I m constantly humbled by the more than 300 super intelligent colleagues of 51+ nationalities! I learn every day. If there s a day I don t? It means I wasn 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 s always something to do in this city. And at Booking.com , there s always someone who s willing to join in. The many parties are just something that has to be experienced. Come join and I 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","sponsoring","super","thrilling","warmth","willing","within"]
},{
"title": "Generational 52",
"url": "/2013/09/17/generational-52/",
"tags": ["interview","podcast"],
"date": "Sep 17th, 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 ve long admired Rob 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 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","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 17th, 2013",
"ts": "1379444880",
"summary": "I had the great pleasure of being joined this week by Ellen Hinton, also known as Ellen Once Again. She 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 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 ll enjoy it 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","history","instruments","joined","music","recording","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 13th, 2013",
"ts": "1379096820",
"summary": "Thanks to everyone who entered. If you didn 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","website","winners"]
},{
"title": "Announcing the BusyCal Winners",
"url": "/2013/09/12/announcing-the-busycal-winners/",
"tags": ["giveaway","macappstore","macos"],
"date": "Sep 12th, 2013",
"ts": "1379020380",
"summary": "Thanks to everyone who entered the giveaway for BusyCal 2.5. The lucky three winners are: If you re on the list and didn t receive a code, you 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 If you didn 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 t forget that there 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","lucky","receive","trial","website","winners"]
},{
"title": "Sponsor: Careers at Booking.com",
"url": "/2013/09/12/sponsor-careers-at-booking-dot-com/",
"tags": [],
"date": "Sep 12th, 2013",
"ts": "1378983600",
"summary": "An exciting job opportunity from this week 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 s best accommodation platform. You 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 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 ll provide short-term accommodation and help you adjust to your new home in Amsterdam. You 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","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 11th, 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 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 s not replacing Sublime Text for me, but it 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 you know, for those occasions when a sorry shrug or certain fingers just don t convey the message. I just passed you on the right because you 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.",
"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","audio","backpack","because","behind","bikers","board","boosting","brainstorming","brilliant","brought","capabilities","certain","collaborating","collaborative","combo","computer","configuration","conversations","converting","convey","dozen","driving","editor","enhancements","excursions","facebook","fingers","fixes","format","heaping","ibackpack","iphone","impressive","issues","latest","mapping","message","messages","mirror","nested","nicely","numerical","offers","options","outline","outlines","partnership","passed","pause","people","price","product","productivity","programmers","progressing","rearview","recordings","release","replacing","rewind","rhymes","right","sandboxing","saved","serving","shrug","sidebar","signals","simple","software","sorry","system","through","version","watchers","watchman"]
},{
"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 11th, 2013",
"ts": "1378904400",
"summary": "ForkLift is a file manager which in my opinion doesn 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. 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 t forget, there 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","mentioned","mouse","multiple","navigating","navigation","nearly","normal","offers","often","opening","options","panes","performing","person","provides","quickly","randomly","remote","renaming","residents","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 10th, 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 9th, 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 t make you sacrifice the system integration you 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 including a menubar dropdown for a quick overview. If you 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 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","meeting","menubar","multiple","offers","optionally","overview","quick","randomly","regardless","residents","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 9th, 2013",
"ts": "1378735200",
"summary": "Federico Viticci, editor of Macstories , has published his first book on the iBookstore, and the topic is one he 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 s reformatted and updated with Retina screenshots, video tutorials, interactive graphics and 20 new workflows you won t find elsewhere. For a limited time, he 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 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","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 8th, 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 t tried the one that comes with the download, so I can 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 ve primarily been using it to wrap , and tags when editing in HTML and Markdown. I decided I should just make that it s own extension, and put together a CriticMarkup extension while I was at it. These make adding editor 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 s preferences, there s a toggle for datetime. If it 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.2 Download Brett's PopClip Extensions v1.45.2 A few PopClip extensions for Markdown writing and other useful tools Published 11/30/14. Updated 02/07/23. Changelog Donate More info",
"keywords": ["editor","github","markdown","shift","twitter","brett's","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","highlight","holding","included","initials","input","insertion","insertions","inserts","little","marks","markup","microdata","mnemonically","modifier","necessary","optional","places","preferences","primarily","problematic","quick","reviewing","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 5th, 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 s fastest cloud encoding service. We 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 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","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 4th, 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 ve started using this at work and it 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","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 4th, 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 ve done, I thought I d point out a few of the prominent, front-facing tricks. I 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 s worth a post. Feel free to leave a comment here or ping me on Twitter about anything you 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 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 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 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 close enough to an off-screen image, it replaces the",
"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 31st, 2013",
"ts": "1377987420",
"summary": "My Jekyll build takes a while, and when I m at my machine I like to know at a glance if a build is running. I 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 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 Center 1 . 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.",
"keywords": ["center","exception","geektool","growl","handling","linux","notification","center","geektool","growl","handy","jekyll","notification","rakefile","automated","beginning","black","build","clear","clears","desktop","easily","error","example","exception","function","generation","glance","great","growlnotify","handler","includes","initial","lengths","lights","location","loving","lower","machine","message","multiple","native","notification","notifications","passing","rather","realized","reasons","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 30th, 2013",
"ts": "1377867600",
"summary": "And me instead of Picasso. Take what you can get, I suppose. I recently put version 1.8 of Brett s PopClip Extensions up for download, and added a project page with the latest information. It s become quite a collection, I figured it was time. Here s a rundown of some of the most recent changes. Grab the updated versions below. If you re already using any of them, double clicking it from the downloaded package will update the installed version. Brett's PopClip Extensions v1.45.2 Download Brett's PopClip Extensions v1.45.2 A few PopClip extensions for Markdown writing and other useful tools Published 11/30/14. Updated 02/07/23. Changelog Donate More info",
"keywords": ["encoding","extension","github","percent","popclip","blockquote","brett","brett's","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","information","installed","latest","level","linebreak","modifier","options","outdent","package","project","quote","quoting","recent","recently","remove","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 30th, 2013",
"ts": "1377867600",
"summary": "This isn t a brand new trick. It s based on a Bash function for alias last that I 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 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 line 1 , 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 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 re saving. That s for if the last argument is a filename or pattern and you ll be changing it next time you want to run the command. Hacky, but handy if you remember it. I ve been starting to port over to zsh lately, but I m still learning about a few quirks. In this case, I 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.",
"keywords": ["alias","computer","operating","shell","systems","hacky","ahead","alias","appended","argument","available","based","before","behaves","brand","certain","changing","command","commands","complex","creates","differently","escaping","expanded","figure","filename","first","function","handy","learning","little","original","pattern","permanent","pipeline","places","profile","quirks","quotes","remember","saving","session","shell","source","starting","temporary","trick","trimming","turns","version","wanted","whitespace","wrote"]
},{
"title": "PopClip hacking",
"url": "/2013/08/29/popclip-hacking/",
"tags": ["extension","hacks","popclip","quicktip"],
"date": "Aug 29th, 2013",
"ts": "1377800280",
"summary": "I 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 m exploring Here 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 re an avid PopClip user, you probably have a popup window that 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 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 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 s up to you to do a little hacking. It 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 s compressed, but don 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 this 1 Modify the bundle identifier strings in the block above to match the applications you want the extension to show up in. It 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 t have the extension , you ll need to add that for PopClip to recognize and load it. When loaded from a non-compressed folder, the extension doesn t disappear after you double-click it. That s ideal for testing. If you",
"keywords": ["context","popclip","property","blocked","compress","config","contents","download","finder","modify","plist","package","paste","pilot","popclip","rename","restricting","right","service","services","shorter","skypecall","terminal","twitter","unzip","above","appearing","applications","backup","block","break","browsing","build","bundle","button","certain","change","check","choose","clean","click","clicking","clicks","combinations","command","compressed","cumbersome","curious","defeats","developers","disappear","distribution","doesn","double","easiest","editing","editor","editors","emails","enclosing","everywhere","example","exploring","extension","extensions","extracted","first","folder","format","fresh","hacking","hackish","haven","ideal","identifier","inkling","keyboard","labels","little","loaded","match","memory","options","original","overflowing","plist","popup","posted","quick","reading","recently","recognize","refuse","rename","restrict","right","scenario","scripts","short","shortcut","sometimes","specific","streamlines","strings","takes","testing","through","titles","versions","window","worst"]
},{
"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 28th, 2013",
"ts": "1377703800",
"summary": "I haven t gotten my Curio brainstorming article together yet, but I did want to mention that there 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 s one of my favorite tools for putting together and tracking ideas and projects. Even considering that, I constantly feel I m underusing it. But you don t have to take a leap based on my opinions, there 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","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 28th, 2013",
"ts": "1377685200",
"summary": "It started last night when I put together a little app that could generate PopClip extensions. I m embedding the video for it at the end of this post because it was really fun to make, but I 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 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 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 re curious about adding options to an extension, see the Config.plist file for this one. Also, here s that amazing video for an app that really does nothing. Brett's PopClip Extensions v1.45.2 Download Brett's PopClip Extensions v1.45.2 A few PopClip extensions for Markdown writing and other useful tools Published 11/30/14. Updated 02/07/23. Changelog Donate More info",
"keywords": ["extension","markdown","popclip","video","bolding","brett's","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","included","initial","installing","little","night","nothing","noticed","options","panel","pencil","plans","plist","plugin","prefixes","replicated","right","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 27th, 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 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","thought"]
},{
"title": "jTag: Auto-tagging for Jekyll",
"url": "/2013/08/27/jtag-auto-tagging-for-jekyll/",
"tags": ["autotag","blogging","jekyll","tagging"],
"date": "Aug 27th, 2013",
"ts": "1377612000",
"summary": "I 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 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 s tags would be the only part that would need customization. It s working great for me, but I haven 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 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","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 26th, 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 m sure you 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 growing 1 . 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 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 s great products , you won t regret it! Developers, you d be crazy not to include TextExpander support in any app you build. It s not just me saying that.",
"keywords": ["applescript","drive","dropbox","evernote","google","icloud","iphone","pdfpen","applescript","check","david","developers","drive","dropbox","evernote","google","pdfpen","smile","sparks","textexpander","adjust","amazing","among","annotation","available","before","brings","build","canned","companions","computer","contracts","crazy","creators","dates","desktop","developers","directly","document","documents","dynamic","either","email","error","experiments","favorite","feature","formatted","forms","friend","great","groups","growing","having","heard","highlighting","honor","icloud","iphone","images","inserting","keeps","language","markup","mention","natural","nerdy","notes","output","parts","people","plenty","popup","print","productivity","products","rapidly","receive","regret","remember","replace","replies","return","right","saying","shell","short","snippet","snippets","sponsored","support","syncs","thursday","together","tools","touch","tricks","turns","typos","video","works"]
},{
"title": "Web Excursions for August 25, 2013",
"url": "/2013/08/25/web-excursions-for-august-25-2013/",
"tags": ["bookmarks","github"],
"date": "Aug 25th, 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 s right, Web Excursions two days in a row. It s been a nice, quiet weekend and I ve had a little extra time to explore qlImageSize I missed this when it was new, but I m glad I found it now. It 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 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 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","humorous","image","including","interface","little","local","managing","merging","missed","network","offers","partnership","pixel","plugin","qlimagesize","quiet","repositories","right","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 25th, 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 s supposed to be. If you 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). 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 s helpful for some. I may build this into the default template, but I doubt I 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","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 24th, 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 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 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","hotkey","hundreds","implementing","later","leaving","marker","markers","monthly","moves","music","nicely","partnership","people","podcasters","productively","quick","rather","recording","requires","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 24th, 2013",
"ts": "1377370500",
"summary": "I did some hacking on the excellent Extra Info script from Pedro Lobo. I wouldn 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 t go into a lot of details. Here 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 m really putting it out there for others to hack on, but it 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","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 23rd, 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 m not going to list every possible application, but I 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 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 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 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 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 ve never mind mapped before, it 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 t handle notes, tags, file links, etc., but for rapid brainstorming it 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 share a map. It handles metadata, notes, tasks, images and more",
"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","kitcam","lifehack","maptini","markdown","markdownediting","marked","mindmanager","mindmeister","mindnode","mindjet","mindmeister","multimarkdown","omnifocus","omnigraffle","omnioutliner","outlining","paper","primarily","scapple","scribbles","smartmarkdown","sometimes","speed","sublime","sublimetableeditor","taskpaper","twitter","watch","while","writing","ability","accept","achieve","added","affordable","again","allow","allows","almost","altering","alternatives","amazing","among","anyone","appears","append","applications","article","associated","associating","available","based","because","before","begin","beginning","believe","between","boggling","brainstorm","brainstorming","brainstorms","built","camera","capable","capture","carefully","catch","change","changes","check","choice","click","cohesive","collaborate","collaborating","collaboration","collaborators","collapse","collapsible","comfortable","coming","commenting","comments","completely","composer","consciousness","consider","conversations","conversion","convert","converted","converting","create","dates","deleted","depending","describing","desktop","detailing","determined","develop","development","directly","document","documents","doesn","doing","downloaded","dozen","drawback","drill","easily","editing","editor","edits","effective","embed","enough","entire","entirely","essence","excellent","expand","expensive","explanation","explanatory","explore","export","exported","exporting","expounds","extensive","extra","favorite","feature","features","files","filtered","finalization","fleshed","fleshing","forgot","format","formats","formatted","found","geared","going","great","group","handle","handles","having","headers","headlines","helpful","history","ibluesky","iphone","ithoughtshd","ithoughtsx","ideas","images","import","imported","impressed","including","indentation","indented","index","initial","invite","itself","keyboard","larger","later"]
},{
"title": "Sponsor: PDFpen for iPad from Smile",
"url": "/2013/08/22/sponsor-pdfpen-for-ipad-from-smile/",
"tags": [],
"date": "Aug 22nd, 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 21st, 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 19th, 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 someday. Editorial for iPad: A Landmark in iOS Text Editors I linked Federico Viticci s post on Editorial, but equally worthy of mention is Macdrifter s post. Experience the awesome of Editorial from Gabe 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","later","linked","mapping","mention","minimalist","partnership","perspective","ported","ports","productivity","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 18th, 2013",
"ts": "1376849160",
"summary": "I 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 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 Mind Map. In MindMeister you have to save to a text file and import it, but it s still a very convenient way to start a map. I ve packaged the script as both a System Service and a PopClip extension. They both do the same thing it 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 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/14. Changelog Donate More info If you use",
"keywords": ["iphone","markdown","mindmeister","mindnode","omnioutliner","popclip","another","brainstorming","brett","brett's","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","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","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 17th, 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 ve been impressed, and it s become my primary stand both at my desk and while I 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 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 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 s not the most aesthetically-refined piece of hardware you ll see. It 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","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 15th, 2013",
"ts": "1376602920",
"summary": "Editorial for iPad is out, and ready to change the face of iPad writing. I 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","since","writing"]
},{
"title": "Systematic 57 with Dr. Drang",
"url": "/2013/08/13/systematic-57-with-dr-drang/",
"tags": ["podcast","systematic"],
"date": "Aug 13th, 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 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 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","history","joining","music","older","picks","spirits","truly"]
},{
"title": "Searchlink 1.6 update",
"url": "/2013/08/09/searchlink-1-dot-6-update/",
"tags": ["macos","searchlink","service"],
"date": "Aug 9th, 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 s comments in the gist . SearchLink v2.3.65 Download SearchLink v2.3.65 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 01/16/24. Changelog Donate More info",
"keywords": ["searchlink","changelog","donate","download","henrie","markdown","nathan","published","searchlink","searchlink","thanks","updated","below","catch","combining","command","comments","editor","leaving","links","matches","preceded","remedied","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 8th, 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 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 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","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 8th, 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 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 More info",
"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","includes","including","information","instructions","language","languages","localizations","localize","multiple","original","summary","translation","version","weather"]
},{
"title": "Sponsor: Igloo",
"url": "/2013/08/08/sponsor-igloo/",
"tags": [],
"date": "Aug 8th, 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 7th, 2013",
"ts": "1375900320",
"summary": "Thanks to everyone for entering, that was a record turnout. I ll be running some more giveaways in the near future, but the Giveaway Robot has requested a little vacation time. If you didn t win, you should still check out Chatology . It integrates so well with your system that it 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","running","search","system","turnout","vacation","winners","woolane"]
},{
"title": "Twobiquity episode 14",
"url": "/2013/08/07/twobiquity-episode-14/",
"tags": ["interview","podcast"],
"date": "Aug 7th, 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 6th, 2013",
"ts": "1375835640",
"summary": "I had the pleasure of hosting another Terpstra on today s Systematic. My brother, Wesley, is an artist, teacher, student, husband and father, and he 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","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 6th, 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 ve offered my readers a special promotion. First, the premium radio upgrade is just $0.99 for a week. That s automatic on the App Store, no promo code needed. Next, they 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","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 5th, 2013",
"ts": "1375716960",
"summary": "To top off the recent rash of software giveaways 1 , I have five copies of Chatology ($19.99 US value)! It s a Mac app that brings instant search to Messages, so you can quickly locate any chat you 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 Quebec 2 . Sorry, this giveaway has ended. I know, it s been a lot of giveaways lately. Don t worry, I haven t become a clearing house. I just talk to a lot of developers and these all kind of landed together. Wonder why?",
"keywords": ["apple","canada","central","ichat","message","michael","quebec","simmons","central","chatology","command","enter","messages","quebec","sorry","wednesday","wonder","below","brings","chance","clearing","copies","developers","ended","everyone","except","giveaway","giveaways","haven","house","instant","landed","loads","optionally","quickly","randomly","ready","recent","residents","search","shortcut","software","together","value","winners","worry"]
},{
"title": "And the Fantastical winners are...",
"url": "/2013/08/03/fantastical-winners/",
"tags": ["giveaway","macappstore","macos"],
"date": "Aug 3rd, 2013",
"ts": "1375558920",
"summary": "Pete and David only get the first half of the code and they have to guess the rest. That s what you get for only giving me the first half of your name. Just kidding. If you re on the list and didn t get an email, let me know . Thanks for playing, and be sure to check out Fantastical if you didn t win. Check back on Monday 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","kidding","playing","winners"]
},{
"title": "Bullseye 0.3",
"url": "/2013/08/01/bullseye-03/",
"tags": ["bookmarklet","bullseye","javascript","markdown"],
"date": "Aug 1st, 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: If you have the bookmarklet installed, it s already updated. If you want to switch to getting raw Markdown text back, just make the above edit. If you haven t installed it yet, just drag the link below to your bookmarks bar. If you run into issues on a particular page, I 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","running","shoot","source","switch","tweaks","updated"]
},{
"title": "CopyPLUS for PopClip",
"url": "/2013/08/01/copyplus-for-popclip/",
"tags": ["extension","popclip"],
"date": "Aug 1st, 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 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 t be fancy 1 . Package updated with the new extension, and all source is available on GitHub . Brett's PopClip Extensions v1.45.2 Download Brett's PopClip Extensions v1.45.2 A few PopClip extensions for Markdown writing and other useful tools Published 11/30/14. Updated 02/07/23. Changelog Donate More info 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.",
"keywords": ["clipboard","launchbar","plaintext","append","applescript","brett's","changelog","donate","download","extensions","github","launchbar","markdown","nothing","package","popclip","published","updated","account","another","appends","available","before","build","character","clipboard","completely","contents","convert","decide","differences","encoding","enough","exists","extension","extensions","fancy","formatting","issues","letting","maintained","minor","overlooked","overwriting","problems","progressively","quick","right","searching","selected","selection","similar","sleeping","solve","somehow","source","spend","stripping","styling","think","tools","trick","updated","useful","using","wanted","works","writing"]
},{
"title": "Sponsor: TextExpander touch 2.0",
"url": "/2013/08/01/sponsor-textexpander-touch-2-0/",
"tags": ["snippet","textexpander"],
"date": "Aug 1st, 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 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","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 31st, 2013",
"ts": "1375288080",
"summary": "First off, welcome to the giveaways, most of Canada. I m still excluding Quebec for inane legal reasons, but everyone else is welcome to enter! I m excited to announce yet another giveaway. Hopefully you re not entirely bored with these yet, because I got you a great one: Fantastical for Mac from Flexibits! If you haven t seen Fantastical, it 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 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","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 30th, 2013",
"ts": "1375219380",
"summary": "My friend and co-worker Erik Sagen was this week s guest on Systematic. It was one of the most random and twisting conversation I 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 ve ever visited TUAW, Joystiq, Massively or Engadget, you ve seen some of his work. He s also a father, a voice actor and a great guy who doesn t have a mean bone in his body. Seriously. When he thinks he s being cruel, he s acting like me when I think I m being sweet",
"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","random","recorded","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 30th, 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 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.2 Download Brett's PopClip Extensions v1.45.2 A few PopClip extensions for Markdown writing and other useful tools Published 11/30/14. Updated 02/07/23. Changelog Donate More info",
"keywords": ["github","markdown","brett's","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","morning","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 30th, 2013",
"ts": "1375191000",
"summary": "GrabLinks went over pretty well, so I ve been motivated to finish up a similar project I had going. It s called Bullseye, and it lets you click a section of a webpage and Markdownify just that content. It 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 t highlight every parent element, just the one it 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 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 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 ll be looking at a Markdown version, ready to copy and paste. If you re using nvALT, just open it and type V to create a new note. It 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 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 Marky. It works. I need to add a couple parameters to the Marky API",
"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","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 28th, 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 the system I ve espoused all these years using metadata on the file itself to store the information and expose it to Spotlight. Apple is on the tagging train, and I m certain they 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 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 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 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 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 t have as many files on your iOS device as you do on your Mac, but even with a fraction of the number it 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 t locate and are unable to see from other apps. It s still possible to work around (see: Cloud Mate ), but it 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 t it just something nerds do? Apple 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, Apple sees that not only will tagging provide an improvement over folders, it will make Macs usable",
"keywords": ["apple","finder","icloud","macintosh","maverick","operating","spotlight","system","apple","because","cloud","consider","default","finder","folder","granted","hopefully","houdahspot","however","mavericks","offering","openmeta","organization","rolling","sandboxing","saved","searches","spotlight","tagging","while","across","aliases","allows","another","anyway","apart","applications","associate","average","badder","based","beauty","because","before","began","behind","bigger","binder","board","bound","bring","bringing","browsers","built","capabilities","carpet","certain","change","compartmentalized","computer","concept","conducting","containers","content","contexts","control","create","created","daily","decades","deeply","desired","developers","device","dialogs","direction","directly","disappearing","documents","drive","duplication","ecosystem","entire","especially","espoused","everything","exerts","exist","expose","favorite","files","filesystem","filesystems","filetype","filing","filter","flotilla","flying","folder","folders","fraction","functionality","gesture","getting","giving","going","having","heart","hierarchies","hoping","hurdle","icloud","implications","improvement","information","integral","integrate","itself","killing","lives","locating","location","longer","major","makes","masses","metadata","mindset","missing","mostly","motivation","multiple","native","nerdery","nerds","nerves","nested","novelty","obvious","opaque","opposed","organize","organized","others","party","perspective","photos","pieces","pinched","planning","point","portable","possible","posted","powerful","practices","preferred","preview","productive","project","pulling","puzzle","rapidly","reads","reality","related","relationships","relief","removal","retrieve","sailing","sandboxed","scoff","seamlessly","search","seaworthy","shallow","shift","short","shouldn","simultaneously","software","specific","split","store","stored","supported","suppose","supposed","surrounding","switching","system","systems","tagged","tagging","technical","think","third","thoughtful","thoughts","through","tingly","together","tools","train","unable","under","undervalued"]
},{
"title": "The 2x myPhoneDesktop winners!",
"url": "/2013/07/27/2x-myphonedesktop-winners/",
"tags": ["giveaway","iphone","macos"],
"date": "Jul 27th, 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 re listed and haven t heard from the Giveaway Robot yet, check your spam folder, then contact me and we 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","straighten","winner","winners"]
},{
"title": "Sponsor: HostGator",
"url": "/2013/07/25/sponsor-hostgator/",
"tags": [],
"date": "Jul 25th, 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 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","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 24th, 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 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 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 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 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","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 24th, 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 m embedding fonts it 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","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 23rd, 2013",
"ts": "1374614640",
"summary": "I 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 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 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","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 23rd, 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 19th, 2013",
"ts": "1374255660",
"summary": "Winners are picked at random by the Giveaway Robot. If you didn 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","tester","winners"]
},{
"title": "Going #iPadOnly",
"url": "/2013/07/18/going-number-ipadonly/",
"tags": ["bookreview","books"],
"date": "Jul 18th, 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 s put out a book called #iPadOnly . It 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 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","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 17th, 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 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 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","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 17th, 2013",
"ts": "1374071280",
"summary": "It seems like only yesterday I was giving away copies of Briefly. Next thing I know, I 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 Canada 1 . 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 m a legalese idiot.",
"keywords": ["address","email","expression","oyster","programming","regular","briefly","canada","canadian","enter","entries","friday","oyster","sorry","winners","accepted","address","anyone","below","codes","collected","contact","copies","database","discarded","email","ended","entries","everyone","except","expression","giveaway","giveaways","giving","idiot","legalese","little","narrow","protected","random","regular","residents","reviewed","seems","shenanigans","sitting","surrounding","testing","unique","valid","value","versed","while","yesterday"]
},{
"title": "Systematic 53 with Jim Trouten",
"url": "/2013/07/16/systematic-53-with-jim-trouten/",
"tags": ["podcast","systematic"],
"date": "Jul 16th, 2013",
"ts": "1374000600",
"summary": "I invited a local musician named Jim Trouten onto Systematic this week. I 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","touring","townies","while"]
},{
"title": "The Briefly giveaway winners",
"url": "/2013/07/16/the-briefly-giveaway-winners/",
"tags": ["giveaway"],
"date": "Jul 16th, 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 t received an email, please give me a shout . If you didn 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","shout","winners"]
},{
"title": "Walking Desk update, July 15, 2013",
"url": "/2013/07/15/walking-desk-update-july-15-2013/",
"tags": ["fitness","furniture"],
"date": "Jul 15th, 2013",
"ts": "1373897460",
"summary": "I ve allowed myself to follow a natural pattern and have settled into a groove where looking at an 8-hour day I 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 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 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 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 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 s all I ever really wear). Now that I ve found I can stick with this, I m finding it easier to justify buying sporty stuff that I would have laughed at before. The pounds aren t flying off, but I 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 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 m still feeling like it 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 ve been too busy to actually clean my cables up to a point where I 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","biking","bought","break","buying","cables","clean","climbing","coffee","comfortable","completely","couple","crank","crazy","decision","doubt","drink","drinking","easier","ending","endurance","everyone","feeling","finding","first","fitness","flowing","flying","found","gallery","generally","goals","going","great","groove","growing","handle","hours","house","jeans","jogging","juices","justify","lasts","laughed","little","looking","lunch","makes","minute","morning","mountain","myself","natural","negative","outdoors","pattern","pictures","point","pounds","quick","rapidly","running","sarcastic","sense","settled","setup","sharing","shorts","shrinking","sitting","slightly","speed","sporty","standing","started","steady","stick","stuff","summer","think","trails","treadmill","unappealing","useful","waist","walking","weeks","whenever","where","while","working"]
},{
"title": "Sponsor: Digg Reader",
"url": "/2013/07/14/sponsor-digg-reader/",
"tags": [],
"date": "Jul 14th, 2013",
"ts": "1373799600",
"summary": "Thanks to Digg Reader for sponsoring BrettTerpstra.com this coming week! Digg (yes, that Digg) has released a new RSS Reader for the web, iPhone, and iPad (Android coming soon). The design is sleek and clean, and the apps are speedy and efficient. Whether you re a hardcore RSS junky or simply want all your favorite online reading in one place, Digg Reader is for you. It s free and available today!",
"keywords": ["aggregator","android","google","googlereader","iphone","android","brettterpstra","reader","sponsorship","syndicate","thanks","available","clean","coming","design","efficient","favorite","hardcore","iphone","junky","online","reading","released","simply","sleek","speedy","sponsoring","today"]
},{
"title": "Mac App Giveaway: Briefly",
"url": "/2013/07/13/mac-app-giveaway-briefly/",
"tags": ["giveaway","macappstore","macos","photography","video"],
"date": "Jul 13th, 2013",
"ts": "1373733600",
"summary": "Briefly is a fun little Mac app for combining piles of photos into a fast-paced video. You simply drag a stack of photos from any other application or folder onto the main window, and it will compile the video. You can sort the photos on the main screen of the application, and add a soundtrack from an audio file or MP3. You can see a quick sample I made on YouTube . You can set the size of the output movie, but Briefly can also automatically determine the best dimensions based on the size of the photos, and reduce the amount of letterboxing (black bars) required to make them all fit the screen. The only thing it s really missing, in my opinion, is the ability to set the timing of the transitions. You can share your videos to the usual email, messages, etc. sources, as well as YouTube and Flickr. In combination with GifBrewery, you can easily make an animated gif out of the resulting movie, which can lead to great fun. Briefly costs $4.99 US in the Mac App Store , but I happen to have 5 copies to giveaway to my readers. Enter using the form below and winners will be drawn on Tuesday, July 16th at 12pm CST. Residents of Canada excluded, sorry. Sorry, this giveaway has ended.",
"keywords": ["apple","macintosh","store","youtube","briefly","canada","enter","flickr","gifbrewery","residents","sorry","store","tuesday","youtube","ability","amount","animated","audio","automatically","based","below","black","combination","combining","copies","dimensions","easily","email","ended","excluded","folder","giveaway","great","happen","letterboxing","little","messages","missing","movie","output","paced","photos","piles","quick","readers","required","resulting","sample","screen","share","simply","sorry","soundtrack","sources","stack","timing","transitions","using","video","videos","window","winners"]
},{
"title": "Sponsor: Backblaze",
"url": "/2013/07/11/sponsor-backblaze/",
"tags": [],
"date": "Jul 11th, 2013",
"ts": "1373540400",
"summary": "Big thanks to Backblaze for sponsoring BrettTerpstra.com this week. I ve had more than one horror story prevented by their service. 1 in 2 computer users lose data every year. Back up all your data with Backblaze online backup. Its unlimited, unthrottled, uncomplicated, and unexpensive. Dont risk losing your music, photos, movies, and whatever else youre working on or editing. Backblaze continuously and securely backs up all the data on your computer and external hard drives. Need to restore or access your files? Download a single file or all your data from any web browser or have Backblaze FedEx you a flash key or USB hard drive. Even quicker - access your files right from your iPhone. Whether its 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.Its easy. Stop putting it off. Start your free trial, and get your backup started today.",
"keywords": ["backblaze","backup","drive","flash","iphone","storage","backblaze","brettterpstra","download","fedex","sponsorship","syndicate","access","backs","backup","broken","browser","coffee","computer","continuously","drive","drives","editing","external","files","flash","happens","horror","iphone","losing","movies","music","online","photos","prevented","putting","quicker","restore","right","securely","service","single","sponsoring","started","stolen","story","thanks","today","trial","uncomplicated","unexpensive","unlimited","unthrottled","users","whatever","working","youre"]
},{
"title": "Systematic 52 with Robert Palmer",
"url": "/2013/07/09/systematic-52-with-robert-palmer/",
"tags": ["podcast","systematic"],
"date": "Jul 9th, 2013",
"ts": "1373390220",
"summary": "No, not that Robert Palmer. He s dead. This one is still alive and doing awesome web and print design work. Robert had a near-death experience last year, and we talked about what effect that may have had on his life, his perspective and his work. We also talk about email rage, web design top picks and booze. Thanks to Robert for making the time and being an awesome guest. Check out episode 52 on 5by5 .",
"keywords": ["death","experience","palmer","robert","studios","check","palmer","robert","thanks","alive","awesome","booze","death","design","doing","email","episode","experience","guest","making","perspective","picks","print","talked"]
},{
"title": "Five more days to get a BrettTerpstra.com t-shirt",
"url": "/2013/07/09/five-more-days-to-get-a-brettterpstra-dot-com-t-shirt/",
"tags": ["apparel","marketing"],
"date": "Jul 9th, 2013",
"ts": "1373379840",
"summary": "This is just a quick reminder that there s only five days left to buy a t-shirt from my first-ever t-shirt campaign . I m excited that I met (and doubled) my sales goal, but I wouldn t want anyone to miss out because they didn t get the news. Don t forget, the more t-shirts you have, the longer you can go between laundry runs. By the way, these shirts are great for first dates. Trust me. The campain runs until next Monday, so grab one soon . If you didn t buy one this time around because it wasn t offered in a color or fit that you wanted, please do drop me a line so I know what to offer if I run another one in the future!",
"keywords": ["american","apparel","casual","clothing","kickstarter","shirt","shopping","monday","another","anyone","because","between","campaign","campain","color","dates","doubled","excited","first","forget","great","laundry","longer","offer","offered","quick","reminder","sales","shirt","shirts","wanted","wouldn"]
},{
"title": "Web Excursions for July 08, 2013",
"url": "/2013/07/08/web-excursions-for-july-08-2013/",
"tags": ["alfred","bookmarks","books","googledocs","keybindings","macos","markdown","notifications","scripting","webkit"],
"date": "Jul 8th, 2013",
"ts": "1373295600",
"summary": "Web excursions brought to you in partnership with MindMeister , the best collaborative mind mapping software out there. Happy Monday! Here s are the websites I ve been stumbling around in and futzing with over the last few days. KeyRemap4Macbook Alfred File Selection Cool trick for adding double-tap modifier keys to Alfred (or any app with global shortcuts). Uses KeyRemap4Macbook , an old and dear friend of mine 1 . mangini/gdocs2md This really, truly works. Convert Google Docs to Markdown with a script in your GDocs menubar. The results are emailed to you, along with any image attachments. Tested it and got nearly perfect results from most documents that were created in GDocs originally. Ones that were the result of HTML import or other scripts I run had more trouble, but that makes perfect sense as they rarely use Google s default headline and emphasis formatting. Via OneThingWell . The Ocean At The End Of The Lane A Review I don t read a lot these days, but when Patrick Rhone writes a review like this (plus, Neil Gaiman!), it s an instabuy for me. WebKit DOM Programming Topics: Sending Notifications I don t have any information coming from my web apps that I consider worth annoying users with right now, but I ve been wondering how this is done. So, there it is. Dad s Casket There s not a lot of explanation behind this photo album, but I imagine a heartwarming story of a family building a casket for a recently-deceased father who would have truly appreciated the craftsmanship. Check out MindMeister and start brainstorming, collaborating, and boosting productivity. I recently made my second donation for KeyRemap4Macbook. Have you supported your favorite donationware lately?",
"keywords": ["apple","gaiman","google","macbook","modifier","alfred","casket","check","convert","gdocs","gaiman","google","happy","keyremap","macbook","markdown","mindmeister","monday","notifications","ocean","onethingwell","patrick","programming","rhone","selection","sending","tested","topics","webkit","adding","album","annoying","appreciated","attachments","behind","boosting","brainstorming","brought","building","casket","collaborating","collaborative","coming","consider","craftsmanship","created","deceased","default","documents","donation","donationware","double","emailed","emphasis","excursions","explanation","family","father","favorite","formatting","friend","futzing","gdocs","global","headline","heartwarming","image","imagine","import","information","instabuy","makes","mangini","mapping","menubar","modifier","nearly","originally","partnership","photo","productivity","rarely","recently","results","right","script","scripts","second","sense","shortcuts","software","story","stumbling","supported","trick","trouble","truly","users","websites","wondering","works","worth","writes"]
},{
"title": "When a file just can't be mdfound",
"url": "/2013/07/06/finding-files-in-spotlight-that-cant-be-mdfound/",
"tags": ["finder","search","spotlight"],
"date": "Jul 6th, 2013",
"ts": "1373156880",
"summary": "I was building a ridiculous Saved Search that gathered all of my web-design-related bookmarks and notes into one place, based on keywords and tags. I don t even remember why I started doing this, and HoudahSpot would gladly have saved me from the issue, but I was too far gone. I got stuck when results in Boolean OR searches would be missing results that showed up in other single-predicate searches. In English: searching for keyword:jquery OR keyword:javascript wasn t showing files that would show up in keyword:jquery by itself. That s where the missing files issue really reared its head. While toying around in the raw plist files for the Saved Search, I found a solution that might help others experiencing this 1 . The trick was to change the key in the plist. If you saved your search in the normal location, you can edit this just by opening the folder in Finder and dragging a file to an editor that accepts any extension (Sublime, TextMate, etc.). The key should be in the section and look like this: If the value on line 4 is set to , try setting it to as shown above, then save the file and open the search back up in Finder. You should see System Files and caches in the search now. I m not sure what setting in Finder affects that key. I have my privacy settings set to show System Files, and they do show up in other searches. Might be something obvious, in which case I m sure you ll let me know. I ll feel silly, sure, but I won t hold it against you. P.S. The headline isn t a misspelling, it s a bad joke. If you get it, we re cool. I was going to go for a Bridge Over Troubled Water thing, but that didn t work out P.P.S. Remind me to ask Houdah why I can t make Saved Searches in Finder from my HoudahSpot searches. I can get the predicate (a nifty feature of HoudahSpot), and I can use it on the command line, but any attempt to modify the predicate in an existing Saved Search is futile, in my experience. I think HoudahSpot should just be able to export a Saved Search Note that I am not a licensed practitioner and my advice should not be taken seriously. I hereby absolve myself of any liability for your Saved Search, your Finder s stability or your computer.",
"keywords": ["computer","finder","folder","houdahspot","spotlight","textmate","virtual","boolean","bridge","english","files","finder","houdah","houdahspot","remind","saved","search","searches","spotlight","sublime","system","textmate","troubled","water","while","above","absolve","accepts","advice","affects","against","based","bookmarks","building","caches","change","command","computer","design","doing","dragging","editor","experience","experiencing","export","extension","feature","files","folder","found","futile","gathered","gladly","going","headline","itself","javascript","jquery","keyword","keywords","liability","licensed","location","missing","misspelling","modify","myself","nifty","normal","notes","obvious","opening","others","plist","practitioner","predicate","privacy","rabbit","reared","related","remember","results","ridiculous","saved","search","searches","searching","section","seriously","setting","settings","showed","showing","shown","silly","single","solution","stability","started","stuck","taken","think","toying","track","trick","using","value","where","while"]
},{
"title": "A hard-working lazy YouTube plugin for Jekyll",
"url": "/2013/07/06/a-hard-working-lazy-youtube-plugin-for-jekyll/",
"tags": ["jekyll","lazyloading","video","youtube"],
"date": "Jul 6th, 2013",
"ts": "1373140800",
"summary": "I ended up going a little crazy with YouTube embeds on the site this week, and my load times suffered greatly. I had just added lazy loading for post images and seen some speed gains, but the Flash embeds were killing me. I needed the click-to-load feature that I ve seen on other sites. Here s my solution. While I m sure there are some perfectly good plugins available to do this, it had to start with markup, so wrote a tag plugin for Jekyll and worked from there. The plugin is a modification of my earlier responsive YouTube plugin . Instead of inserting an object tag, it inserts a link element that I can style via CSS and hook via jQuery. It adds the needed information as data attributes on the tag, so parsing it later with jQuery is simple. Here s the code, which can be easily modified to work with other services (for which I d recommend creating separate Liquid tags). Next I styled the element and added a few rules to prepare for the object embed to occur later. This is the compiled CSS, but the Compass/Sass version is available in the Gist as well. Lastly, a quick jQuery script to handle the setup and replacement. This could be tied into a load-on-scroll plugin if you wanted to, but the performance gains were significant enough for my needs already. I have this compiled into my main JS file as part of a main object, but I made it standalone here. I think this should be working code To see it in action, visit any page on my site with a YouTube video .",
"keywords": ["cascading","element","formats","jekyll","jquery","sheets","style","youtube","compass","flash","jekyll","lastly","liquid","while","youtube","action","added","attributes","available","click","collected","compiled","crazy","creating","earlier","easily","element","embed","embeds","ended","enough","feature","gains","going","greatly","handle","images","information","inserting","inserts","jquery","killing","later","little","loading","markup","modified","needed","needs","object","occur","parsing","perfectly","performance","plugin","plugins","prepare","quick","recommend","replacement","responsive","rules","script","scroll","separate","services","setup","significant","simple","sites","solution","speed","standalone","style","styled","suffered","think","times","version","video","visit","wanted","worked","working","wrote"]
},{
"title": "The SliceReader giveaway winners",
"url": "/2013/07/05/the-slicereader-giveaway-winners/",
"tags": ["giveaway","macappstore","macos"],
"date": "Jul 5th, 2013",
"ts": "1373048220",
"summary": "The Giveaway Robot (he needs a better name 1 ) has named the lucky winners in the SliceReader giveaway. He claims to have notified them all with a stunning email he generated himself and sent through my GMail relay to avoid being spammed. Hopefully. Just in case, here are the winners, contact me if you didn t hear from GR . Congratulations everybody! If you didn t win, SliceReader is still awesome and still only $2.99. Check it out. The new giveaway system worked perfectly, I think. It weeded out multiple entries and records IPs to quickly give me a warning if it gets gamed (not that $2.99 giveaways are high value targets, but I plan to offer luxury cars in the future). It also provides the counter on the form via a simple REST API. I create a Couch database with a unique name for the giveaway and insert a list of codes for the giveaway in a document. I insert a giveaway form in a Jekyll post with the Liquid tag . When that tag is detected on publish, it schedules a build for the expiration date/time. The tag plugin checks for past dates when it runs, automatically removing the form when the contest is over. Then it counts the codes provided, generates random numbers within the total entries and picks out a matching number of winners. It handles notifying them by (beautiful HTML) personalized email (generated in Marked ) with their code and instructions. It emails me the list of winners so I can write a post like this. It worked swimmingly. If anyone wants to see any pieces of the tool, just let me know, here or on Twitter .",
"keywords": ["jekyll","slicereader","because","boone","check","congratulations","couch","cutler","gmail","giveaway","hopefully","jason","jekyll","killotron","kretzman","liquid","marked","peter","robot","severson","slicereader","twitter","withington","anyone","automatically","avoid","awesome","beautiful","build","checks","claims","codes","contact","contest","counts","create","database","dates","detected","document","email","emails","entries","everybody","expiration","gamed","generated","generates","giveaway","giveaways","handles","himself","instructions","looks","lucky","luxury","matching","multiple","named","needs","notified","notifying","numbers","offer","perception","perfectly","personalized","picks","pieces","plugin","process","provides","publish","quickly","random","relay","removing","schedules","simple","spammed","stunning","swimmingly","system","targets","think","through","unique","value","wanted","wants","warning","weeded","weren","winners","within","wondering","worked","write"]
},{
"title": "HTML5/Canvas awesomeness",
"url": "/2013/07/05/html5-canvas-awesomeness/",
"tags": ["canvas"],
"date": "Jul 5th, 2013",
"ts": "1373040000",
"summary": "For as much as I follow web technologies, I really didn t comprehend the full extent of possibilities until very recently. To that end, David Walsh has curated a great list of demos . Warning: they may explode your brain 1 . This is just a screen capture of what you can do with the code found in this demo on CodePen . It s seriously cool. Not only does it dynamically generate text, moving your mouse over it allows you to shift the camera angle as it displays. Amazing stuff. I feel like I have more to learn than I could ever find the time or energy for, no matter how long I live or how much coffee I drink. Also, this .",
"keywords": ["canvas","david","javascript","photograph","print","visual","walsh","amazing","codepen","david","walsh","warning","allows","angle","brain","camera","capture","coffee","comprehend","curated","demos","displays","drink","dynamically","energy","explode","found","great","learn","mouse","moving","possibilities","recently","screen","seriously","shift","stuff","technologies"]
},{
"title": "Slogger gets oAuth, Twitter starts working",
"url": "/2013/07/05/slogger-gets-oauth-twitter-starts-working/",
"tags": ["slogger","twitter"],
"date": "Jul 5th, 2013",
"ts": "1373027400",
"summary": "I pushed a new version of Slogger to the GitHub repository this morning. For those who don t care about all the nitty gritty, just head for the main page and download the zip. This update incorporates OAuth , and thus has some additional requirements. If you want to log Twitter, though, these are needed. The first thing you need to do is update your install. You ll probably want to unzip the download and manually overwrite all of the files in the root, and then put the plugins in the right folders to enable/disable based on your needs. Next, you need to head for the command line if you re not already there. Change to your Slogger folder and run these commands: That will install all of the necessary pieces to get this working. Twitter is the only plugin using this at this point, though a couple more are in the wings. If you re using TwitterLogger, you ll need to run it once to configure. Use to run just that plugin, and follow the instructions on the command line. When you ve authenticated, your credentials will automatically be stored in . Don t mess with em. Hopefully this works out for everyone. Blame Twitter for the inconvenience, and let me know if you have questions . I might answer them, eventually.",
"keywords": ["command","communities","github","interface","networking","oauth","online","slogger","social","twitter","blame","change","github","hopefully","oauth","slogger","twitter","twitterlogger","answer","authenticated","automatically","based","command","commands","configure","couple","credentials","disable","download","eventually","everyone","files","first","folder","folders","gritty","inconvenience","incorporates","install","instructions","manually","morning","necessary","needed","needs","nitty","overwrite","pieces","plugin","plugins","point","pushed","questions","repository","right","stored","unzip","using","version","wings","working","works"]
},{
"title": "GrabLinks: One more time, with feeling",
"url": "/2013/07/04/grablinks-one-more-time-with-feeling/",
"tags": ["bookmarklet","grablinks","jquery","markdown"],
"date": "Jul 4th, 2013",
"ts": "1372997580",
"summary": "I updated the GrabLinks bookmarklet one more time tonight, and anyone with it currently installed should start seeing the changes immediately. If you still need it, drag the link below to your toolbar. Updated jQuery to stable head, fixed injection in some situations Removed padding changes on hover, too messy Avoid capturing Tweet This, ADN and Facebook Share links Full source is up on GitHub and will always include the recent changelog at the top. The bookmarklet loads straight from there and updates automatically when I make changes, so you may see behaviors differ between one use and the next (hopefully always for the better). Suggestions? Have your people call my people. Before I head for bed, I thought I d show off what GrabLinks and the Open URL Service are good for. Then I thought I d make a better intro and that got out of hand. Motion and GarageBand have ruined this in a spectacular way. I might as well make a project page for this. Sooner or later Sooner, I guess.",
"keywords": ["bookmarklet","facebook","garageband","github","grablinks","interface","jquery","locator","programming","resource","avoid","before","changes","facebook","garageband","github","grablinks","motion","removed","service","share","sooner","suggestions","updated","anyone","automatically","behaviors","below","between","bookmarklet","capturing","changelog","changes","differ","fixed","guess","hopefully","hover","injection","installed","intro","jquery","later","links","loads","messy","padding","people","project","recent","ruined","seeing","situations","source","spectacular","stable","straight","thought","tonight","toolbar","updated","updates"]
},{
"title": "Grablinks bookmarklet 2.0",
"url": "/2013/07/04/grablinks-bookmarklet-2-dot-0/",
"tags": ["bookmarklet","grablinks","markdown"],
"date": "Jul 4th, 2013",
"ts": "1372914000",
"summary": "Another day, another version of GrabLinks (the bookmarklet for grabbing all links from a chosen section of a webpage as a Markdown list). The first major change is that the bookmarklet is now auto-updating. It loads the actual script from the Gist and will therefore always load the latest stable version. It pops up a small Loading indicator until the script loads and, if needed, injects jQuery. If it s a fast load, you may just see a brief flash of white in the upper left corner, so that s what that is. To install, drag the link below into your bookmark bar (or grab the raw version and edit) and delete any previous version. I doubt I ll take this one much further, but if you have any requests, feel free to let me know in the comments or by contacting me directly .",
"keywords": ["another","grablinks","handle","loading","markdown","truncate","allow","another","attributes","below","bookmark","bookmarklet","brief","button","change","chars","chosen","click","close","comments","contacting","copying","corner","decrementing","directly","doubt","first","flash","force","grabbing","handling","hashes","hover","incrementing","indicator","individual","injects","install","jquery","latest","links","loads","local","major","needed","origin","output","padding","parts","relative","repeated","requests","script","section","selection","small","stable","therefore","title","titles","updating","upper","version","webpage","white"]
},{
"title": "Thumbnail icons for Delish bookmarks",
"url": "/2013/07/03/thumbnail-icons-for-delish-bookmarks/",
"tags": ["bookmarking","finder","icons","macos","qlmanage","terminal"],
"date": "Jul 3rd, 2013",
"ts": "1372912500",
"summary": "So, what are normal people doing tonight? I ve been messing around with some more ideas surrounding the future of bookmarking and information gathering. As part of that process, I bought Delish and started messing around with some Spotlight/Finder integration 1 . I won t go into all of the kMDItemAwesome of that, but I did work out a trick on the way that might actually be useful. The thumbnails for Delish cache folders (and what shows up in a Finder Smart Folder) are all broccoli? I figured it shouldn t be too hard to make them prettier for searching. The technique should be able to be applied to any application s files which provide a Quick Look preview. Pointless in this particular case, but if I can get you to use it, I can feel good about my wasted evening.",
"keywords": ["apple","delish","finder","houdahspot","quick","delish","finder","folder","houdahspot","pointless","quick","smart","spotlight","applied","bookmarking","bought","broccoli","cache","combo","doing","evening","figured","files","folders","gathering","ideas","information","integration","kmditemawesome","messing","normal","particular","people","potent","prettier","preview","process","script","searching","shouldn","shows","started","surrounding","technique","thumbnails","tonight","trick","useful","wasted"]
},{
"title": "Web Excursions for July 3rd, 2013",
"url": "/2013/07/03/web-excursions-for-july-03-2013/",
"tags": ["bookmarks"],
"date": "Jul 3rd, 2013",
"ts": "1372879800",
"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Uploadcare A nice file upload handling service with a very easy API. Very similar to filepicker.io with support for direct uploads, Facebook, Dropbox, Google Drive, Instagram or from any URL. It includes a pretty good post/on-the-fly API for processing images, too. Uploadcare provides drop-in libraries for Objective-C, PHP, Java and Node for incorporating into apps. Wi-Fi connections stalling on AirPort Extreme with 7.6.3 firmware I ve been having some wacky wifi issues recently. Switching my Airport Extreme to 802.11n-only seemed to fix it for the most part, but downgrading my firmware based on Marco s recommendation finished the job. If you re having similar issues with an Airport Extreme, this might be the solution for you, too. Via Kai Wells . Release Your Software This is an awesome new feature from GitHub. It s like git-flow with an interface that makes sense to users of open source projects. Plus, you can attach binaries to releases, which brings back the Downloads days of yore. Hidden OS X features or tips and tricks Sent to me by Alex Krivov , this is a huge compilation of some of OS X s lesser-known features. When you look at it all together, you realize the time and attention to detail that has gone into the operating system. My favorite among the ones I wasn t already familiar with: typing Control-Delete right after an accented character will remove just the accent. Useless to me in most cases, but again, attention to detail. SendEmail This utility is available through and it s much easier than setting up sendmail. You can cat an HTML file directly to it and set a few arguments to send beautiful emails right from shell scripts. It s how the Giveaway Robot is communicating now Configuring Gmail as Sendmail email relay If you are going to use sendmail, though, here s a fairly straightforward way to set it up with GMail as the SMTP relay. I assume you could apply these steps to other relay auth setups if you decided not to let Google read all of your stuff 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": ["airport","drive","extreme","facebook","gmail","google","interface","programming","relay","sendmail","airport","airport","backblaze","check","configuring","control","downloads","drive","dropbox","extreme","facebook","gmail","github","giveaway","gmail","google","hidden","instagram","krivov","marco","release","robot","sendemail","sendmail","software","switching","uploadcare","useless","wells","accent","accented","affordably","again","among","apply","arguments","assume","attach","available","awesome","backs","based","beautiful","binaries","brings","brought","character","cloud","communicating","compilation","computer","connections","decided","detail","direct","directly","downgrading","easier","email","emails","entire","everything","excursions","fairly","familiar","favorite","feature","features","filepicker","finished","firmware","going","handling","having","images","includes","interface","issues","lesser","libraries","makes","operating","partnership","processing","projects","provides","realize","recently","recommendation","relay","releases","reliably","remove","right","scripts","securely","seemed","sendmail","sense","service","setting","setups","shell","similar","solution","source","stalling","steps","straightforward","stuff","support","system","through","today","together","tricks","typing","upload","uploads","users","utility","wacky"]
},{
"title": "Saving batches of links from web pages",
"url": "/2013/07/03/saving-batches-of-links-from-web-pages/",
"tags": ["bookmarklet","grablinks","jquery","markdown"],
"date": "Jul 3rd, 2013",
"ts": "1372858200",
"summary": "I shared this bookmarklet on Twitter a while ago, but it s been so handy lately that I thought it was silly not to post it on the blog. It lets you hover over any section of a web page and grab all of the links contained in that portion of the page, handing them back to you as a nicely-formatted Markdown list. It s a great way to get bunches of links into nvALT or any plain text situation. Here s a version of the video without The Specials soundtrack , in case EMI blocked you. If the link has a attribute, it becomes the title of the Markdown link. If not, it uses the text of the link (with whitespace stripped). In some cases (e.g. linked images with no title/alt text) that leaves you with blank links, but better than nothing. It also resolves relative urls to the current host, so you don t get a bunch of broken links to the blog you were reading. A single click on the resulting Markdown will select it all. You can copy the bunch and open them all at once with the SystemUIServer Service Open URL, which should show up when you right click on the selection 1 . You can also use some of my tricks for opening batch urls with Dropzone , PopClip , or maybe bitly . Or, you can just stick them away in text files, Evernote, Together or any notes app with their full titles for easy searching later 2 . Here s the bookmarklet. Just drag it into your bookmarks bar and click it on a page with some interesting links. As you move the cursor over the page, the areas under it will highlight. The innermost highlighted area is what links will be grabbed from when you click. You can often target smaller areas by moving the cursor into the pixels-wide margin/padding areas around the group of links you want. It also now adds 10px padding to the elements you hover over so you can select groups that were previously inaccessible. Also, links created are selected for copying immediately, and clicking anywhere other than the links will close the link window, unbind the hover states and return you to the page. Updated: See version 2.0 for a smoothed out version with automatic updating. I haven t tested this at all with mobile browsers, and I doubt it would be very useful on touch screens. If you re at all curious about what I did, the uncompressed source is here . I m thinking about modifying it to allow a popup where you can type a jQuery/CSS selector to get, say, only the links in h2 headlines on a page. Tomorrow, maybe. I think that comes default, but I have so",
"keywords": ["iphone","markdown","openurl","pinboard","popclip","dropzone","evernote","markdown","pinboard","popclip","service","specials","systemuiserver","together","tomorrow","twitter","updated","allow","anywhere","areas","attribute","automatic","batch","becomes","bitly","blank","blocked","bookmarklet","bookmarks","broken","browsers","bunch","bunches","click","clicking","close","comes","contained","copying","created","curious","cursor","default","doubt","elements","files","forget","formatted","going","grabbed","great","group","groups","handing","handy","happen","haven","headlines","highlight","highlighted","hover","images","inaccessible","innermost","interesting","jquery","later","leaves","linked","links","longer","margin","maybe","messy","mobile","modifying","moving","nicely","notes","nothing","nvalt","often","opening","padding","pixels","popup","portion","posting","previously","reading","relative","resolves","resulting","return","right","screens","searching","section","selected","selection","selector","shared","silly","single","situation","smaller","smoothed","soundtrack","source","states","stick","straight","stripped","target","tested","think","thinking","thought","title","titles","touch","tricks","unbind","uncompressed","under","updating","useful","version","video","viewport","where","while","whitespace","window","worked"]
},{
"title": "Systematic 51 with Nick Sousanis",
"url": "/2013/07/02/systematic-51-with-nick-sousanis/",
"tags": ["podcast","systematic"],
"date": "Jul 2nd, 2013",
"ts": "1372796880",
"summary": "I was overtired and feeling a bit sick, but talking with Nick Sousanis today perked me right up. He s completing a dissertation at Columbia entirely as a comic book, and is as interesting as you would expect someone attempting that to be. We talked comics, creativity, learning and some great Top Picks. Thanks to Nick for making the time, and best of luck on the dissertation! Check out the episode at 5by5.",
"keywords": ["columbia","comic","comics","sousanis","studios","check","columbia","picks","sousanis","thanks","attempting","comic","comics","completing","creativity","dissertation","entirely","episode","expect","feeling","great","interesting","learning","making","overtired","perked","right","talked","talking","today"]
},{
"title": "5 free copies of SliceReader",
"url": "/2013/07/02/5-free-copies-of-slicereader/",
"tags": ["giveaway","macappstore","macos"],
"date": "Jul 2nd, 2013",
"ts": "1372771800",
"summary": "I recently wrote a review of the Mac app SliceReader . The developer, Mutahhir Ali Hayat, was kind enough to offer you all five free copies ($2.99 US value). Use the form at the end of the post to enter. Without my WordPress comment system (which the previous Giveaway Robot ran off of) I had to rig up a quick CouchDB database and entry form. I m hoping all goes well, but if you have any trouble, contact me directly . Winners will be randomly drawn at noon on Friday, July 5th and notified by email. Please use a valid email address and a unique name (to make announcing the winners easier). One entry per person, and no entries if you live in Canada. Sorry. Check out SliceReader on the Mac App Store , and be sure to pick up a copy even if you don t win. Sorry, this giveaway has ended.",
"keywords": ["apple","hayat","macintosh","mutahhir","store","canada","check","couchdb","enter","friday","giveaway","hayat","mutahhir","robot","slicereader","sorry","store","winners","wordpress","address","announcing","comment","contact","copies","database","developer","directly","easier","email","ended","enough","enter","entries","entry","giveaway","hoping","notified","offer","person","quick","randomly","recently","system","trouble","unique","valid","value","winners","wrote"]
},{
"title": "Mac App Review: Oyster",
"url": "/2013/07/01/mac-app-review-oyster/",
"tags": ["appreview","macos","regex"],
"date": "Jul 1st, 2013",
"ts": "1372683600",
"summary": "Regular Expressions , often called regex, are one of the most powerful tools in any programming language s toolbox, at least when it comes to string handling. They can be a challenge to build and test if you re working blind, though. There have been a few good apps to help out with this, and some websites that offer live, online testing of regular expressions. A new app called Oyster from Red When Excited does an excellent job of bringing together some of the best features from other apps such as Patterns and RegexRX . It s more robust than Patterns, prettier than RegexRX, and adds a few unique, useful features of its own. It starts with syntax highlighting, which is not only pretty but very handy for catching errors in your code. It also highlights matches and capture groups dynamically as you type, so you can instantly see the results. In addition to regular expression matching, it handles replacement testing, so you can instantly see the result of complex replacements, including those using capture groups from the original match. Oyster keeps a library of your regular expressions for you. They re referred to as Pearls, and can be exported, copied, or shared using the Oyster Farm, an online repository of Pearls from Oyster users. The Oyster Farm is a great place to search for a starting point before tweaking an expression to your needs. Among the export and integration options, my favorite has to be the integration with Dash snippets. It s the primary reason I ve started using the snippet functionality in Dash (which I have long loved for its documentation capabilities). Once you ve tested and finalized a regular expression, it can be copied out in one of 11 different languages (including C#, Java, JavaScript, JSP, Obj-C, PHP, Ruby, Perl, Python and TCL/TK), with the syntax automatically converted to work in your current code. There s also a very handy reference guide you can view in a floating panel while you re working. It has all the basics, and includes advanced syntax for things like lookaheads and backreferences. Oyster is $4.99 US on the Mac App Store . If you work with regular expressions, I give this app a strong recommendation. Also check out Cloud Mate (an app for consolidating and accessing all of your iCloud files, also available for iOS ) from the same developer!",
"keywords": ["expression","javascript","languages","programming","regular","store","among","cloud","excited","expressions","javascript","oyster","patterns","pearls","python","regexrx","regular","store","accessing","advanced","automatically","available","backreferences","basics","before","blind","bringing","build","called","capabilities","capture","catching","challenge","check","comes","complex","consolidating","converted","copied","developer","different","dynamically","errors","excellent","export","exported","expression","expressions","favorite","features","files","finalized","floating","functionality","great","groups","guide","handles","handling","handy","highlighting","highlights","icloud","includes","including","instantly","integration","keeps","language","languages","library","lookaheads","loved","match","matches","matching","needs","offer","often","online","options","original","panel","point","powerful","prettier","primary","programming","recommendation","regex","regular","replacement","replacements","repository","results","robust","search","shared","snippet","snippets","started","starting","starts","string","strong","syntax","tested","testing","together","toolbox","tools","tweaking","unique","useful","users","using","websites","while","working"]
},{
"title": "New Lab t-shirt styles. You're welcome, ladies.",
"url": "/2013/06/30/new-lab-t-shirt-styles-youre-welcome-ladies/",
"tags": ["apparel"],
"date": "Jun 30th, 2013",
"ts": "1372612740",
"summary": "I m happy to announce that the BrettTerpstra.com t-shirt campaign hit its goal on the first day. Thanks to everybody who helped make that possible! The original is still available, of course. If I d known it was possible to add more options (you have to send a special request to TeeSpring), I would have started the campaign with all the options. Hopefully people who bought the black men s crew are ok with their order! Thanks again, your support means a lot to me. Learn more about the new styles on TeeSpring .",
"keywords": ["american","apparel","clothing","shirt","sports","american","apparel","bella","black","brettterpstra","hopefully","ladies","learn","relaxed","royal","teespring","thanks","workman","added","again","announce","available","black","bought","campaign","celebrate","everybody","first","happy","helped","options","original","people","possible","shirt","special","started","styles","support","thanks"]
},{
"title": "Mac App Review: SliceReader",
"url": "/2013/06/30/mac-app-review-slicereader/",
"tags": ["appreview","macos","reading"],
"date": "Jun 30th, 2013",
"ts": "1372604400",
"summary": "When SliceReader first appeared, I was instantly intrigued. It s a simple app which slices an article, pasted text or text file into pages and display them, one paragraph per page. It s designed to make reading long form articles easier for those of us who don t do as well with reading long pages. It works. Reading a sliced article is as easy as scanning the paragraph and pressing the spacebar to move to the next. If a paragraph is longer than the screen, the spacebar will scroll the text until the end, then advance on the next tap. The design is opinionated, meaning you get what the author has chosen as the ideal design for readability. It s gorgeous, in my opinion, and I find it very easy to quickly scan a paragraph. The default layout is a light grey background with dark grey text at a reasonable contrast level. The window size is fixed, but there s a fullscreen option which provides the same size area for text but covers the rest of your screen. Call it a concentration mode, if you like. It has a night mode with inverted foreground/background colors as well. SliceReader can clip directly from web pages, processing them with Readability to remove ads and comments. You can feed it a url or use a bookmarklet from any web page to open it directly in SliceReader. You can also feed it a text or Markdown file and it will process and slice it for easy reading. It s perfect if you save Markdownified versions of articles to nvALT or other text formats. There s a System Service available to pass selected text for slicing. You can even pop up an entry window and just paste text directly into it. The window has a pie chart progress indicator in the lower right corner, making it easy to see how far you have to go before the end of the article. I ve already found SliceReader indispensable. I used to be an avid reader and able to handle the longest of texts. Somewhere along the line I lost that ability. SliceReader makes it possible for me to read long articles quickly and with 100% comprehension. SliceReader is available for just $2.99 US on the Mac App Store. The author, Mutahhir Ali Hayat , is a responsive and hard-working developer, so I expect to see great new features as feedback rolls in. Go check it out in the App Store , and follow @slicereader on Twitter for updates.",
"keywords": ["paragraph","reading","slicereader","store","twitter","hayat","markdown","markdownified","mutahhir","readability","reading","service","slicereader","somewhere","store","system","twitter","ability","appeared","article","articles","author","available","background","before","bookmarklet","chart","check","chosen","colors","comments","comprehension","concentration","contrast","corner","covers","default","design","designed","developer","directly","display","easier","entry","expect","features","feedback","first","fixed","foreground","formats","found","fullscreen","gorgeous","great","handle","ideal","indicator","indispensable","instantly","intrigued","inverted","layout","level","light","longer","longest","lower","makes","making","meaning","night","nvalt","opinionated","pages","paragraph","paste","pasted","possible","pressing","process","processing","provides","quickly","readability","reader","reading","reasonable","remove","responsive","right","rolls","scanning","screen","scroll","selected","simple","slice","sliced","slicereader","slices","slicing","spacebar","texts","updates","versions","window","working","works"]
},{
"title": "A fix for the Auto-Link Web Search Service",
"url": "/2013/06/30/a-fix-for-the-auto-link-web-search-service/",
"tags": ["markdown","markdownservices","service"],
"date": "Jun 30th, 2013",
"ts": "1372598340",
"summary": "The Markdown Service Tools include a Service called Auto-link web search which takes selected text, runs a web search on it and creates a Markdown link to the first match for you. The Service recently broke due to changes in DuckDuckGo s responses. I think I have it fixed, and have included the updated version in Markdown Service Tools 2.7, available for download below or from the project page . You can update your Services in by simply unzipping the download and dragging the contents of the created folder into that directory, overwriting what s there. 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 More info",
"keywords": ["duckduckgo","engine","gabriel","iphone","search","weinberg","changelog","donate","download","duckduckgo","markdown","published","service","services","tools","updated","almos","available","below","broke","called","changes","collection","contents","created","creates","creating","designed","directory","download","dragging","easier","errors","first","fixed","folder","formatted","included","macos","match","overwriting","project","recently","responses","results","search","selected","simply","takes","think","throws","trouble","unzipping","updated","version"]
},{
"title": "Limited-edition BrettTerpstra.com t-shirts available",
"url": "/2013/06/29/limited-edition-brettterpstra-dot-com-t-shirts-available/",
"tags": ["apparel"],
"date": "Jun 29th, 2013",
"ts": "1372521720",
"summary": "My first publicly-available t-shirt for BrettTerpstra.com is up on TeeSpring now . It s a limited run and only available for the next two weeks. You should buy one. It s a black American Apparel crewneck with logo of my own design printed on the front. The shirts are being sold at $15. That s not a huge profit margin for me, but it seemed like a fair price for a high-quality t-shirt with a lovingly-crafted logo. It s a crowd-funded campaign, so they only get printed (and you only get charged) if I receive at least 50 orders. Tell your friends, and order yours before July 13th!",
"keywords": ["advertising","american","apparel","business","clothing","crowd","funding","marketing","shirt","shopping","american","apparel","brettterpstra","teespring","available","before","black","campaign","charged","crafted","crewneck","crowd","design","first","friends","front","funded","limited","lovingly","margin","orders","price","printed","profit","publicly","quality","receive","seemed","shirt","shirts","weeks"]
},{
"title": "Walking to work: NextDesks and LifeSpan treadmill",
"url": "/2013/06/28/walking-to-work-nextdesks-and-lifespan-treadmill/",
"tags": ["fitness","furniture"],
"date": "Jun 28th, 2013",
"ts": "1372453980",
"summary": "I ve spent years of my life sitting in front of computers, and there s been a lot of talk recently about how that can cause health issues such as dying. Seems drastic, but I buy it. I ve watched my health decline pretty steadily in the last 5 years. I also recently promised my wife that I d try to live past 75 (I turn 35 in July, so there s a ways to go). To that end, I wrote a script that undoes years of sedentary lifestyle, restores youth and vigor, and does one weird trick for a flat belly. I knew I needed to get out of my chair. I d also been reading about the dangers of standing all the time and was convinced I needed a hybrid solution. I decided to go whole hog and buy a better office chair , a convertible standing desk with microprocessor-controlled lifts, and a low-lying treadmill . It wasn t cheap, but it was an easy sell to my wife when I mentioned it might mean I don t die young. I wasn t sure I d like the whole treadmill desk thing enough to make it worth the expense. It s turned out (thus far) that I actually really enjoy it. It s not difficult to work on a computer while walking between .9 and 1.5 mph, and when you need a brain break you can just turn up the speed and veg out for a while. I have split my sitting and standing time over the last two days in a 1:3 ratio and have logged 11,750 steps at the time of this writing. It feels good. I m hoping it will improve my sleep patterns as well, and get me in good enough shape to handle more rigorous activities as the summer goes on. I do miss mountain biking and rock climbing. I m currently about 50 pounds overweight and have horrible endurance. However, walking while working is proving easy enough that I can literally do it all day, or at least during the time I usually spend sitting at my computer which is typically all day. After I made up my mind to improve my health situation, the first thing I did was upgrade my old office chair , which in combination with poor keyboard height had turned out to be the reason my right hand went numb 1 . It was also causing enough pain in my lower back to make shoveling snow impossible. That s bad in Minnesota. The chair did some immediate good for me, but my desk wasn t conducive to ideal keyboard and display heights. A little research got me the specs I needed, and I started looking into alternate work setups, ultimately deciding that I needed a standing desk. I decided to look into convertible desks so that I still had the option to sit when",
"keywords": ["bluetooth","chair","lifespan","office","standing","treadmill","bluetooth","however","lifespan","macbook","minnesota","nextdesks","seems","store","systematic","terra","abilities","accuracy","across","activities","added","adjusting","against","allow","alternate","applications","armchair","attribute","based","basic","beautifully","because","becomes","behind","belly","between","biking","blocked","bottle","brain","break","cable","cause","causing","chair","change","charging","cheap","check","cleared","climbing","coffee","combination","completely","computer","computers","concentration","conditions","conducive","connectivity","conscious","controlled","controller","controls","convertible","convinced","couple","covered","dangers","decided","deciding","decline","definitely","designed","desks","desktop","difficult","direction","display","doing","dongle","drastic","dropped","dying","easily","effort","elbows","ended","endurance","enjoy","enough","entire","equipment","ergonomic","expense","experimentation","faster","fatigue","favorite","feels","fiddling","first","focus","forearms","found","front","frustrating","general","getting","going","gotten","great","guess","handle","happened","harder","haven","having","health","height","heights","hiding","hoping","horrible","house","hybrid","ideal","immediate","impediment","impossible","impression","improve","improvement","inches","includes","initial","instant","issues","keyboard","kidding","lifestyle","lifts","literally","little","location","logged","looking","lower","lowering","lying","making","management","mentioned","microprocessor","minutes","model","motion","motivation","mountain","mounted","multiple","natural","necessary","needed","nerve","nicely","nifty","numbness","office","ordered","overweight","padding","partly","pathways","patterns","pause","periods","personally","physical","pictures","pinching","plopped","point","position","positionable","possibly","posture","pounds","primarily","problem","problems","promised","provides","proving","quickly","ratio","reading","recently","recommended","relief","research","restores","right","rigorous","safety","scapula"]
},{
"title": "Sponsor: Tokens",
"url": "/2013/06/27/sponsor-tokens/",
"tags": [],
"date": "Jun 27th, 2013",
"ts": "1372330800",
"summary": "Tokens gets promo codes from iTunes Connect, creates shareable URLs for each code and notifies you once they re redeemed. The first step to getting your app noticed is inviting bloggers to try it. Promo codes let you give away free copies of your app, but unfortunately they re laborious to create, awkward to redeem and impossible to track. With Tokens you create a code with one click and bloggers can redeem it just as easily. By naming the token you can tell who has tried your app and follow up with them. You can also reuse any unredeemed codes before they expire. Tokens is available now at usetokens.com/syndicate . BrettTerpstra.com readers get a special 20% discount until July using this link .",
"keywords": ["coupon","store","brettterpstra","connect","promo","sponsorship","store","syndicate","tokens","available","awkward","before","bloggers","click","codes","copies","create","creates","discount","easily","first","getting","itunes","impossible","inviting","laborious","managing","naming","noticed","notifies","promo","readers","redeem","redeemed","reuse","shareable","special","syndicate","token","track","tried","unfortunately","unredeemed","usetokens","using"]
},{
"title": "Systematic 50 with John Gruber",
"url": "/2013/06/25/systematic-50-with-john-gruber/",
"tags": ["podcast","systematic"],
"date": "Jun 25th, 2013",
"ts": "1372180200",
"summary": "It was great to have John Gruber join Systematic for today s episode. We talked Vesper, of course, but also got into the origins of Markdown, editing excess verbosity and some great picks for the home. Thanks to John for making the time, and check out the episode on 5by5!",
"keywords": ["gruber","apple","conference","developers","markdown","programs","studios","twitter","worldwide","gruber","markdown","systematic","thanks","vesper","check","editing","episode","great","making","origins","picks","talked","today","verbosity"]
},{
"title": "And then there were fireworks",
"url": "/2013/06/24/and-then-there-were-fireworks/",
"tags": ["fireworks","flickr","photography","winona"],
"date": "Jun 24th, 2013",
"ts": "1372089900",
"summary": "We celebrate our 4th of July a little early in Winona, MN. I think it s because we don t like to compete with the larger city of La Crosse, WI down the river a ways. Aditi and I paid for comfy seats on the deck of the new Boat House restaurant to enjoy the show. The late winter has kept the mosquito population down and it was a very entertaining evening. I made you some pictures (shot using a hand-held Sony Alpha Nex3 1 ). This will probably be the last Amazon affiliate link I get to post for a while, due to Amazon adding Minnesota to the list of states who s tax laws make it unprofitable to offer affiliate programs anymore. Click it and go buy something while I can still make money off it",
"keywords": ["aditi","crosse","minnesota","states","united","winona","wisconsin","aditi","alpha","amazon","click","crosse","house","minnesota","winona","adding","affiliate","anymore","because","celebrate","comfy","compete","enjoy","entertaining","evening","larger","little","money","mosquito","offer","pictures","population","programs","restaurant","river","seats","states","think","unprofitable","using","while","winter"]
},{
"title": "Web Excursions for June 23, 2013",
"url": "/2013/06/23/web-excursions-for-june-23-2013/",
"tags": ["bookmarks"],
"date": "Jun 23rd, 2013",
"ts": "1371999600",
"summary": "Web excursions brought to you in partnership with CleanMyMac X , all the tools to speed up your Mac, in one app. Babelmark - Markdown Testbed Old older Markdown dingus with a few missing variants, but enough to get a good idea how various Markdown supersets translate across different processors. Update: BabelMark 2 is the updated version, via Lasar Liepins . Create Your Icon Fonts - Free icon Vectors - Fontastic An amazing resource for building your own icon webfonts, with the ability to remap the fonts to easy-to-remember and identify class names. OpenWeatherMap free weather API I m rewriting some of my GeekTool scripts using this awesome Open Source weather API. Creating a plain text wiki with nvALT A great example of putting Notational Velocity/nvALT s internal linking capability to use. jQuery TourBus Another cool jQuery plugin for creating walkthroughs of web apps.",
"keywords": ["geektool","interface","jquery","markdown","programming","source","typography","another","babelmark","babelmark","cleanmymac","create","creating","fontastic","fonts","geektool","lasar","liepins","markdown","notational","openweathermap","source","testbed","tourbus","vectors","velocity","ability","across","amazing","awesome","brought","building","capability","class","creating","different","dingus","enough","example","excursions","fonts","great","identify","internal","jquery","linking","missing","names","nvalt","older","partnership","plugin","processors","putting","remap","remember","resource","rewriting","scripts","speed","supersets","tools","translate","updated","using","variants","various","version","walkthroughs","weather","webfonts"]
},{
"title": "Think, Make, Sell episode 7",
"url": "/2013/06/21/think-make-sell-episode-7/",
"tags": ["interview","podcast"],
"date": "Jun 21st, 2013",
"ts": "1371844080",
"summary": "I was interviewed by Thomas Borowski for Think, Make, Sell episode 7 . It s about what I do during the day, what I make during the night and how I tick. To some extent. It s hard to explain all the latter, especially since I hardly have a grasp on it myself. Thanks to Thomas for the interview, it was a pleasure to be guest.",
"keywords": ["iphone","programs","borowski","thanks","think","thomas","episode","especially","explain","grasp","guest","hardly","interview","interviewed","latter","myself","night","since"]
},{
"title": "Web Excursions for June 21, 2013",
"url": "/2013/06/21/web-excursions-for-june-21-2013/",
"tags": ["bookmarks"],
"date": "Jun 21st, 2013",
"ts": "1371822120",
"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. gitlogger Improved Christian Tietze offers an update to my gitlogger script for logging Git commits to Day One. It fixes formatting for multi-line commit messages, which is handy for me as I m trying to do a better job with creating those recently Fix your Hyper key on Mavericks Via James Smith , a fix for PCKeyboardHack on Mavericks. Alfred PopClip Extensions A PopClip extension to quickly send selections to Alfred. Via Chris Herbert . Amazon to stop paying Minnesota bloggers for sales traffic This is highly annoying. Screen Sizes Screen dimensions and pixel widths/heights for all mobile devices. A handy reference.",
"keywords": ["alfred","apple","chris","herbert","mavericks","minnesota","popclip","alfred","amazon","check","chris","christian","extensions","herbert","hyper","improved","james","mavericks","minnesota","pckeyboardhack","popclip","screen","setapp","sizes","smith","tietze","access","annoying","bloggers","brought","commit","commits","creating","devices","dimensions","excursions","extension","fixes","formatting","gitlogger","handy","heights","highly","hundreds","logging","messages","mobile","monthly","multi","offers","partnership","paying","pixel","quickly","recently","sales","script","selections","subscription","today","traffic","trying","widths"]
},{
"title": "Sponsor: MightyDeals.com",
"url": "/2013/06/20/sponsor-mightydeals-dot-com/",
"tags": [],
"date": "Jun 20th, 2013",
"ts": "1371726000",
"summary": "A big thanks to MightyDeals.com for sponsoring BrettTerpstra.com this week. Ask anyone who s ever tried to knock in a nail with a screwdriver: having the wrong tools is a major hindrance. Access to the right tools saves time, increases the quality of your work and adds to the pleasure of doing a job well. The trouble for designers developers is that there are so many tools out there, it s hard to know what s worthwhile, let alone being able to afford half of the resources we want. That s where MightyDeals.com comes in. We negotiate promotional deals with suppliers and often manage to agree up to 97% off regular pricing. And what s more, these aren t just any tools, some of the best companies on the web promote their products through MightyDeals.com . So if you re looking for great deals, or just want to stay in touch with the latest fonts, applications, themes and resources, visit MightyDeals.com or sign up for our newsletter today.",
"keywords": ["syndicate","tools","wordpress","access","brettterpstra","mightydeals","sponsorship","syndicate","agree","alone","anyone","applications","comes","companies","deals","designers","developers","doing","fonts","great","having","hindrance","increases","knock","latest","looking","major","negotiate","newsletter","often","pricing","products","promote","promotional","quality","regular","resources","right","saves","screwdriver","sponsoring","suppliers","thanks","themes","through","today","tools","touch","tried","trouble","visit","where","worthwhile","wrong"]
},{
"title": "Systematic #49 with TJ Luoma",
"url": "/2013/06/18/systematic-number-49-with-tj-luoma/",
"tags": ["podcast","systematic"],
"date": "Jun 18th, 2013",
"ts": "1371579600",
"summary": "I had the pleasure of chatting with TJ Luoma this week on Systematic. We ve known each other for quite some time now, but this is the first time we ve ever spoken. It was a lot of fun. TJ and I discuss his Mac mini media center, automation with Hazel and Keyboard Maestro, and why so many clergy members are nerds. I play the part of the streaming guy while TJ dons the cape of the Super Nerd. Thanks to TJ for his time and for sharing all of his nerdy excitement! Check out the episode at 5by5!",
"keywords": ["luoma","benjamin","podcast","studios","systematic","twitter","check","hazel","keyboard","luoma","maestro","super","systematic","thanks","automation","center","chatting","clergy","episode","excitement","first","media","members","nerds","nerdy","sharing","spoken","streaming","while"]
},{
"title": "Sidecar 2.1 adds positioning",
"url": "/2013/06/17/sidecar-21-adds-positioning/",
"tags": ["sideshow","simplify"],
"date": "Jun 17th, 2013",
"ts": "1371476580",
"summary": "This is a quick update to Sidecar (2.1) that re-enables dragging so you can get it moved over to a second monitor. Unfortunately I can t set a default point on a secondary monitor, so you ll most likely have to reposition it on every launch. It s a start, though. I ll work to come up with a solution for that. You might be able to go into the HTML file inside the package and change the starting pixel position to reflect the actual location on the screen where you want it to appear, making the second parameter the positive or negative width (depending on the location of your second monitor) of your primary screen. Sidecar v2.1 Download Sidecar v2.1 A jacket for Simplify 2.7+ and 27-inch (2560x1440) monitors. More sizes coming soon. Published 06/17/13. Updated 06/17/13. Changelog Donate More info",
"keywords": ["github","javascript","programming","sidecar","source","changelog","donate","download","github","published","sidecar","simplify","source","unfortunately","updated","appear","change","coming","default","depending","dragging","enables","inside","jacket","launch","likely","location","making","monitor","monitors","moved","negative","package","parameter","pixel","point","position","positive","primary","quick","reflect","reposition","screen","second","secondary","sizes","solution","starting","where","width"]
},{
"title": "Systematic 48 with Aditi Terpstra",
"url": "/2013/06/13/systematic-48-with-aditi-terpstra/",
"tags": ["podcast","systematic"],
"date": "Jun 13th, 2013",
"ts": "1371155400",
"summary": "I had the great pleasure of talking with my wife, Aditi Terpstra, on this week s Systematic . We talked about animal behavior, dogs and other stuff that she knows like nobody else. It s a great honor to be married to this woman. Check the show notes to learn more about her and the great work she does. This episode was recorded over hotel wifi using a mic that turned out to be a disappointment. I apologize for a few audio glitches, but Igor Stolarsky did a bang up job saving the quality as much as possible. Thanks to Igor for the extra effort and to Aditi for making the time!",
"keywords": ["aditi","terpstra","aditi","check","stolarsky","systematic","terpstra","thanks","animal","apologize","audio","behavior","disappointment","effort","episode","extra","glitches","great","honor","hotel","knows","learn","making","married","nobody","notes","possible","quality","recorded","saving","stuff","talked","talking","turned","using","woman"]
},{
"title": "Sponsor: X WordPress Theme",
"url": "/2013/06/13/sponsor-x-wordpress-theme/",
"tags": [],
"date": "Jun 13th, 2013",
"ts": "1371121200",
"summary": "Thanks to Themeco and their X WordPress Theme for sponsoring brettterpstra.com this week. Themeco is proud to launch X, a first of its kind WordPress theme built in conjunction with leading business and marketing experts. To celebrate our release, we wanted to share a really powerful SEO technique that you can implement today. Did you know there s a little piece of code you can add to your popular posts or pages that will almost double or triple the amount of clicks you get? Google tracks on-site engagement closely, so anytime you can get your visitors to click through to multiple pages of your site it s great for your SEO efforts. We ll show you this one amazing trick and how we built it into our incredible new WordPress theme plus show you how to implement it even if you don t use WordPress.",
"keywords": ["engine","google","optimization","search","syndicate","templates","tools","tumblr","website","wordpress","google","sponsorship","syndicate","thanks","theme","themeco","wordpress","almost","amazing","amount","anytime","brettterpstra","built","business","celebrate","click","clicks","closely","double","efforts","engagement","experts","first","great","incredible","launch","leading","learn","little","marketing","minutes","multiple","pages","piece","popular","posts","powerful","proud","release","report","share","sponsoring","strategy","technique","theme","through","today","tracks","trick","triple","visitors","wanted"]
},{
"title": "Web Excursions for June 10th, 2013",
"url": "/2013/06/10/web-excursions-for-june-10th-2013/",
"tags": ["bookmarks"],
"date": "Jun 10th, 2013",
"ts": "1370869200",
"summary": "Web excursions brought to you in partnership with MindMeister , the best collaborative mind mapping software out there. Colout Via Alex Krivov , a utility to color output streams on the command line based on regular expressions. Lots of options and color mapping available, and it can assign different colors to numeric values. Achieving Inner Shadow My friend Caylan is just picking up Cocoa and Objective-C right now, but he s already tearing it up. He had a good head start as a programmer by trade, but it s amazing what he s done in a few nights of hacking. He s beginning to share his exploits at semireg.com and this first post is a great one on achieving a dynamic inner shadow on text, complete with sample code and a working demo app. Contextinator I m loving this Chrome extension. Take windows full of tabs and turn them into projects, complete with tasks and permanent bookmarks. Then open and close entire projects at will. Works really well with the way I browse. Slicereader I just read two long articles from my backlog with full comprehension using this simple app from Mutahhir Ali Hayat. It s been a while since I ve been able to do that. Mutahhir is working on some very cool features for Slicereader right now, and I have high hopes that this becomes a commercial application. Introducing PlexConnect an AppleTV client which Thinks Different The goodness of Plex without jailbreaking your Apple TV. Via Dan Peterson . Check out MindMeister and start brainstorming, collaborating, and boosting productivity.",
"keywords": ["apple","appletv","cocoa","expression","jailbreaking","media","peterson","regular","server","achieving","apple","appletv","caylan","check","chrome","cocoa","colout","contextinator","different","hayat","inner","introducing","krivov","mindmeister","mutahhir","peterson","plexconnect","shadow","slicereader","thinks","works","achieving","amazing","articles","assign","available","backlog","based","becomes","beginning","bookmarks","boosting","brainstorming","brought","browse","client","close","collaborating","collaborative","color","colors","command","commercial","comprehension","different","dynamic","entire","excursions","exploits","expressions","extension","features","first","friend","goodness","great","hacking","hopes","inner","jailbreaking","loving","mapping","nights","numeric","options","output","partnership","permanent","picking","productivity","programmer","projects","regular","right","sample","semireg","shadow","share","simple","since","software","streams","tasks","tearing","trade","using","utility","values","while","windows","working"]
},{
"title": "nvALT 2.2b 106",
"url": "/2013/06/08/nvalt2.2b106/",
"tags": ["nvalt"],
"date": "Jun 8th, 2013",
"ts": "1370723400",
"summary": "The next (and hopefully last before official release) nvALT 2.2 beta is up. The first version you ll get in your updater or direct download will be 2.2b106. Depending on your OS version, you ll then be pointed to an appropriate version for 10.6 or 10.7+. We re splitting off the 10.6 users so we can develop for Lion/Mountain Lion while still maintaining a working Snow Leopard version. Once you ve updated to version 2.2b 106, check for updates again to get your OS-specific version. The release notes for this update are fun reading. Enjoy. Dropbox made a change in the last 6 months that can cause nvALT to trash your notes. Again, this only affects users who run nvALT simultaneously on multiple macs, synced thru Dropbox. If this means you, you can prevent this by quitting nvALT whenever you leave your mac. You should only have nvALT running on 1 mac at a time. We fully intend to fix this, but until then you should store your notes as separate files, back them up, and try not to run nvALT on more than 1 mac at the same time. Open In Marked command available in localized versions nvALT was launching and staying in the background, fixed Cmd-Return now works with list completion Multiple note tagging works better Interim note-changes is now in ~/Library/Caches/ where it belongs. This fix improve some Dropbox sync issues Lots of scrollbar fixes both for nvALT scrollers and the default (OS X) ones Long formatted dates no longer truncated in horizontal layout Fixed a lot of bugs with how the UI is drawn. The interface should be a little snappier, and less buggy Fixes to the limit text to a maximum width feature Fixed highlighted notes being unreadable depending on various color combinations Fixed tooltips from links hanging around when nvALT is in the background Lots of fixes for snow leopard all around. Sorry 10.6 support had fallen into disarray. Seems pretty good now, but neither developer uses 10.6 on a regular basis so keep the bug reports coming Some fullscreen fixes Find and Replace working better Insert Link command is smarter The holding-down-option-or-ctrl for word count or markdown preview tricks work better The URL scheme should work better. For the record: nvALT s URL scheme is nvalt:// not to be confused with nv:// everything else is more or less the same, but its important to have different schemes for different apps Improved TaskPaper handling Smarter auto-pairing of quotes, parens and brackets nvALT",
"keywords": ["apple","leopard","operating","system","again","brett","caches","changelog","dropbox","david","depending","doesn","donate","download","dropbox","enjoy","fixed","fixes","halter","improved","interim","leopard","library","multiple","markdown","marked","mountain","multimarkdown","multiple","notes","nvalt","notational","numbered","published","release","replace","return","store","seems","smarter","sorry","taskpaper","terpstra","updated","velocity","advanced","affects","again","available","background","based","basis","before","belongs","brackets","buggy","capabilities","cause","change","changes","check","color","combinations","coming","command","confused","continuation","count","dates","default","depending","develop","developer","different","direct","disarray","download","editing","everything","exporting","extension","fallen","feature","files","first","fixed","fixes","formatted","fullscreen","fully","handling","hanging","highlighted","holding","hopefully","horizontal","important","improve","interface","issues","launching","layout","leave","leopard","limit","links","little","localized","longer","maintaining","markdown","maximum","multiple","neither","notes","nvalt","nvalt","official","pairing","parens","pointed","prevent","preview","quitting","quotes","reading","record","regular","release","reports","running","scheme","schemes","scrollbar","scrollers","separate","simultaneously","smarter","snappier","specific","splitting","staying","store","stuff","support","synced","tagging","tooltips","trash","tricks","truncated","unreadable","updated","updater","updates","users","various","version","versions","whenever","where","while","width","working","works"]
},{
"title": "nvremind + Day One and more",
"url": "/2013/06/08/nvremind-plus-day-one-and-more/",
"tags": ["dayone","nvremind"],
"date": "Jun 8th, 2013",
"ts": "1370696400",
"summary": "In case you missed it this weekend, I wrote a little script called nvremind (pronounced nevermind ). It scans folders of text files for occurrences of @remind(YYYY-mm-dd) tags and triggers reminders for you in Reminders.app, by email, in Notification Center, or any combination of those. I published a big nvremind update (official 1.0) today. It turned into a semi-serious project somewhere along the way. This, however, will likely be the last major feature update to it, as I ve taken the idea and started working on a more general version of the concept as a commercial app. I think there s a lot of potential for it. In the meantime, this update makes the script robust enough to fulfill the original mission quite well. The biggest deal (to me) is Day One support. You can stick reminders into any entry now, and they ll be picked up (even on older entries if the remind date is new). You just need to use the path to your entries folder as the last argument. Be sure to quote it if it has spaces. If you store your Journal in iCloud and want a shortcut to finding it, run this command in Terminal (copy/paste the whole line) to search for it and copy it to your clipboard: In order to work around Day One s automatic parsing of @handles, nvremind can now use any prefix. There just needs to be a non-whitespace character before the remind() string, so $remind() , !remind() , *remind() will all work. In Day One, if a reminder is on its own line and has no override title, the first 30 characters of the first line of the entry will be used as the reminder title. This is necessary because Day One entries don t have titles and the filenames are just UUID strings. Leading # and marks are stripped from the output in case your first line is a Markdown headline. The only changes nvremind will make to your Day One entries (or any file) is changing remind to reminded within tags so they don t trigger again. Note that you can disable all changes to your file with the argument. Day One support also means Slogger support. If you use Slogger, you can include a reminder in any social network post and have it remind you after Slogger runs. You can even call nvremind as part of your scheduled Slogger task to have reminders posted immediately after the run. As an example, you could include anywhere in a Pinboard bookmark description and get a reminder called Check out nvremind posted later on. (See the notes below for how the title override syntax works). You can also use",
"keywords": ["github","markdown","reminders","center","changelog","check","donate","download","github","journal","launchcontrol","leading","markdown","multiple","notification","pinboard","published","reminder","reminders","removes","slogger","terminal","updated","works","again","allow","anywhere","argument","automatic","available","background","because","before","below","biggest","blank","bookmark","brackets","breaks","called","canceled","cancelled","changelog","changes","changing","character","characters","clipboard","combination","command","commas","commercial","concept","contains","cover","create","creating","default","description","different","disable","double","email","enough","entire","entries","entry","example","feature","filenames","files","finding","first","folder","folders","formatted","fulfill","general","handles","headline","however","hurts","icloud","ignoring","included","inside","issues","later","leading","leave","likely","lists","little","looks","major","makes","marks","meantime","messages","method","minute","missed","mission","multiple","necessary","needs","network","nevermind","nicely","notes","notification","notifications","nvalt","nvremind","occurrences","official","older","original","output","override","parsing","paste","paths","picked","population","posted","potential","prefix","project","promise","pronounced","published","quick","quote","quoted","quotes","recognizes","remind","reminded","reminder","reminders","requests","responding","robust","running","scans","schedule","scheduled","script","search","separated","serious","several","shortcut","social","somewhere","spaces","specify","started","stick","store","string","strings","stripped","stuff","support","supports","syntax","taken","think","timestamps","title","titles","today","trigger","triggers","turned","using","utility","value","variety","version","weekend","whitespace","whole","within","working","works","wrote"]
},{
"title": "SkypeCall extension for PopClip",
"url": "/2013/06/07/skypecall-extension-for-popclip/",
"tags": ["applescript","popclip","regex","skype"],
"date": "Jun 7th, 2013",
"ts": "1370618400",
"summary": "I recently added a PopClip extension for dialing Skype to my collection. It scans selected text for a 7 or 10-digit phone number, offering a Skype button in the PopClip popup if it finds one. When activated, it dials the first match in the selected text. It seems to be working quite well, so I ve added it to the main collection, download below. The source is available on GitHub , but the script at the heart of it is simple, so I ll post it here for reference: The regex comes from a StackOverflow post . Once it finds a number, it just uses the Skype API to make the phone call. Easy, but handy. Brett's PopClip Extensions v1.45.2 Download Brett's PopClip Extensions v1.45.2 A few PopClip extensions for Markdown writing and other useful tools Published 11/30/14. Updated 02/07/23. Changelog Donate More info",
"keywords": ["github","interface","overflow","programming","skype","stack","brett's","changelog","donate","download","extensions","github","markdown","popclip","published","skype","stackoverflow","updated","activated","added","available","below","button","collection","comes","dialing","dials","digit","download","extension","extensions","finds","first","handy","heart","match","offering","phone","popup","recently","regex","scans","script","seems","selected","simple","source","tools","useful","working","writing"]
},{
"title": "Sidecar 2.0",
"url": "/2013/06/06/sidecar-2-dot-0/",
"tags": ["sideshow","simplify"],
"date": "Jun 6th, 2013",
"ts": "1370543280",
"summary": "Simplify 2.7 is out and Sidecar has updated to make use of the new API . The biggest improvement you ll notice is that background clicks are now captured perfectly, so clicking anywhere on Sidecar will start and stop your music properly on the first click. Double-clicking advances the track, and Command-clicking seeks to a position in the song based on where you click in the vertical progress meter. Sidecar is now fixed to the left side of your screen automatically. It has a little trouble if you attach and detach different size monitors. Given its form factor, I don t think many people are sliding around much, but I may add a right-aligned variation. I will also still be adding the ability to scale to multiple screen sizes. Soon! If you need the older version of Sidecar for backwards compatibility, you can find it on the project page . Sidecar v2.1 Download Sidecar v2.1 A jacket for Simplify 2.7+ and 27-inch (2560x1440) monitors. More sizes coming soon. Published 06/17/13. Updated 06/17/13. Changelog Donate More info",
"keywords": ["computer","display","github","interface","javascript","programming","sidecar","standard","changelog","command","donate","double","download","published","sidecar","simplify","updated","ability","adding","advances","anywhere","attach","automatically","background","backwards","based","biggest","captured","click","clicking","clicks","coming","compatibility","detach","different","first","fixed","improvement","jacket","little","meter","monitors","multiple","music","older","people","perfectly","position","project","properly","right","scale","screen","seeks","sizes","sliding","think","track","trouble","updated","version","vertical","where"]
},{
"title": "Get Marked for 0% off!",
"url": "/2013/06/06/get-marked-for-0-percent-off/",
"tags": ["humor","marked"],
"date": "Jun 6th, 2013",
"ts": "1370532420",
"summary": "Have you been waiting to pay the full-yet-surprisingly-cheap price of $3.99 US for Marked ? Now s your chance: from now until it s not, Marked is 0% off 1 ! If you bought Marked while it was 50% off, thank you! If you missed the sale, you can still get the full satisfaction of supporting an independent developer by checking out Marked on the App Store . Available only to residents of Earth. Additional exclusions may apply, see store for details.",
"keywords": ["apple","itunes","macintosh","store","available","earth","marked","store","apply","bought","chance","cheap","checking","details","developer","exclusions","independent","missed","price","residents","satisfaction","store","supporting","surprisingly","thank","waiting","while"]
},{
"title": "Just some BetterTouchTool notes",
"url": "/2013/06/06/just-some-bettertouchtool-notes/",
"tags": ["bettertouchtool","gestures","macos"],
"date": "Jun 6th, 2013",
"ts": "1370523600",
"summary": "I stumbled upon a BetterTouchTool setting that filled me with glee today. It probably should have been obvious to me earlier, but I hadn t tried right clicking a gesture in the table view. When you do, you get this menu: There have been numerous gestures that I ve loved on my Magic Trackpad, but were inconvenient (frequently triggered accidentally) when using my MacBook Air s built-in trackpad. I d ditch those gestures and stick with the lowest common denominator. With this setting, I can keep the cool ones on my Magic Trackpad, and disable them on the built-in. Awesome. Now, since I know a bunch of people will ask again, here are a few of my BetterTouchTool gestures 1 . There s a method to my madness, and I try to keep the list trim and the gestures consistent between apps. These are the ones that have stuck I ve deleted ones I m still toying with so as not to cause anyone undue pain. Gesture Action Note Custom Tap Sequence Q 2,1,4,3 Three Finger Swipe Up Enter fullscreen (if supported) Four Finger Click Minimize Window Below Cursor Three Finger Click CMD - Click Three Finger Clickswipe Right Hide All Windows Two Finger TipTap Left [ Tab switching Two Finger TipTap Right ] Tab switching Corner Click Bottom Right W Close a window with the side of my palm Two Finger TipTap Middle Mute Three Finger Clickswipe Up Show Dashboard Single Finger Tap Top Middle R Set to require a double-tap Three Finger Clickswipe Down T Opens my Terminal Visor Custom Tap Sequence Show menubar in context menu 4,1,2,3 Rotate Left Rewinds song (Simplify) Rotate Right Skips song (Simplify) Two Finger Swipe From Left Edge Play/Pause (Simplify) Custom Tap Sequence Maximize Window Right 1,2,3,4 Custom Tap Sequence Maximize Window Left 4,3,2,1 Gesture Action Note Three Finger Swipe Left N Fetch new mail Three Finger Swipe Down , Next message (two-part action, works even when message list isn t focused) Three Finger Swipe Up , Previous message My keyboard actions are mostly for launching apps via my Hyper key . I do like this one: Hyper-z is assigned to refresh/update actions in certain apps. For example, in Mail it sends N , in Chrome and Safari it hits R , in Reeder it hits R . Why? Because I have most of my app launching keys (as well as Mission Control navigation) assigned to the left half of",
"keywords": ["apple","control","gesture","iphone","magic","mission","safari","trackpad","action","awesome","because","below","bettertouchtool","bottom","chrome","click","clickswipe","close","control","corner","cursor","custom","dashboard","enter","fetch","finder","finger","gesture","global","handy","hyper","macbook","magic","markdown","maximize","middle","middleclick","minimize","mission","opens","pause","print","reeder","rewinds","right","rotate","safari","sequence","simplify","single","skips","swipe","terminal","tiptap","trackpad","visor","window","windows","accidentally","action","actions","again","anyone","assigned","battle","between","built","bunch","cause","certain","clicking","coffee","common","consistent","context","decide","deleted","denominator","disable","ditch","double","drinking","earlier","eating","example","exports","filled","focused","fullscreen","gesture","gestures","iterm","inconvenient","keyboard","launching","loved","lowest","madness","menubar","message","method","mostly","navigation","obvious","people","quickly","refresh","right","sandwich","script","sends","setting","since","stick","stuck","stumbled","supported","switching","table","today","toying","trackpad","tried","triggered","undue","using","window","works"]
},{
"title": "Sponsor: Radium",
"url": "/2013/06/06/sponsor-radium/",
"tags": [],
"date": "Jun 6th, 2013",
"ts": "1370516400",
"summary": "Radium is a new way to listen to internet radio. It sits in your menu bar and stays out of your way. And it just works. With its clean user interface and album cover display, you re always just a click away from beautiful sounds. Add your favorite tracks to the wish list and check them out later on the iTunes Store. Take the sounds with you using Radium s built-in AirPlay streaming support. It s all there. With the proliferation of services like Spotify and Pandora, why choose Radium? Because with Radium, you don t have to build up playlists, constantly answer questions about your music preferences, or navigate a cumbersome user interface. Radium is all about the sounds. And these sounds come from over 6000 free stations, maintained and curated by real people like you. Available for $10 on the Mac App Store. Check it out.",
"keywords": ["itunes","media","music","pandora","radium","spotify","store","airplay","available","because","check","pandora","radium","sponsorship","spotify","store","syndicate","album","answer","beautiful","build","built","check","choose","clean","click","constantly","cover","cumbersome","curated","display","favorite","itunes","interface","internet","later","listen","maintained","music","navigate","people","playlists","preferences","proliferation","questions","radio","services","sounds","stations","stays","streaming","support","tracks","using","works"]
},{
"title": "Web Excursions for June 05, 2013",
"url": "/2013/06/05/web-excursions-for-june-05-2013/",
"tags": ["bookmarks"],
"date": "Jun 5th, 2013",
"ts": "1370469840",
"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. App Camp For Girls Indiegogo Fundraiser Top billing because this is a great cause. I urge you to support it! omz/Dash-Plugin-for-Xcode I m sure I ll love Ole Zorn even more once I get better at Python, but I m already a huge admirer. This Xcode plugin he wrote makes opt-clicking text in Xcode open Dash instead of the built in doc browser. Add a search profile with just the docsets you want and trigger it on Xcode focus. It s so much faster than the built-in browser that I can t stop clicking methods just to watch it. Pythonista 101 - The Scripting Community Speaking of Ole, this looks like a good collection highlighting some scripts for Pythonista . Between this, the community site and Federico Viticci s coverage over at Macstories , I should have this tool mastered in no time Adobe Kuler Like colors? I ve always been a big COLOURlovers fan, but I ve enjoyed Kuler for a long time. The recent update is all kinds of nice. There s also a free iPhone app that I ll be playing with soon. Via the Zengobi blog (you can drop the ASE files Kuler exports into Curio and auto-color mindmaps). Control iTunes AirPlay streaming with AppleScript This could lead to some fun. WideArea - Better Textarea Full-screen editing from a textarea tag (JavaScript/CSS), elegantly done. I m toying with a web-based Jekyll interface that brings back Markdown QuickTags for me, and this would fit in nicely. 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": ["adobe","applescript","color","federico","iphone","itunes","kuler","viticci","wheel","xcode","adobe","airplay","applescript","backblaze","between","colourlovers","check","community","control","curio","federico","fundraiser","girls","indiegogo","javascript","jekyll","kuler","macstories","markdown","plugin","python","pythonista","quicktags","scripting","speaking","textarea","viticci","widearea","xcode","zengobi","admirer","affordably","backs","based","because","billing","brings","brought","browser","built","cause","clicking","cloud","collection","color","colors","community","computer","coverage","docsets","editing","elegantly","enjoyed","entire","everything","excursions","exports","faster","files","focus","great","highlighting","iphone","itunes","interface","kinds","looks","makes","mastered","methods","mindmaps","nicely","partnership","playing","plugin","profile","recent","reliably","screen","scripts","search","securely","streaming","support","textarea","today","toying","trigger","watch","wrote"]
},{
"title": "Systematic 47 - Nerdfest with Fletcher Penney",
"url": "/2013/06/04/systematic-47-nerdfest-with-fletcher-penney/",
"tags": ["podcast","systematic"],
"date": "Jun 4th, 2013",
"ts": "1370353980",
"summary": "I m just full of news this morning. Systematic 47 is live with my guest Fletcher Penney . Fletcher, in addition to his medical career, is the creator of MultiMarkdown and MultiMarkdown Composer . We got nerdy. Really nerdy. Hopefully not so nerdy that anyone stops listening because I really had a good time doing it. We talked about the past and future of Markdown, MultiMarkdown Composer and some sexy Top 3 Picks for, well, nerds.",
"keywords": ["composer","iphone","markdown","multimarkdown","studios","wordpress","check","composer","fletcher","hopefully","markdown","multimarkdown","penney","picks","systematic","anyone","because","career","creator","doing","enjoy","episode","guest","listening","medical","morning","nerds","nerdy","stops","talked"]
},{
"title": "Byword 2 improves sync, adds publishing",
"url": "/2013/06/04/byword-2-dot-0-improves-sync-adds-publishing/",
"tags": ["byword","markdown","texteditor"],
"date": "Jun 4th, 2013",
"ts": "1370350680",
"summary": "Byword 2.0 for both Mac and iOS platforms has been released. It may look the same on first load, but the under-the-hood improvements are great. Byword is one of my absolute favorite Markdown editors, and despite its billing as a minimalist editor, it packs a lot of editing power. Dropbox sync has been significantly improved for the iOS versions, with better handling and offline rename and move. There are also overall performance improvements on both Mac and iOS. I ve never had many problems with Byword as it was, but now it s even better. Publishing capabilities have also been added (for an in-app purchase of $4.99 US). You can send your text-based notes to Evernote, WordPress, Tumblr, Blogger and Scriptogram. Evernote is the only one of those I m personally using right now, but it s a handy trick. I tested WordPress publishing out, too, and that worked flawlessly. Byword doesn t handle any additional media, but you can upload images to your blog and then link them without issue. For a much more detailed look at Byword 2.0, check out Federico Viticci s post at Macstories . Byword for Mac is $9.99 US, and Byword for iOS is $2.99 US. Check em out.",
"keywords": ["byword","evernote","markdown","tumblr","wordpress","blogger","byword","check","dropbox","evernote","federico","macstories","markdown","publishing","scriptogram","tumblr","viticci","wordpress","absolute","added","based","billing","capabilities","check","detailed","doesn","editing","editor","editors","favorite","first","flawlessly","great","handle","handling","handy","images","improved","improvements","media","minimalist","notes","offline","overall","packs","performance","personally","platforms","problems","publishing","released","rename","right","significantly","tested","trick","under","upload","using","versions","worked"]
},{
"title": "Marked celebrates WWDC, too, 50% off!",
"url": "/2013/06/04/marked-celebrates-wwdc-too-50-percent-off/",
"tags": ["marked"],
"date": "Jun 4th, 2013",
"ts": "1370347440",
"summary": "It s Sale Day at brettterpstra.com today. In addition to the sale on 60 Mountain Lion Tips , Marked is 50% off for a couple of days as part of $2 Tuesday . If you still haven t tried it out, now would be a great time! Check out the deal at $2 Tuesday! .",
"keywords": ["markdown","markedapp","multimarkdown","check","marked","mountain","tuesday","brettterpstra","couple","great","haven","today","tried"]
},{
"title": "60 Mountain Lion Tips 40% off this week only",
"url": "/2013/06/04/60-mountain-lion-tips-40-percent-off-this-week-only/",
"tags": ["ibooks"],
"date": "Jun 4th, 2013",
"ts": "1370343600",
"summary": "David Sparks and I are in the mood to celebrate WWDC and the Mac community. 60 Mountain Lion Tips , the multimedia book I co-authored with David, is on sale this week in the iBookstore . You can pick it up for $2.99 US until Sunday. There are tips in there for Mac users at all levels of skill, and enough information to take you from your current level to the next. Tell your friends!",
"keywords": ["apple","conference","developers","macintosh","worldwide","david","mountain","sparks","sunday","authored","celebrate","community","enough","friends","ibookstore","information","level","levels","multimedia","skill","users"]
},{
"title": "Web Excursions for June 02, 2013",
"url": "/2013/06/02/web-excursions-for-june-02-2013/",
"tags": ["bookmarks"],
"date": "Jun 2nd, 2013",
"ts": "1370183760",
"summary": "Web excursions brought to you in partnership with CleanMyMac X , all the tools to speed up your Mac, in one app. Another water sample from the infoflood, for your examination 1 . Reminder Plumbing Mix this with nvremind and you get a very roundabout-but-automated way to put nvALT notes into OmniFocus as tasks. Hat tip to @hecteddy . Oak A web-based outliner from the mad genius behind FoldingText (and based on some of the same engine, I believe). wri.pe Another nifty web app. It s a good-looking notepad that parses your notes for dates and adds them to a calendar with a link back to the note. I don t have an immediate use case for it, but I can imagine some scenarios where that would be ideal. Cocoadocs My favorite thing about this searchable collection of documentation for Cocoa libraries is that anything that s not already part of the default API documentation has a button for adding it as a Docset to Dash . Nice. DigitalOcean Cloud Hosting If you don t mind building your own server, DigitalOcean has been really impressive in the couple of months I ve been playing around on it. For $5/mo I have a 20GB SSD cloud server with 512MB of RAM. I can spin up new servers any time I want to, cheap. If you re searching for a fast and affordable hosting/server option, check it out. Pixter An Instagram-esque service that you can pay for. Exclusive ownership and complete privacy is appealing. The trick at the bottom of the product page showing the Live Filters feature is pretty darn cool, too. I know, I just published an Excursions post two days ago, but I wanted to get a few of these out before they got stale. I m going to go ahead and assume that s won t ruin your day.",
"keywords": ["design","development","hosting","instagram","interface","omnifocus","private","programming","server","virtual","another","cleanmymac","cloud","cocoa","cocoadocs","digitalocean","docset","exclusive","excursions","filters","foldingtext","hosting","instagram","omnifocus","pixter","plumbing","reminder","adding","affordable","ahead","appealing","assume","automated","based","before","behind","believe","bottom","brought","building","button","calendar","cheap","check","cloud","collection","couple","dates","default","engine","esque","examination","excursions","favorite","feature","genius","going","hecteddy","hosting","ideal","imagine","immediate","impressive","infoflood","libraries","looking","nifty","notepad","notes","nvalt","nvremind","outliner","ownership","parses","partnership","playing","privacy","product","published","roundabout","sample","scenarios","searchable","searching","server","servers","service","showing","speed","stale","tasks","tools","trick","wanted","water","where"]
},{
"title": "nvremind Reminders.app bollocks",
"url": "/2013/06/02/nvremind-reminders-dot-app-bollocks/",
"tags": ["nvalt","nvremind","productivity"],
"date": "Jun 2nd, 2013",
"ts": "1370175960",
"summary": "I posted an update to nvremind this morning. It s small, but it has a few nifty 1 things in it. First, I switched the default behavior to always modify to after posting a reminder. If you don t want to modify your files (because you re doing it by hand after receiving a reminder or something), use the option to prevent it. is deprecated but won t break it if it s still in your scheduled script. It just won t do what you think it will do anymore. Partly because of this change, nvremind can now handle multiple reminders in a file. Only the tag that triggered a reminder will be modified, tags whose due date hasn t come up yet will be left intact for a future run. My favorite part was the easiest part, as it turns out. nvremind now works with Reminders.app! You can run it with the argument to make it create new items in your Reminders list with an immediate due date. It pops them in notification center and on iCloud-synced devices almost instantly. That s pretty handy. If you use OmniFocus on iOS and have it enabled to grab from Reminders, you can also use this to export to your OmniFocus database. A little roundabout, I know. Version 0.1.0 is up on GitHub . If I get a chance, I ll make an installer similar to Slogger s install.rb. It will ask you some basic questions about intervals to run at, location of your notes folder, etc., then set up the launchd task automatically. I also want to allow custom reminder text that overrides the note name if specified. I m thinking about a format. If the bracketed text exists, it uses that as the title. That would make multiple reminders in a document make more sense. The other thought is that if the reminder tag is on a line by itself, use the document title, but if its on a line with text, use the surrounding text as the reminder. That would work well in plain text todo lists food for thought. I used to say nifty ironically, but it wore into my vocabulary. So did swell. I m going to try to bring back the usage of hooligans and fisticuffs, too.",
"keywords": ["github","iphone","omnifocus","reminders","slogger","first","github","omnifocus","partly","reminders","slogger","version","allow","almost","anymore","argument","automatically","basic","because","behavior","bracketed","break","bring","center","chance","change","create","custom","database","default","deprecated","devices","document","doing","easiest","enabled","exists","export","favorite","files","fisticuffs","folder","format","going","handle","handy","hooligans","icloud","immediate","install","installer","instantly","intact","intervals","ironically","items","itself","launchd","lists","little","location","modified","modify","morning","multiple","nifty","notes","notification","nvremind","overrides","posted","posting","prevent","questions","receiving","reminder","reminders","roundabout","scheduled","script","sense","similar","small","steps","surrounding","swell","switched","synced","think","thinking","thought","title","triggered","turns","usage","vocabulary","whose","works"]
},{
"title": "nvremind: Automatic reminders for nvALT",
"url": "/2013/06/01/nvremind-automatic-reminders-for-nvalt/",
"tags": ["nvalt","nvremind","productivity","scripting"],
"date": "Jun 1st, 2013",
"ts": "1370125800",
"summary": "Inspired by Evernote , I whipped up a little script to find @reminder tags with date parameters in nvALT notes (or any folder of text files). It can generate notifications or send HTML emails at the specified time. It s just for fun right now, but I thought I d put it out there to see if anyone had any ideas for it. This tool will search for @remind() tags in the specified notes folder. It searches .md , .txt and .taskpaper files. It expects an ISO 8601 format date (2013-05-01) with optional 24-hour time (2013-05-01 15:30). Put anywhere in a note to have a reminder go off on the first run after that time. This script is intended to be run on a schedule. Check for reminders every 30-60 minutes using cron or launchd. Use the -n option to send Mountain Lion notifications instead of terminal output. Clicking a notification will open the related file in nvALT. Use the -e ADDRESS option to send an email with the title of the note as the subject and the contents of the note as the body to the specified address. Separate multiple emails with commas. The contents of the note will be rendered with MultiMarkdown, which needs to exist at /usr/local/bin/multimarkdown. If the file has a .taskpaper extension, it will be converted to Markdown for formatting before processing with MultiMarkdown. [[Links]] and @tags will be clickable to load notes and searches in nvALT. If you want Mountain Lion notifications, you need to install the terminal-notifier gem (). For the time being, sending email requires that you have MultiMarkdown installed at . I ll add a fallback for that one soon. nvremind uses to send emails. This should just work, but there may be some setup I m forgetting about. I do that stuff late at night. You can schedule it to run with by putting a plist like this in ~/Library/LaunchAgents/com.brettterpstra.nvremind : That will run the script every 30 minutes, and if you edit the dummy email address with your own, you should start receiving reminders. The command it runs is: This assumes you stuck the script in /usr/local/bin/nvremind.rb, but you can edit that to point anywhere. The will turn @remind into @reminded so it won t trigger again in the future. The option enables emails and the final argument should be the folder where you store your nvALT notes as text files. I do recommend picking up LaunchControl for working with scheduling. If you re old school, you can always use for this as well. Next up I think I m going to add a",
"keywords": ["evernote","markdown","multimarkdown","address","applescript","check","clicking","evernote","github","inspired","launchagents","launchcontrol","library","links","markdown","mountain","multimarkdown","omnifocus","readme","reminders","separate","address","again","anyone","anywhere","argument","assumes","before","brettterpstra","bridge","called","clickable","command","commas","contents","converted","covers","dummy","email","emails","enables","exist","expects","extension","fallback","files","first","folder","forgetting","format","formatting","going","ideas","install","installed","intended","launchd","little","local","minutes","multimarkdown","multiple","needs","night","notes","notification","notifications","notifier","nvalt","nvremind","optional","output","parameters","picking","plist","point","processing","pronounced","putting","quick","receiving","recommend","related","remind","reminded","reminder","reminders","rendered","requires","right","schedule","scheduling","school","script","search","searches","sending","setup","started","store","stuck","stuff","taskpaper","terminal","think","thought","title","trigger","truly","useful","using","where","whipped","working"]
},{
"title": "Natural Language Date Service 1.3",
"url": "/2013/06/01/natural-language-date-service-1-dot-3/",
"tags": ["automator","naturallanguage","scripting","service"],
"date": "Jun 1st, 2013",
"ts": "1370091600",
"summary": "I ve updated the natural language date Service again, adding a few things that I d personally been wishing for. This is an OS X System Service that lets you select a string of text in a natural language format and convert it in place to a full date in various formats. That part is the same as it was in the beginning, so you can reference the original post for basic usage. In a nutshell, a string like short next tuesday at 5pm will give you Tue, Jun 4th, 2013 5:00 PM. It keeps you from having to look at the calendar and saves you typing time by turning loosely-formatted strings into nice-looking dates. Ordinal days The long and short date formats now have ordinal day numbers, so June 13 comes out as June 13th. July 21 is July 21st, and so on. This only applies to formats that have the month name (not a number) in them. If you re customizing a date string, use %%o to insert the ordinal version of the day number. ISO 8601 format There s a new format called iso. It s the ISO 8601 (Gregorian Big-endian, if you want to be like that) format that s used in most file-naming systems and in blogging platforms like Jekyll: year, month, day (24-hour, minutes). Typing will give you a date like . Smarter zero padding Zero-padding (in this case) is the prefixed 0 on single-digit numbers. Previously you had to go all or nothing with removing zero-padding. Now it can be a little smarter, with certain formats excluded from the process. If you re customizing, you can use to force a zero in 12-hour time. Meridiem casing If there s no space between time and meridiem in the format string, it will automatically make the am or pm lower case. This is just a personal preference on my part, but I think it makes sense. Improved syntax handling The Service now handles an array of additional date formats and is smarter about handling time strings. See the next section for examples. Thus, gives me Tuesday, June 4th, 2013 (that s the next Tuesday after the day of this writing) at the press of a hotkey. If you don t add a time to the end of the string, it will omit that part from the output (e.g. short friday creates Fri, Jun 7th, 2013 ). You can now include at or @ when specifying a time string. It s optional, but I find that when I want to type in natural language I do it somewhat automatically. It handles a variety of formats: AM and PM can be specified with just the first letter, so becomes 2013-06-01 10:00 AM. Notice that without a day in the string,",
"keywords": ["calendar","coordinated","individual","jekyll","standards","universal","changelog","convert","donate","download","gregorian","improved","jekyll","language","meridiem","natural","ordinal","previously","published","rather","service","smarter","snippets","syntax","system","textexpander","tools","tuesday","typing","updated","above","adding","again","applies","array","arrows","automatically","based","basic","becomes","beginning","between","blogging","calendar","called","calls","casing","certain","chosen","collection","comes","control","convert","creates","customizing","dates","define","digit","download","endian","enter","eventually","examples","excluded","features","first","force","format","formats","formatted","friday","gives","group","handles","handling","having","hotkey","housed","increment","install","keeps","keywords","language","letter","little","looking","loosely","lower","makes","merideim","meridiem","minutes","naming","natural","nothing","numbers","nutshell","operator","optional","ordinal","original","output","overwrite","padding","parses","personal","personally","platforms","preference","prefix","prefixed","press","process","putting","removing","saves","script","section","selected","sense","short","shortcuts","single","smarter","snippet","snippets","somewhat","space","specify","specifying","standard","string","strings","subscribe","supersede","syntax","systems","takes","think","times","tomorrow","tuesday","turning","typing","updated","updates","usage","using","variety","various","version","wishing","writing"]
},{
"title": "Web Excursions for May 31, 2013",
"url": "/2013/05/31/web-excursions-for-may-31-2013/",
"tags": ["bookmarks"],
"date": "May 31st, 2013",
"ts": "1370035800",
"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. Airmail I tested this out for a bit this morning (currently only $2 US). Not the full-featured client I think I need, but really fast and good looking. If you re not using a ton of OS X integrations with Mail.app, give it a shot. Transit Super-smooth CSS3 transitions and animations for jQuery. 7Min - A Quick Workout Timer I want to be skinny again. ofexport An amazing little utility for exporting OmniFocus projects, tasks, notes and all of the details to an array of formats, including OPML and TaskPaper. [Via gridwriter ] Turning Tasks Into Projects in OmniFocus Michael Schechter dives into the art of turning an amorphous task into a fully-fledged OmniFocus project. This link is also my way of providing an introduction to Workflowing , a great new productivity blog from Mr. Schechter and Mike Vardy.",
"keywords": ["omnifocus","taskpaper","airmail","check","michael","omnifocus","projects","quick","schechter","setapp","super","taskpaper","tasks","timer","transit","turning","vardy","workflowing","workout","access","again","amazing","amorphous","animations","array","brought","client","details","dives","excursions","exporting","featured","fledged","formats","fully","great","gridwriter","hundreds","including","integrations","introduction","jquery","little","looking","monthly","morning","notes","ofexport","partnership","productivity","project","projects","providing","skinny","smooth","subscription","tasks","tested","think","today","transitions","turning","using","utility"]
},{
"title": "Marky the Markdownifier, reworked and refined",
"url": "/2013/05/31/marky-reworked-and-refined/",
"tags": ["markdown","markdownifier","marky","multimarkdown"],
"date": "May 31st, 2013",
"ts": "1370030460",
"summary": "Marky the Markdownifier , my web tool that extracts web articles and converts them to Markdown, has received an update that resolves quite a few standing issues. It s a major update and partial rewrite, so there may still be some bugs. Please feel free to drop me a line on Twitter or contact me directly if you run into problems. The biggest changes are that the readability functions that strip ads, menus, comments, etc. out of the post are now handled by an updated version of PHP Readability, and the markdownifying part is handled by html2text instead of PHP Markdown Extra. The previews are also rendered by MultiMarkdown 4 now. The most obvious improvement in all of this is that if a post contains images within links (i.e. hyperlinked images), it won t throw off the reference counter for the links. Previously, this circumstance pretty much entirely broke the output. There are still some edge cases that are breaking it, but I m narrowing them down one at a time. Twitter timeline capture is broken, but I m not planning to fix that one. A few articles are coming up blank if you run into one of those, please shoot me the url. All of the API features should still be intact, and the bookmarklets should work as they always have. Head over to MarkdownRules.com and check out the new, improved version in your choice of flavors.",
"keywords": ["interface","markdown","marky","multimarkdown","programming","extra","markdown","markdownrules","markdownifier","marky","multimarkdown","previously","readability","twitter","articles","biggest","blank","bookmarklets","breaking","broke","broken","capture","changes","check","choice","circumstance","coming","comments","contact","contains","converts","directly","entirely","extracts","features","flavors","functions","handled","hyperlinked","images","improved","improvement","intact","issues","links","major","markdownifying","menus","narrowing","obvious","output","partial","planning","previews","problems","readability","received","rendered","resolves","rewrite","shoot","standing","strip","throw","timeline","updated","version","within"]
},{
"title": "Sponsor: Fracture",
"url": "/2013/05/30/sponsor-fracture/",
"tags": [],
"date": "May 30th, 2013",
"ts": "1369911600",
"summary": "Fracture prints your photo in vivid color directly on glass. It s picture, frame mount, all in one. It 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 Father s Day gifts and are the perfect way to fill up empty walls in your new home or apartment. Check it out.",
"keywords": ["fathers","holidays","shopping","check","father","fracture","fractures","sponsorship","syndicate","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","shipping","sizes","starting","variety","vivid","walls"]
},{
"title": "Systematic 46 with Fred Cheng",
"url": "/2013/05/29/systematic-46-with-fred-cheng/",
"tags": ["podcast","systematic"],
"date": "May 29th, 2013",
"ts": "1369848480",
"summary": "Fred Cheng, co-founder of Simperium (recently acquired by Automattic), joined me to talk about the history of Simplenote, working from coffeehouses and our (pretty nerdy) top picks of the week.",
"keywords": ["automattic","cheng","mullenweg","simperium","simplenote","wordpress","automattic","cheng","simperium","simplenote","acquired","coffeehouses","founder","history","joined","making","nerdy","picks","recently","thanks","working"]
},{
"title": "Sketchnote Typeface",
"url": "/2013/05/29/sketchnote-typeface/",
"tags": ["design","fonts","notes"],
"date": "May 29th, 2013",
"ts": "1369840500",
"summary": "Mike Rohde ( recent Systematic guest ) has just released the Sketchnote Typeface , a family of fonts for creating Sketchnote-style works. The Sketchnote Typeface was built for production work. The four fonts in the set were created for The Sketchnote Handbook to represent handwritten text and headline fonts, and they worked wonderfully for that purpose. With Text, Italic and Bold variations, full support for ligatures and a set of specialized dingbats, it s a great tool for anyone brainstorming, writing or annotating. It adds a hand-drawn feel to any project. Sketchnote Typeface is also available as a webfont for online use. Individual fonts in the family are priced at $29 each, and the full family is an even better deal at $99. See Mike s page about Sketchnote Typeface for more details and to purchase!",
"keywords": ["designers","foundries","graphics","handbook","individual","rohde","sketchnote","typography","handbook","individual","italic","rohde","sketchnote","systematic","typeface","annotating","anyone","available","brainstorming","built","created","creating","details","dingbats","family","fonts","great","guest","handwritten","headline","ligatures","online","priced","production","project","recent","released","specialized","style","support","variations","webfont","wonderfully","worked","works","writing"]
},{
"title": "Sponsor: Igloo",
"url": "/2013/05/23/sponsor-igloo/",
"tags": [],
"date": "May 23rd, 2013",
"ts": "1369306800",
"summary": "BrettTerpstra.com",
"keywords": ["company","design","development","friday","intranet","questions","twenty","check","fridays","igloo","intranet","sandwich","sponsorship","syndicate","updates","versions","bring","convince","funny","human","intranet","lighten","maybe","trial","upgrade","videos"]
},{
"title": "Systematic 45 with Moises Chiullan",
"url": "/2013/05/22/systematic-45-with-moises-chiullan/",
"tags": ["podcast","systematic"],
"date": "May 22nd, 2013",
"ts": "1369238940",
"summary": "I broadcast Systematic live on Monday this week, but if you missed it you can find it in the usual spot on 5by5 . My guest this week was Mois s Chiullan. We talked movies, fish tanks and top picks. I really enjoy chatting with Mois s he brings out a little lighthearted snark. All good-natured, of course. I had a really good time on episode #21 of his podcast, Screen Time, so this was a nice sequel.",
"keywords": ["benjamin","chiullan","monday","podcast","stacoviak","studios","check","chiullan","episode","monday","screen","systematic","brings","broadcast","chatting","enjoy","episode","guest","lighthearted","little","missed","movies","natured","picks","podcast","sequel","snark","talked","tanks"]
},{
"title": "Web Excursions for May 22, 2013",
"url": "/2013/05/22/web-excursions-for-may-22-2013/",
"tags": ["bookmarks"],
"date": "May 22nd, 2013",
"ts": "1369228440",
"summary": "Web excursions brought to you in partnership with MindMeister , the best collaborative mind mapping software out there. POP - Prototyping on Paper - iPhone App Prototyping Made Easy Design an app on paper, take pictures and make simulations. Great prototyping tool. Keybaord Maestro 6.0 press release Whoa. Once again wondering why I m not using Keyboard Maestro. kidpixo/cheaters2docset Cheaters for Dash. Love it. Hangouts for iOS I don t love Google Hangouts, but they re the best option available for group video chat right now. The iOS app is a handy tool for making use of them. TCel Overlay images when converting to HTML/CSS for pixel-perfect layouts. Allows viewing individual PSD layers and supports clickthrough to the design below. claudioc/jingo Git-based wiki in Node.js, inspired by Gollum. Via OneThingWell . Check out MindMeister and start brainstorming, collaborating, and boosting productivity.",
"keywords": ["gollum","google","iphone","prototype","store","videotelephony","allows","cheaters","check","design","gollum","google","great","hangouts","keybaord","keyboard","maestro","mindmeister","onethingwell","overlay","paper","prototyping","again","available","based","below","boosting","brainstorming","brought","cheaters","claudioc","clickthrough","collaborating","collaborative","converting","design","docset","excursions","group","handy","iphone","images","individual","inspired","jingo","kidpixo","layers","layouts","making","mapping","paper","partnership","pictures","pixel","press","productivity","prototyping","release","right","simulations","software","supports","using","video","viewing","wondering"]
},{
"title": "CriticMarkup in Marked 1.4",
"url": "/2013/05/18/criticmarkup-in-marked-1-dot-4/",
"tags": ["criticmarkup","markdown","marked","multimarkdown"],
"date": "May 18th, 2013",
"ts": "1368924720",
"summary": "CriticMarkup was unveiled a little bit ago, and it was intriguing but not immediately useful to me at the time. Since then I ve been playing with the MultiMarkdown Composer beta ( available to owners of version 2 ), which includes a basic change tracking feature supporting full CriticMarkup syntax as you type. I m sold. The initial release of CriticMarkup included a preprocessor for Marked 1.5+, but given the uncertain release date of the next incarnation of Marked, I wanted to make it work with the standard custom processor feature of Marked 1.4 . A few adjustments to the existing script and one dependency later it s good to go. First, go and explore the CriticMarkup syntax . When you have a document marked up and ready to preview, grab the custom processor script and put it anywhere in your user folder or subfolder. This version of the script requires that you have the MultiMarkdown binary (available via ) installed at . You can, of course, edit the script to use any external processor you like after CriticMarkup has done its thing. Next, make sure that the script is executable. Run , substituting the path to the script for the /path/to part. Then, just enter the path to the script in Marked s custom processor field under Behavior preferences. If you get the path wrong, the text will turn red to let you know. Enable the custom processor checkbox and hit Save at the bottom of that box. Now, when you load a CriticMarkup document in Marked, you should see three tabs: Markup, Original and Edited. These let you see a view with changes inline, or see the document s original state and how it looks with all changes accepted. I really hope to see a time in the future when this system (or something similar) takes off for editorial work. I think it s an excellent way of tracking changes and edits between two people. Properly used, it could handle quite a few sources of feedback. Combined with a system like Draft , it could kill Word. Someday",
"keywords": ["language","markup","microsoft","multimarkdown","syntax","behavior","composer","criticmarkup","draft","edited","first","marked","markup","multimarkdown","original","properly","since","someday","accepted","adjustments","anywhere","available","basic","between","binary","bottom","change","changes","checkbox","custom","dependency","document","editorial","edits","enter","excellent","executable","explore","external","feature","feedback","field","folder","handle","incarnation","included","includes","initial","inline","installed","intriguing","later","little","looks","marked","original","owners","people","playing","preferences","preprocessor","preview","processor","ready","release","requires","script","similar","sources","standard","subfolder","substituting","supporting","syntax","system","takes","think","tracking","uncertain","under","unveiled","useful","version","wanted","wrong"]
},{
"title": "Systematic 44 with Carla White",
"url": "/2013/05/16/systematic-44-with-carla-white/",
"tags": ["podcast","systematic"],
"date": "May 16th, 2013",
"ts": "1368715800",
"summary": "I m late posting this. The episode went up on time (Tuesday), but the post about the episode is behind schedule. Carla White was a great guest, and we had a high-energy talk about how a non-developer can take an app idea from start to finish and put quality apps out on the app store. For anyone who listens through to the end, my hand is still numb and the doctor has me in a brace, thinking carpal tunnel. I m not convinced, given that at various points this numbness has spread across my entire right side, from waist to neck and even into my face. It s currently only in my hands, up part of my forearm and my armpit, but it seems like something other than carpal tunnel at this point. I ll be seeing a specialist as I m able to make appointments. Nobody seems willing to entertain an infection-related cause, but the ear infection I ve had for two months seems suspicious. I will leave diagnosis in the hands of qualified professionals, though, assuming I can find some In the meantime, check out Systematic #44 at 5by5 .",
"keywords": ["carla","carpal","conditions","diseases","health","injury","median","nerve","repetitive","strain","syndrome","tunnel","white","wrist","carla","nobody","systematic","tuesday","white","across","anyone","appointments","armpit","assuming","behind","brace","carpal","cause","check","convinced","developer","diagnosis","doctor","energy","entertain","entire","episode","finish","forearm","great","guest","hands","infection","leave","listens","meantime","numbness","point","points","posting","professionals","qualified","quality","related","right","schedule","seeing","seems","specialist","spread","store","suspicious","thinking","through","tunnel","various","waist","willing"]
},{
"title": "Sponsor: Mad Mimi Email Marketing",
"url": "/2013/05/16/sponsor-mad-mimi-email-marketing/",
"tags": [],
"date": "May 16th, 2013",
"ts": "1368702000",
"summary": "Mad Mimi is a design-oriented email newsletter service founded in 2008. Developed to provide a mobile-app-like feel, and with a drag-and-drop email composer, Mad Mimi offers a simple, elegant user experience that helps customers create, send, and track beautiful html email campaigns. Mad Mimi also offers robust APIs, integrations, and add-on features. This makes it a perfect fit for todays visionaries, artists, and entrepreneurs, including great digital brands like Fancy and StumbleUpon, who use Mad Mimi to communicate with their customers. Best yet, Mad Mimi is free for up to 2,500 contacts. We hope youll give us a try or email us with questions.",
"keywords": ["emailmarketing","experience","interface","madmimi","programming","stumbleupon","syndicate","developed","fancy","sponsorship","stumbleupon","syndicate","artists","beautiful","brands","campaigns","composer","contacts","create","customers","design","digital","elegant","email","entrepreneurs","experience","features","founded","great","helps","including","integrations","makes","mobile","newsletter","offers","oriented","questions","robust","service","simple","todays","track","visionaries","youll"]
},{
"title": "Web Excursions for May 14, 2013",
"url": "/2013/05/14/web-excursions-for-may-14-2013/",
"tags": ["bookmarks"],
"date": "May 14th, 2013",
"ts": "1368585360",
"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. FatURL FatURL takes a text block of urls and captions and turns them into a bunched URL for easy sharing. A potential replacement for linkbun.ch for me, and potentially an easier-to-setup replacement for the bit.ly bundle tool I built. Together 3 I was, at one point, a hardcore user of this app as my central bucket for notes, PDFs and, well, everything. I m really glad to see it making a version leap and am testing it out right now to see if I might be headed back to it. Curio 8.6 with Panic Status Board support I don t use Curio for project management, but if you do, this could be awesome. Poetreat Poets are going to dig this, I think. It gives you syllable counts, rhyming dictionary and other tools for writing structured prose. I m looking forward to trying it out for lyric writing. See also: Verses . GistBox: The Beautiful Way to Organize Code Snippets Pretty awesome, web-based snippet storage using Github s Gist functionality. I still want a good native app for doing the same, but the Github package for Sublime is doing a pretty good job 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": ["curio","design","development","document","format","github","locator","portable","resource","snippet","sublime","backblaze","beautiful","board","check","curio","faturl","gistbox","github","organize","panic","poetreat","poets","snippets","status","sublime","together","verses","affordably","awesome","backs","based","block","brought","bucket","built","bunched","bundle","captions","central","cloud","computer","counts","dictionary","doing","easier","entire","everything","excursions","functionality","gives","going","hardcore","headed","linkbun","looking","lyric","making","management","native","notes","package","partnership","point","potential","potentially","project","prose","reliably","replacement","rhyming","right","securely","setup","sharing","snippet","storage","structured","support","syllable","takes","testing","think","today","tools","trying","turns","using","version","writing"]
},{
"title": "EventScripts and reliable Bluetooth proximity detection",
"url": "/2013/05/11/eventscripts-and-reliable-bluetooth-proximity-detection/",
"tags": ["bluetooth","iphone","macos"],
"date": "May 11th, 2013",
"ts": "1368277260",
"summary": "I ve mentioned EventScripts before, but I m finding it awesome enough lately to mention again. I use it in tandem with BetterTouchTool , but for different purposes. Using BTT Remote with BetterTouchTool and Indigo with my X10 system, I can tap a button in the Dock of my iPhone, then press the volume down hardware button and turn my office lights off at night from anywhere in the house. Well, anywhere in the world, really, if I have internet access. However, with EventScripts my lights turn off automatically when I leave the room. That s priceless. This is done by detecting the presence of various Bluetooth devices. In this case, I have it assigned to my iPhone, which always leaves the room when I do. The problem I ve run into before has always been that the connection disappears even when the phone is sitting right by the computer. I ve hacked around with Proximity in the past, but never got it to a point where my lights didn t accidentally turn off while I was still in the room. Even triple checking the Bluetooth signal with long delays couldn t make up for flakiness in either the iPhone s Bluetooth or the Mac s receiver (I ve never determined which). It s not constant, but the troubles happened frequently enough to make me give up on Bluetooth proximity detection for a while 1 . You can also build enough rules in an app like ControlPlane to add some reliability, but even that was requiring more work than I thought should be necessary. When I saw that EventScripts had a Bluetooth trigger, I decided to give it a shot. It has a configuration setting for the number of retries before it considers you gone. I ve found that three retries provides perfectly reliable proximity detection. My lights go off within a few minutes after I walk away from my computer, and turn on almost instantly when I get close again. I ve been running it for a week and a half and haven t had my lights shut off once on me while I was still there, even with my phone in my pocket (which seemed to be a constant issue previously). Check out EventScripts and EventScripts Mobile on the App Stores. It can do much more than just Bluetooth detection, and you can accomplish some things you ve probably never considered before. The developer also has some really useful tools available on his site, including a JSON Helper for AppleScript. That s handy. I m still considering an RFID system that lets lights and audio follow me around the house and customize behaviors per ID. If I",
"keywords": ["apple","appstore","bluetooth","iphone","touch","applescript","bettertouchtool","bluetooth","check","controlplane","eventscripts","helper","however","indigo","mobile","remote","stores","using","access","accidentally","again","almost","anywhere","assigned","audio","automatically","available","awesome","before","behaviors","build","button","checking","close","computer","configuration","considered","considering","considers","constant","couldn","customize","decided","delays","detecting","detection","determined","developer","devices","different","disappears","either","enough","finding","flakiness","found","hacked","handy","happened","hardware","haven","house","iphone","including","instantly","internet","leave","leaves","lights","mention","mentioned","minutes","names","necessary","night","office","perfectly","phone","pocket","point","presence","press","previously","priceless","problem","provides","receiver","reliability","reliable","requiring","retries","right","rooms","rules","running","seemed","setting","signal","sitting","system","tandem","therapy","thought","tools","trigger","triple","troubles","useful","various","volume","where","while","within","world"]
},{
"title": "Sidecar 1.5",
"url": "/2013/05/10/sidecar-1-dot-5/",
"tags": ["jacket","sideshow","simplify"],
"date": "May 10th, 2013",
"ts": "1368216420",
"summary": "Ok, this will be the last update to Sidecar for a little while (no promises). 1.5 seems like a nice number to hold at while I work on some other projects. I ve put enough hours into a project with a very limited audience to feel mildly guilty, but I m having a lot of fun with this. Hey, I respect your life choices. To catch up newcomers, Sidecar is a theme (jacket) for Simplify , my favorite music controller for Spotify, iTunes, Rdio and most web-based players. Sidecar currently only works on 27 monitors, but that limitation will be lifted on an upcoming version of Simplify 1 . Your 11 Air will soon have a new option for decorative music control. Sidecar 1.5 adds three new variations which feature soft lines, fades and a kind of dripping transition as the song progresses. The Nightfall one is guaranteed not to match any of your wallpapers, but I like it anyway. Kind of. You have to see it in the right light. I renamed all of the variations in a manic moment. You ll just have to live with that. I also added visual notifications on play and pause, and some JavaScript and CSS quirks have been smoothed out. I restructured the source on Github to make it easy to play with, if you re interested. Feel free to poke around and offer criticism/improvements. Sidecar v2.1 Download Sidecar v2.1 A jacket for Simplify 2.7+ and 27-inch (2560x1440) monitors. More sizes coming soon. Published 06/17/13. Updated 06/17/13. Changelog Donate More info Simplify 2.6 is being submitted, and it fixes click handling for play pause (so it responds on the first click), among other things. The version coming after that will allow jacket developers to scale to screen dimensions and define positioning for jackets like Sidecar.",
"keywords": ["cascading","itunes","javascript","sheets","spotify","style","changelog","donate","download","github","javascript","nightfall","published","sidecar","simplify","spotify","updated","added","allow","among","anyway","audience","based","catch","choices","click","coming","control","controller","criticism","decorative","define","developers","dimensions","dripping","enough","fades","favorite","feature","first","fixes","guaranteed","guilty","handling","having","hours","itunes","improvements","interested","jacket","jackets","lifted","light","limitation","limited","little","manic","match","mildly","monitors","music","newcomers","notifications","offer","pause","players","positioning","progresses","project","projects","promises","quirks","renamed","responds","restructured","right","scale","screen","seems","sizes","smoothed","source","submitted","theme","transition","upcoming","variations","version","visual","wallpapers","while","works"]
},{
"title": "Experiment: Send to nvALT links",
"url": "/2013/05/10/experiment-send-to-nvalt-links/",
"tags": ["experiments","markdown","marky","nvalt"],
"date": "May 10th, 2013",
"ts": "1368190800",
"summary": "I was considering adding a feature to Jekyll that would let me provide .txt links that return Markdown versions of posts the way that MacDrifter s Pelican install does and I m pretty sure Gruber used to. I got bored with the idea of writing a generator for it, so I hacked a workaround that turned into something quite different from the original objective. That happens a lot. If you look under the little gear icon in the upper right of this site, you ll now see an Add to nvALT links option. Clicking it will turn on nvALT links next to [tweet : adn] for every post, both on the index pages and on permalinks. Clicking this assuming you have nvALT installed will use Marky to generate the Markdown version as an nvALT url that will execute itself automatically and long story short, it adds a Markdownified version of the post straight to nvALT. You can, of course, just drag a url to the notes list and hold down Option to run Readability and Markdownify on any article, but I figured I d make it really easy 1 . I made it opt-in on my site, but there are some bookmarklets on the Marky website for doing it anywhere. It also highlights the fact that Marky can return JSON (with a JSONP wrapper if called with ). This makes it usable in any web application, in addition to the main website and its command line tool (see the API docs on one of the Marky pages). I know it still has some issues, especially with images within links, but it sure can come in handy. It was more an I think I can do that hack than anything terribly useful (I don t really need to save my own articles to nvALT, most of them are already there). I once even built my own web-based version of Antique for my own use it s a disease.",
"keywords": ["github","hosts","jekyll","markdown","multimarkdown","python","antique","clicking","gruber","jsonp","jekyll","macdrifter","markdown","markdownified","markdownify","marky","pelican","readability","adding","anywhere","article","articles","assuming","automatically","based","bookmarklets","bored","built","called","command","considering","different","disease","doing","especially","execute","feature","figured","generator","hacked","handy","happens","highlights","images","index","install","installed","issues","itself","links","little","makes","notes","nvalt","original","pages","permalinks","posts","return","right","short","story","straight","terribly","think","turned","under","upper","usable","useful","version","versions","website","within","workaround","wrapper","writing"]
},{
"title": "Zenboxx anounces ZenDock for 11 and 13-inch Airs",
"url": "/2013/05/09/zenboxx-anounces-zendock-for-11-and-13-inch-airs/",
"tags": ["hardware"],
"date": "May 9th, 2013",
"ts": "1368158940",
"summary": "The ZenDock kickstarter campaign has made quite a splash around the big Mac news sites. I was feeling a little left out, as it was designed for MacBook Pros and I had just shipped my last one off to my brother and moved everything to a 13 Air. Then, in the last 48 hours of the campaign, ZenBoxx announced a little brother to the ZenDock: ZenDock Air. It s available for both 11 and 13-inch MacBook Airs, and there are versions available for both types of Magsafe connectors. While not as capable as the Retina MacBook Pro version, they are suitably slimmed down for the MacBook Air.You can connect speakers with both optical and standard hookups a mic, your power adapter, Ethernet (adapter included), and three more USB devices with a simple docking connector that attaches at the power port/USB section. It doesn t use the Thunderbolt port available on newer Airs, which is understandable (it s on the other side of the computer). However, it handles 90% of what you need plugged in to your Mac when you re at your desktop, and keeps cable clutter down and hookup time low. The actual connectors are mountable under the desk, so it really does look like a good solution to desktop clutter. I m looking forward to trying one out as soon as I can. There s still time to pledge, and you can check out details at their Kickstarter campaign .",
"keywords": ["apple","ethernet","kickstarter","macbook","magsafe","zendock","ethernet","however","kickstarter","macbook","magsafe","retina","thunderbolt","while","zenboxx","zendock","adapter","announced","attaches","available","brother","cable","campaign","capable","check","clutter","computer","connect","connector","connectors","designed","desktop","details","devices","docking","doesn","everything","feeling","handles","hookup","hookups","hours","included","keeps","kickstarter","little","looking","mountable","moved","newer","optical","pledge","plugged","section","shipped","simple","sites","slimmed","solution","speakers","splash","standard","suitably","trying","types","under","understandable","version","versions"]
},{
"title": "Sidecar 1.4",
"url": "/2013/05/09/sidecar-1-dot-4/",
"tags": ["sideshow","simplify"],
"date": "May 9th, 2013",
"ts": "1368118800",
"summary": "Sidecar 1.4 is up. I really should save these changes up and make larger releases, but this is fun. I m playing a little more with the controls and color variations, so this does add some fun stuff. First, there s a new variation called Almost invisible. It s colorless and will work will on all but dark backgrounds. If you have a colorful desktop picture that doesn t match any of the existing themes, this one should be perfect. Next and this is nifty you can Command-Click on the jacket to seek to that point in the song. Double-click to skip to the next track. Play/Pause still works on a single click, but it s a little flaky in Simplify right now. I know for a fact that this will be fixed by the devs pretty soon. For any interested jacket-hackers: the source is now up on GitHub so you can easily play with it and make pull requests. You will, of course, need Simplify installed. If you put the index.html and index.css files into into and run , you ll be able to edit the resulting folder and see live results as you work. Don t clone the repository directly to that folder, git causes a refresh any time you do anything. Even an on the folder. Just copy them out for editing and back into the repo when you want to commit. Please feel free to play with it, and all pull requests will be considered. Sidecar v2.1 Download Sidecar v2.1 A jacket for Simplify 2.7+ and 27-inch (2560x1440) monitors. More sizes coming soon. Published 06/17/13. Updated 06/17/13. Changelog Donate More info",
"keywords": ["github","interface","languages","programming","source","almost","changelog","click","command","donate","double","download","first","github","pause","published","sidecar","simplify","updated","backgrounds","called","causes","changes","click","clone","color","colorful","colorless","coming","commit","considered","controls","desktop","directly","doesn","easily","editing","files","fixed","flaky","folder","hackers","index","installed","interested","invisible","jacket","larger","little","match","monitors","nifty","picture","playing","point","refresh","releases","repository","requests","resulting","results","right","single","sizes","source","stuff","themes","track","variations","works"]
},{
"title": "Web Excursions for May 08, 2013",
"url": "/2013/05/09/web-excursions-for-may-08-2013/",
"tags": ["bookmarks"],
"date": "May 9th, 2013",
"ts": "1368104400",
"summary": "Web excursions brought to you in partnership with CleanMyMac X , all the tools to speed up your Mac, in one app. maxjacobson/alfred-workflows The Alfred version of the iTunesIcon script . Thanks to Max Jacobson. Fargo 0.55 I ve previously mentioned Fargo , the web-based outliner. This release now supports Markdown, which opens some interesting possibilities, I think. Via Alan Sandercock . wiredprairie/unofficialnodejsnest An unofficial API for the Nest thermostat written in Node.js. Get status, set the temperature and more. You can find it in use in a Nest panel for Status Board by Bob VanderClay. BugHub - For GitHub This is a really nice way to handle Github issues in a native Mac app. Also available for iPad . Red Sweater Blog - Fire Forget Scripting If you happen to use FastScripts, this new trick is awesome. Instead of long-running scripts pausing the app, they just fire off on separate processes. Handy, and just a terminal command away.",
"keywords": ["fastscripts","github","interface","jacobson","markdown","programming","alfred","board","bughub","cleanmymac","fargo","fastscripts","forget","github","github","handy","jacobson","markdown","sandercock","scripting","status","sweater","thanks","vanderclay","alfred","available","awesome","based","brought","command","excursions","handle","happen","itunesicon","interesting","issues","maxjacobson","mentioned","native","nodejs","opens","outliner","panel","partnership","pausing","possibilities","previously","processes","release","running","script","scripts","separate","speed","status","supports","temperature","terminal","thermostat","think","tools","trick","unofficial","version","wiredprairie","workflows","written"]
},{
"title": "Sponsor: PDFpenPro",
"url": "/2013/05/09/sponsor-pdfpenpro/",
"tags": [],
"date": "May 9th, 2013",
"ts": "1368097200",
"summary": "PDFpenPro is the advanced version of PDFpen. PDFpenPro does everything that PDFpen does, such as add signatures, edit text and images, perform OCR on scanned documents and export Microsoft Word documents. It also has the ability to create a PDF form, build a table of contents, and convert HTML files to PDF. The new PDFpenPro 6 adds document permission settings. When you share a PDF, you can restrict printing, copying, and editing of your PDFs. You can also use the new automatic form field creation tool to convert a non-interactive form into an interactive PDF form with text fields and checkboxes automatically added. PDFpenPro 6 is available on the Smile Store and the Mac App Store for $100. A free demo can be downloaded on the Smile site. Find out why Macworld calls PDFpenPro the cr me de la cr me of PDF editing and annotating applications.",
"keywords": ["character","document","format","microsoft","optical","pdfpen","portable","recognition","store","macworld","microsoft","pdfpen","pdfpenpro","smile","sponsorship","store","syndicate","ability","added","advanced","annotating","applications","automatic","automatically","available","build","calls","checkboxes","contents","convert","copying","create","creation","document","documents","downloaded","editing","everything","export","field","fields","files","images","interactive","permission","printing","restrict","scanned","settings","share","signatures","table","version"]
},{
"title": "Sidecar 1.3, now in Technicolor",
"url": "/2013/05/08/sidecar-1-dot-3-now-in-technicolor/",
"tags": ["music","sideshow","simplify"],
"date": "May 8th, 2013",
"ts": "1368031980",
"summary": "A quick one Sidecar 1.3 now comes in four variations: Blue (original), green, black and white. Just for fun, here s a video. Download the update after the stunning performance. Sidecar v2.1 Download Sidecar v2.1 A jacket for Simplify 2.7+ and 27-inch (2560x1440) monitors. More sizes coming soon. Published 06/17/13. Updated 06/17/13. Changelog Donate More info",
"keywords": ["music","simplify","changelog","donate","download","published","sidecar","simplify","updated","black","comes","coming","green","jacket","monitors","original","performance","quick","sizes","stunning","variations","video","white"]
},{
"title": "Planter 1.3 with File Templates",
"url": "/2013/05/08/planter-1-dot-3-with-file-templates/",
"tags": ["planter","scripting"],
"date": "May 8th, 2013",
"ts": "1368022800",
"summary": "I ve updated Planter to 1.3 with a few new features. Previously, it created directory structures based on tab-indented folder trees in plain text, using either the command line or LaunchBar ( original post , and the LaunchBar version ). Now, it handles file templates as well as slightly more advanced variables. Templates are (as before) read from . Any file in that directory with the extension tpl is available for quickly planting a new project, client info, etc.. Now you can place non-template files in that directory, and any time you use the filename in a template or scratch file, it will copy the original file to that location in the directory structure. For more info on the basics of usage and templates, see the original post . It works with folders as well, so you can pre-build an entire structure and use Planter to add variables to the base folder names, etc. Speaking of variables, Planter can now handle default values. If you add a pipe and a string within a placeholder (), the variable will no longer be required to publish the template. If no argument is passed, it defaults to the string after the pipe. Variables still require that you enter their replacements in the order they re numbered, so if you want to change number three, you still have to pass one and two. Defaults are most useful when you only have one or two variables in a template. I ve updated the LaunchBar and CLI versions of Planter, and combined them into one download. If I find the time, I will make a version for Alfred 2, as I think it could be a lot smoother than the current process using LaunchBar and CocoaDialog. I find this tool useful enough to justify the time spent on it, hope some other folks get some use out of it, too. Planter for LaunchBar/CLI v1.3 Download Planter for LaunchBar/CLI v1.3 Instantly create nested directory structures from indented text Published 05/05/13. Updated 05/05/13. Changelog Donate More info",
"keywords": ["computer","directory","folder","launchbar","management","structure","alfred","changelog","cocoadialog","defaults","donate","download","example","instantly","launchbar","planter","previously","published","speaking","templates","updated","variables","advanced","argument","available","based","basics","before","build","change","client","command","create","created","default","defaults","directory","download","either","enough","enter","entire","extension","features","filename","files","folder","folders","folks","handle","handles","indented","justify","level","location","longer","mixed","names","nested","numbered","original","passed","placeholder","planting","process","project","publish","quickly","replacements","required","scratch","slightly","smoother","spent","string","structure","structures","template","templates","think","trees","updated","usage","useful","using","value","values","variable","variables","version","versions","within","works"]
},{
"title": "Systematic 43 with Stu Maschwitz",
"url": "/2013/05/07/systematic-43-with-stu-maschwitz/",
"tags": ["podcast","systematic"],
"date": "May 7th, 2013",
"ts": "1367972160",
"summary": "I had a great time getting to know Stu Maschwitz today. He s a filmmaker with an impressive list of credits , and also the creator of a new plain-text screenwriting app called Slugline . We talked about a lot of stuff. We went a bit over the usual one-hour show, but it was worth it. When you have some listening time, be sure to check it out at 5by5 .",
"keywords": ["apple","markdown","maschwitz","store","studios","twitter","maschwitz","slugline","called","check","creator","credits","filmmaker","getting","great","impressive","listening","screenwriting","stuff","talked","today","worth"]
},{
"title": "Write for iPad with device sharing",
"url": "/2013/05/07/write-for-ipad-with-device-sharing/",
"tags": ["appreview","iphone","texteditor"],
"date": "May 7th, 2013",
"ts": "1367949600",
"summary": "I mentioned Write a Markdown text editor with a ton of sharing options a while ago, and I was impressed with it overall. A new version just came out, and an iPad version to go with it. It s not just a companion app, though. In addition to a round of bug fixes, there s something else really neat going on here. Write now implements device sharing, with two different modes. The first is a remote keyboard, so you can type on one device while viewing on another. This has appeared in at least one other app that I know of, but I find it handy. Apparently, I m the opposite of most people I prefer to use this kind of setup to type on my iPhone while viewing on the iPad, rather than vice versa. I ve just never become as proficient with the iPad keyboard as I am with the iPhone. The second utility is even cooler, in my opinion. It s called remote clipboard, and it allows you to link the two devices such that anything you copy to the clipboard on one can immediately paste on the other. The most obvious use for this is probably also the most exciting: you can research and grab urls on one device and insert them into a piece without ever leaving the editor. It s pretty sweet. The good news is that Write for iPhone is free for a few days to celebrate the iPad release ($1.99 US), so you can give the device pairing feature a workout without buying two apps. See my previous review for a more in-depth look at Write s other features.",
"keywords": ["apple","editor","iphone","markdown","apparently","markdown","write","allows","another","appeared","buying","called","celebrate","clipboard","companion","cooler","depth","device","devices","different","editor","exciting","feature","features","first","fixes","going","handy","iphone","implements","impressed","keyboard","leaving","mentioned","modes","obvious","opposite","options","overall","pairing","paste","people","piece","prefer","proficient","rather","release","remote","research","round","second","setup","sharing","utility","versa","version","viewing","while","workout"]
},{
"title": "Sidecar 1.2",
"url": "/2013/05/07/sidecar-1-dot-2/",
"tags": ["design","music","sideshow","simplify","themes"],
"date": "May 7th, 2013",
"ts": "1367931600",
"summary": "It turns out I like Sidecar (my new jacket for Simplify ) enough to keep playing with it a little. I present version 1.2 for your review. I hope you enjoy it. I think the next step is probably color variations, but we ll see. The good folks at Simplify have contacted me about some updates that sound like they ll open some new rabbit holes for me Sidecar v2.1 Download Sidecar v2.1 A jacket for Simplify 2.7+ and 27-inch (2560x1440) monitors. More sizes coming soon. Published 06/17/13. Updated 06/17/13. Changelog Donate More info",
"keywords": ["apple","audio","itunes","multimedia","music","changelog","click","donate","download","minor","published","sidecar","simplify","spacing","updated","animation","anywhere","appearance","artist","change","color","coming","contacted","enjoy","enough","fixed","folks","holes","includes","issues","jacket","little","monitors","opacity","pause","playing","rabbit","sizes","smoother","sound","think","title","toggle","track","turns","tweaks","updates","variations","version","widget"]
},{
"title": "Cheaters for Alfred",
"url": "/2013/05/06/cheaters-for-alfred/",
"tags": ["alfred","cheaters"],
"date": "May 6th, 2013",
"ts": "1367888820",
"summary": "I took a minute to throw together an Alfred 2 workflow for the new version of Cheaters . Once you configure it to point at your local Cheaters install, you can type cheat keyword to jump straight to a specific cheat sheet. For example, cheat jq would jump to jQuery, and cheat git would jump to the Git cheat sheet, assuming you have it active. There are installation and setup instructions in the Workflow s readme. Everything you need to edit can be done from within Alfred. Let me know if you have any ideas to make this better while still keeping it customizable. Cheaters for Alfred v1 Download Cheaters for Alfred v1 An Alfred 2 Workflow for quickly accessing cheat sheets in your Cheaters install Published 05/06/13. Updated 05/06/13. Changelog Donate More info",
"keywords": ["alfred","cheat","cheaters","jquery","sheet","tools","workflow","alfred","changelog","cheaters","donate","download","everything","published","updated","workflow","accessing","active","assuming","cheat","configure","customizable","example","ideas","install","installation","instructions","jquery","keeping","keyword","local","minute","point","quickly","readme","setup","sheet","sheets","specific","straight","throw","together","version","while","within","workflow"]
},{
"title": "Who loves music and 27-inch monitors?",
"url": "/2013/05/06/who-loves-music-and-27-inch-monitors/",
"tags": ["design","music","sideshow","simplify","themes"],
"date": "May 6th, 2013",
"ts": "1367845200",
"summary": "I had a little fun this morning making a very large theme for the Simplify music controller . I wanted something that made use of the background screen real estate on my Thunderbolt display. Sidecar is what I came up with keep in mind it was pretty early in the morning. Naming things before 6am is not my strong point. Sidecar takes up the entire side of my Thunderbolt display background, and it doesn t currently scale to other size displays. I toyed around with making a version for my 13 Air, but it doesn t make as much sense in a confined desktop area. I m planning to recreate it as a horizontal version for smaller displays (eventually). In the meantime, if you happen to use Simplify and own a 27 monitor (2560x1440) It uses varying levels of transparency and CSS3 transforms to create a two tone bar, the lower portion s height determined by the length of the artist name. The artist name and track title are displayed vertically at a -90 tilt. Then, a solid blue background is underlayed which slides down as a progress meter for the current song. When the song ends, it slides back up to the top for the next track. Nifty. It currently doesn t have any player controls, mostly because I never use the desktop widget as a controller. I primarily use hotkeys (my Hyper key with arrow keys) and occasionally the mini player. I didn t see any point in junking up the works with additional controls. Feel free to hack, however. Updated 5/6/13 10:30am: kicking in the CSS3 3d engine, slowing down the animation, making it linear and polling slightly more often end result, an almost smooth progress indicator. Sidecar v2.1 Download Sidecar v2.1 A jacket for Simplify 2.7+ and 27-inch (2560x1440) monitors. More sizes coming soon. Published 06/17/13. Updated 06/17/13. Changelog Donate More info By the way, if you want to take it apart to see what s going on, just rename the .jacket file to .zip and open that. The whole thing is just a css file and an HTML file with some JavaScript for the Simplify API. Plenty of examples in their Github repo .",
"keywords": ["apple","business","computer","display","displayport","estate","iphone","standard","thunderbolt","changelog","donate","download","github","hyper","javascript","naming","nifty","plenty","published","sidecar","simplify","thunderbolt","updated","almost","animation","apart","arrow","artist","background","because","before","coming","confined","controller","controls","create","desktop","determined","display","displayed","displays","doesn","engine","entire","estate","eventually","examples","going","happen","height","horizontal","hotkeys","however","indicator","jacket","junking","kicking","length","levels","linear","little","lower","making","meantime","meter","monitor","monitors","morning","mostly","music","occasionally","often","planning","player","point","polling","portion","primarily","recreate","rename","scale","screen","sense","sizes","slides","slightly","slowing","smaller","smooth","solid","strong","takes","theme","title","toyed","track","transforms","transparency","underlayed","varying","version","vertically","wanted","whole","widget","works"]
},{
"title": "Linking to specific cheat sheets in Cheaters",
"url": "/2013/05/05/linking-to-specific-cheat-sheets-in-cheaters/",
"tags": ["cheaters","cheatsheet"],
"date": "May 5th, 2013",
"ts": "1367758800",
"summary": "A quick note for Cheaters hackers: as of a recent update, Cheaters can now handle linking directly to a specific cheat sheet using url hashes. You can use a zero-index number to link to a page if you know the order (index.html#3 to link to the fourth item), but because the order is configurable and subject to change, it also supports string matching. For example, if you wanted to link directly to the Siri cheat sheet, you could use . The matching is case-insensitive and will go to the first menu item whose text starts with the hash string (in whole or in part, whitespace is ignored). This means that if you have a menu item for CSS 3 Selectors followed by CSS Animation, will go to CSS 3 Selectors. To target CSS Animation, you d want a url like or the full . This is primarily geared toward building more complex workflows using tools like Alfred and Launchbar. You can see it in action on the demo page, using links like http://ttscoff.github.io/cheaters/cheat.html#siri (Siri cheat sheet) and http://ttscoff.github.io/cheaters/cheat.html#mmd (MultiMarkdown cheat sheet). If you create a quick Service as shown above, you can pass text to it with Launchbar, as an example. You ll need to edit the Shell action to point to wherever you keep your Cheaters index. The important part is , which will stick the text you passed to the Service in as the hash. It works just fine with urls, too. Save the Service as Cheat and then bring up Launchbar and type cheat . Once you have the Service selected, press Space and type jq or siri . Assuming you have the matching cheat sheet active (jQuery or Siri), pressing Enter will open Cheaters directly to your desired page.",
"keywords": ["cheat","formats","sheet","sheets","style","alfred","animation","assuming","cheat","cheaters","enter","launchbar","multimarkdown","putting","selectors","service","shell","space","above","action","active","because","bring","building","change","cheat","cheaters","complex","configurable","create","desired","directly","example","first","followed","fourth","geared","github","hackers","handle","hashes","ignored","important","index","insensitive","jquery","linking","links","matching","passed","point","press","pressing","primarily","quick","recent","selected","sheet","shown","specific","starts","stick","string","supports","target","tools","toward","ttscoff","using","wanted","wherever","whitespace","whole","whose","workflows","works"]
},{
"title": "Most popular blog posts and other new shiny in Slogger",
"url": "/2013/05/04/most-popular-blog-posts-and-other-new-shiny-in-slogger/",
"tags": ["blogging","dayone","slogger"],
"date": "May 4th, 2013",
"ts": "1367696700",
"summary": "If you re not already in the loop, Slogger is a Social Logger that pulls in feeds from a wide range of social services and creates entries for them in a Day One journal. It can run itself each day and create an automated collection of everything you re already putting out there on the Internet, including photos (Instagram, Flickr, Twitter, etc.), Tweets, music you listen to, miles you run, blog posts you share and more. I just bumped Slogger up to version 2.0.18.1. Refer to the Updating Slogger info in the documentation for instructions on updating. This is a fairly small version bump, but I figured it was as good a time as any to offer an update on the project. The most interesting new feature in this version is that the BlogLogger plugin can now gather the number of times any of your recent posts have been tweeted and generate a Top 5 most popular posts entry for each blog in your config. The feature is disabled by default, so if you don t want to see these you don t have to do anything. To enable the feature, run Slogger once (or use the new command) to update the configuration file, then edit the line under the BlogLogger section to be true. You can also just add that line, indented by two spaces under the header and not have to run Slogger the first time. With the latest version, it s now possible to run to add new options from updated/new plugins without running them. This also works for new installations to generate the initial config file without running Slogger a dozen times. The README has been updated to reflect this. Download the latest version from the Slogger project page on Github , or clone it using git for easy updates. Forks and pull requests are, as always, welcome. There have been a lot of great contributions already, so thanks to everyone who s pitched in! Because the documentation has been a little scattered, I want to point out a few command line options to help you get the most out of your Slogging. First, the option lets you specify a number of days to traverse back in time. You can run to get all the entries for the last week instead of just the current day. Most of the plugins are pretty good about putting the entries in the right day in your journal, but a couple of them will lump the whole week into the current day. Your mileage may vary depending on what plugins you re running. The number can be as high as you like, but most feeds only go back a certain period of time. Thus, running will go back a year but will",
"keywords": ["command","flickr","gauges","github","instagram","interface","twitter","because","bloglogger","download","first","flickr","forks","gauges","github","github","instagram","internet","journal","logger","readme","running","slogger","slogging","social","testing","tweets","twitter","updating","warning","automated","automation","available","between","brings","bumped","called","capture","certain","cleaning","cleanup","clone","collection","command","config","configuration","configurations","contributions","count","counts","couple","create","created","creates","creating","daily","dates","default","deletes","deleting","depending","designed","detail","development","disabled","doesn","double","dozen","entries","entry","everyone","everything","example","executions","fairly","feature","feeds","fetching","figured","filename","first","folder","gather","great","handy","happened","header","includes","including","indented","initial","installations","instructions","interesting","itself","journal","latest","letters","listen","little","making","manual","matches","mileage","miles","music","needed","newer","offer","options","parameters","passed","persistent","photos","pitched","plugin","plugins","point","polluting","popular","possible","posts","project","pulls","putting","range","recent","reflect","reminders","removing","represents","requests","right","rolling","runlog","running","scattered","section","service","services","share","since","small","social","spaces","specific","specify","stands","stored","string","technical","testing","tests","thanks","times","traverse","tweeted","under","updated","updates","updating","usage","users","using","version","welcome","whole","works"]
},{
"title": "Sponsor: Fresh music from Steven Jengo",
"url": "/2013/05/02/sponsor-fresh-music-from-steven-jengo/",
"tags": [],
"date": "May 2nd, 2013",
"ts": "1367492400",
"summary": "Arrive in the office, make a cup of coffee, open up your email, and turn up your favorite song. We know how it goes. Check out Steven Jengo s new single, summer of 2042 . Fresh tunes with a softly different touch with that kind of familiar sound, simple and melodic, deep and lazy, freshly brewed for your listening pleasure. Take care when driving at high volume. Find more at jengo.com .",
"keywords": ["business","syndicate","arrive","check","fresh","jengo","sponsorship","steven","syndicate","brewed","coffee","different","driving","email","familiar","favorite","freshly","jengo","listening","melodic","office","simple","single","softly","sound","summer","touch","tunes","volume"]
},{
"title": "Sitting pretty (at my computer)",
"url": "/2013/05/01/sitting-pretty-at-my-computer/",
"tags": ["furniture","office"],
"date": "May 1st, 2013",
"ts": "1367429700",
"summary": "I ve been saving up for an Aeron Chair for my office for a while. It runs around $890, but I knew that my current chair was killing me and the investment seemed justifiable. I needed something that allowed for (and promoted) better posture than my current heavily-padded executive chair. I wasn t completely sold on the Aeron, though. Then a recommendation from John Gruber for the Chadwick chair showed up on my Twitter stream and piqued my interest. Given that I was already in the market and ready to drop a fair sum of money, that nudge was enough. The Chadwick Chair costs about $100 less, and I happened to have that much saved toward the Aeron. I took a chance and ordered it. It arrived less than 48 hours later and I ve been sitting in it for a day now. My back immediately appreciated the difference. While the adjustable seat and arm rest heights are nothing novel, the way that the chair adjusts with shifting weight to automatically provide support at any incline is outstanding. An adjustable lumbar support add-on has made this the most comfortable day I ve spent at my computer in a long time 1 . For reference, I m 6 tall and the chair fits well for me when seated at my IKEA desk. I have to have it at the highest height adjustment, so there s not a lot of leeway for taller desks. There s plenty of room to drop for lower desks, though. I can t directly compare the Chadwick to the Aeron, as I haven t sat in an Aeron for over 5 years now. All I can offer is that the Chadwick already appears to be a good investment, and I hope that it continues to pay off in health benefits and general comfort over time. Here s my Amazon affiliate link for the Chadwick chair . Clicking it and then buying anything at Amazon (even if it s not the chair) makes a small donation to my cause, so you can feel warm and fuzzy about your shopping. Yes, I should stand more. While I ve never adapted well to computing while standing, I have been making a point to step away and walk around much more frequently. I ve even been taking 15 minute bike rides in lieu of brewing more coffee. For me, that s serious progress.",
"keywords": ["aeron","chair","ergonomic","herman","lumbar","miller","aeron","amazon","chadwick","chair","clicking","gruber","twitter","while","adapted","adjustable","adjusts","affiliate","allowed","appears","appreciated","arrived","automatically","benefits","brewing","buying","cause","chair","chance","coffee","comfort","comfortable","compare","completely","computer","computing","continues","desks","difference","directly","donation","enough","executive","fuzzy","general","happened","haven","health","heavily","height","heights","highest","hours","incline","interest","investment","justifiable","killing","later","leeway","lower","lumbar","makes","making","market","minute","money","needed","nothing","novel","nudge","offer","office","ordered","padded","piqued","plenty","point","posture","promoted","ready","recommendation","rides","saved","saving","seated","seemed","serious","shifting","shopping","showed","sitting","small","spent","stand","standing","stream","support","taking","taller","toward","weight","while","years"]
},{
"title": "Systematic 42 with Dan Frakes",
"url": "/2013/04/30/systematic-42-with-dan-frakes/",
"tags": ["podcast","systematic"],
"date": "Apr 30th, 2013",
"ts": "1367341980",
"summary": "Thanks to Dan Frakes of Macworld for joining me this week on Systematic. We talk about the life of a reviewer, the universe of an editor and everything about our top three picks. That s right, it s episode 42.",
"keywords": ["check","frakes","macworld","systematic","thanks","conversation","editor","episode","everything","joining","picks","reviewer","right","universe"]
},{
"title": "Web Excursions for April 30, 2013",
"url": "/2013/04/30/web-excursions-for-april-30-2013/",
"tags": ["bookmarks"],
"date": "Apr 30th, 2013",
"ts": "1367326800",
"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. Crouching Nouns, Hidden Verbs: my search for a great iPad writing tool An iOS text editor review (ostensibly of UX Write) from someone who actually pounds enough screen keys to make some sound judgements. Instantly grab a high-res icon for any iOS app using LaunchBar A version of my iOS-icon-grabbing script for LaunchBar. Who s making the Alfred version? End WWDC Some great points from Daniel Jalkut. CSS Units of Measure: Going Beyond the Pixel Making sense of all the CSS sizing options. heelhook/chardin.js Simple overlay instructions for your apps. Handy for some larger web app projects. bevesce/TodoFlow Good grief. This is na on major steroids. If you work with TaskPaper-formatted todo lists (or have any desire to), this is an amazing tool with CLI, GeekTool, Alfred and Sublime Text integration.",
"keywords": ["alfred","apple","conference","developers","geektool","launchbar","taskpaper","worldwide","alfred","beyond","check","crouching","daniel","geektool","going","handy","hidden","instantly","jalkut","launchbar","making","measure","nouns","pixel","setapp","simple","sublime","taskpaper","todoflow","units","verbs","write","access","amazing","bevesce","brought","chardin","editor","enough","excursions","formatted","grabbing","great","grief","heelhook","hundreds","instructions","integration","judgements","larger","lists","major","making","monthly","options","ostensibly","overlay","partnership","points","pounds","projects","screen","script","search","sense","sizing","sound","steroids","subscription","today","using","version","writing"]
},{
"title": "iOS App Review: WordEver HD",
"url": "/2013/04/29/ios-app-review-wordever-hd/",
"tags": ["appreview","texteditor"],
"date": "Apr 29th, 2013",
"ts": "1367240400",
"summary": "A new editor was recently added to iTextEditors that I had to check out. It s called WordEver HD (iPad only), a full-screen text editor with some rather brilliant features which build nicely on some predecessors work. First because it s so important to me, personally it has Markdown support. Not just Markdown, but Markdown with all the extensions, including tables and fenced code blocks. It also features TextExpander support, so you can use my iOS Markdown group (or any other snippets) easily. The most interesting part of the application, though, is the custom keyboard and gesture-based navigation. The keyboard is dark with large keys, and its opacity can be adjusted using zoom in and out gestures. You can also drag a handle on the left to change its height. Tapping a 123 button in the upper right corner reveals a numeric keypad for quick number entry. To make a capital letter on this keyboard, you just flick up on the key. a double-tap on shift turns on Caps Lock, which you re probably already used to on the standard keyboard. You can also enable keyboard sounds, if you want. The top row of the keyboard is configurable, a la Nebulous Notes and some others. It comes with some default settings, and you can press and hold any key in the row to add your own frequently-used characters. The quote, parenthesis and bracket keys all support pairing around selections, and smart open close, so you can use the same key to start a parenthetical as you do to end it, for example. Next up is gesture support for cursor movement. Like some other ingenious apps including WriteUp and Textastic cursor movement and text selection is simple and fast. Tapping in the margins moves the cursor one character right or left (a technique pioneered by 1 Writings , and also found in Daedalus Touch , PlainText , WriteRoom , Writing Kit and probably others). Two-finger taps in the margin move by word. Drag two fingers around the screen to accurately scroll the cursor in any direction. Dragging in the margins selects text by line, making it simple to select full paragraphs or an entire section. Zoom out on selected text (pinch in) to cut it, and zoom in to paste it at the cursor location. This makes it quite intuitive to move paragraphs and sections around in your document. Not quite as easy as Phraseology s system, but still quite smart. There are three color schemes to choose from: light, dark and sepia. Additionally, there are multiple fonts to choose from. All of the",
"keywords": ["dropbox","icloud","iphone","itunes","markdown","additionally","appearance","aside","below","beyond","check","cursor","daedalus","decided","dragging","dropbox","first","helvetica","hopefully","interface","markdown","marked","menlo","nebulous","notes","phraseology","plaintext","store","tapping","textexpander","textastic","touch","wordever","writeroom","writeup","writing","writings","above","access","accessible","accurately","added","adjusted","allows","appealing","appreciate","attachment","autosave","available","based","because","blocks","bottom","bracket","brilliant","browser","build","button","buttons","called","capital","change","character","characters","check","choose","clipboard","close","color","comes","companion","configurable","continuation","corner","count","counts","cursor","custom","debate","default","definitely","desktop","destinations","development","direction","document","double","easily","editing","editor","email","entire","entry","example","export","extensions","features","fenced","finger","fingers","fixed","flick","fonts","force","found","gesture","gestures","great","group","handle","happy","heavily","height","hidden","however","icloud","iphone","itexteditors","itunes","impairs","important","including","ingenious","interesting","introductory","intuitive","issues","keyboard","keypad","letter","light","limited","location","looking","makes","making","margin","margins","mentioned","missing","monospace","movement","moves","multiple","navigation","nicely","numeric","offering","opacity","options","others","output","pairing","paragraph","paragraphs","parenthesis","parenthetical","paste","permissions","personally","pinch","pioneered","position","predecessors","prefer","press","preview","price","quick","quickly","quote","rather","reading","receive","recently","reveals","right","schemes","screen","scroll","section","sections","seeing","selected","selection","selections","selects","sepia","serif","settings","shake","shift","shows","simple","smart","snippets","solid","sounds","source","special","standard","style","styled","support","syncs"]
},{
"title": "Instantly grab a high-res icon for any iOS app",
"url": "/2013/04/28/instantly-grab-a-high-res-icon-for-any-ios-app/",
"tags": ["scripting"],
"date": "Apr 28th, 2013",
"ts": "1367168400",
"summary": "As a blogger who writes about a lot of apps, I frequently need to grab artwork for iOS apps. iTunes and its web previews don t make this an easy task, especially for high-res versions. To assist in this process, I wrote a quick script to allow me to search for an iOS app by name and instantly write its 1024px version (or the highest resolution available) to the current directory in Terminal. There s also an OS X application version at the end of this post, so you can perform this trick without needing the command line at all. This script uses iTunes search API to locate the best match possible for entered keywords, so you don t need to paste in a URL or anything. Just enter something like: The result will be written out to a file named based on your search terms, in all of its high-resolution glory. The results are square, not rounded with a bezel, so you ll need to mask it if you want it to appear the way it does on iTunes. I always handle this myself, so I didn t automate the process, though it could be automated easily enough with ImageMagick and a transparent PNG mask. Here s a 1024px mask you can use to overlay an icon in your favorite image editor, if you need it. Download and save the script as to a folder in your PATH and make it executable (). Then just run it with your search terms after the script name and it will let you know what filename it s saved the icon as, or give you an error message if it fails to find or write the icon. I also made an Automator application version of the script so that you can use it without ever touching the command line. Just run the application and it will ask you for the search terms. Enter the title of the application you want an icon for, and assuming iTunes finds the application and the file save is successful the high-res icon for the app will be on your Desktop 1 . 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 More info If you have Acorn installed, you can also automate the masking of the icon in Automator. It will take some tweaking and knowledge of Ruby and Automator, but you can modify the script to pass the resulting image path instead of a success/error message to the next action. Add the Layer on Images action from Acorn and use the mask I created as the layer. Save the result as a JPEG and you should have a nicely rounded and beveled image on a white",
"keywords": ["acorn","imagemagick","iphone","itunes","acorn","automator","changelog","desktop","donate","download","enter","imagemagick","images","itunesicon","layer","published","terminal","updated","action","allow","appear","artwork","assist","assuming","automate","automated","available","background","based","beveled","bezel","blogger","command","created","directory","easily","editor","enough","enter","entered","error","especially","executable","fails","favorite","filename","finds","folder","glory","handle","highest","itunes","image","installed","instantly","keywords","knowledge","layer","masking","match","message","modify","myself","named","needing","nicely","overlay","paste","possible","previews","process","quick","quickly","resolution","resulting","results","retrieving","rounded","saved","script","search","square","success","successful","terms","title","touching","transparent","trick","tweaking","version","versions","white","write","writes","written","wrote"]
},{
"title": "Mac App Review: Dash for developers",
"url": "/2013/04/26/mac-app-review-dash-for-developers/",
"tags": ["appreview","macos","programming"],
"date": "Apr 26th, 2013",
"ts": "1366981200",
"summary": "I ve been playing with a cool little application called Dash for a while now. It s a hotkey-based popup with configurable docsets for most major programming languages, including HTML, CSS (plus Less, Bourbon, Compass, Sass, etc.), JavaScript, Cocoa (Mac and iOS), Python, PHP, Ruby, Unix man pages and much more. It also has an iCloud/Dropbox-syncable snippet manager for storing and quickly accessing reusable code, complete with placeholders and cursor location control. You can add only the docsets you want to use. Each docset can be assigned an abbreviation, so when you pop up the search field you can search within just a single docset as needed. You can also set up groups of docsets, also with keyword triggers. You can even have these groups trigger automatically based on the current application or a global keyboard shortcut. Once you locate the function or documentation you re looking for, you can keep typing to search within the page. For example, if I type jq:nextuntil example it will search the jQuery docset for the nextUntil() function, then jump to the Example: section of the page. Basically, it s all the documentation you need on a hotkey with fully keyboard-based search. In addition to the ever-present global hotkey, Dash also integrates directly with Xcode, Alfred, QuickSilver, LaunchBar, Sublime Text, Emacs, Vim, Terminal and more. After a couple of months of playing with Dash, my only wish is that it had snippet import from text files. I keep all my code snippets in text files (and nvALT), and get frustrated with Snippet Managers that can t read them. Seems like a fair enough request, right? If you write code in any language you should take a look at Dash. There s a free trial on the App Store , and you can get the full version with an in-app purchase.",
"keywords": ["javascript","keyboard","launchbar","quicksilver","shortcut","store","sublime","alfred","bourbon","cocoa","compass","dropbox","emacs","example","javascript","launchbar","managers","python","quicksilver","seems","snippet","store","sublime","terminal","xcode","abbreviation","accessing","assigned","automatically","based","called","configurable","control","couple","cursor","directly","docset","docsets","enough","example","field","files","frustrated","fully","function","global","groups","hotkey","icloud","import","including","integrates","jquery","keyboard","keyword","language","languages","little","location","looking","major","manager","needed","nextuntil","nextuntil","nvalt","pages","placeholders","playing","popup","programming","quickly","reusable","right","search","section","shortcut","single","snippet","snippets","storing","syncable","trial","trigger","triggers","typing","version","while","within","write"]
},{
"title": "Natural Language Date Service update",
"url": "/2013/04/25/natural-language-date-service-update/",
"tags": ["macos","naturallanguage","service"],
"date": "Apr 25th, 2013",
"ts": "1366902000",
"summary": "I received a request to make the Natural Language Date Service work with formats like +3 5pm to create a date in 3 days at 5pm. Previously you couldn t add a time to a +x format. I also removed the dependency on the Ruby Chronic gem it always defaults to PHP s date parser now. The syntax is a little pickier, but if you keep it short it pretty much always works. date today gives you 4/25/13 date tomorrow 3pm gives you 4/26/13 03:00 PM local today gives you (well, me) 2013-4-25 short today gives you Thu, Apr 25, 2013 long today 5pm gives you Thursday, April 25, 2013 05:00 PM short +5 3pm gives you Tue, Apr 30, 2013 03:00 PM See the original post for more details, and download the updated service below. Convert Date - Natural Language Date Service v1.3 Download Convert Date - Natural Language Date Service v1.3 A System Service which takes selected text and parses it into a standard date format, using keywords at the beginning to define which format to use. Published 06/01/13. Updated 06/01/13. Changelog Donate More info",
"keywords": ["language","natural","programming","changelog","chronic","convert","donate","download","language","natural","previously","published","service","system","thursday","updated","beginning","below","couldn","create","defaults","define","dependency","details","download","format","formats","gives","keywords","little","local","original","parser","parses","pickier","received","removed","selected","service","short","standard","syntax","takes","today","tomorrow","updated","using","works"]
},{
"title": "Sponsor: Filepicker.io",
"url": "/2013/04/25/sponsor-filepicker-dot-io/",
"tags": [],
"date": "Apr 25th, 2013",
"ts": "1366887600",
"summary": "Imagine connecting your app to everything with just 2 lines of code - files from all over the web, across cloud storage source, social networks and devices. Filepicker.io provides a full file system API for your web and mobile applications that allows your app to upload, open, read, write, store, sync and convert files from over 17 sources including Dropbox, Google Docs, Facebook, Skydrive and Box. With the Filepicker.io Javascript API, request a file and receive a simplified URL. Then, upload the URL to your server or serve through your CDN. Filepicker.io includes a customizable drop-in UI widget and an API library allowing you to send uploaded files directly to your S3. Sign up for Filepicker.io today!",
"keywords": ["dropbox","facebook","google","interface","javascript","programming","skydrive","connected","develop","dropbox","facebook","filepicker","google","imagine","javascript","simpler","skydrive","smarter","sponsorship","syndicate","across","allowing","allows","applications","cloud","connecting","convert","customizable","devices","directly","everything","files","includes","including","library","mobile","networks","provides","receive","serve","server","simplified","social","source","sources","storage","store","system","through","today","upload","uploaded","widget","write"]
},{
"title": "Synchronizing Screen Savers between multiple Macs",
"url": "/2013/04/24/synchronizing-screen-savers-between-multiple-macs/",
"tags": ["screensaver","scripting"],
"date": "Apr 24th, 2013",
"ts": "1366822800",
"summary": "I m currently running a Mac Pro with one monitor as my always-on server. My primary work machine is a 13 Air connected to a 27 Thunderbolt display. The Mac Pro display, the Air and the 27 are next to each other on the desktop, and I use teleport to fluidly pass between the monitors and control both machines with one keyboard and Magic Trackpad. I wanted to sync the screen saver between the two machines, so I devised the following system. There may be easier ways to do this with fewer dependencies, but this solution is working great for me. An app called Synergy can replace both teleport and the need for this setup, so if it works well for you, just go that route. I ran into some issues with Synergy that I didn t have with teleport, and I don t need to run cross-platform, so I went this route instead. Set up a keyless ssh login to the remote machine Add a shell (apple)script for start/stop on the remote machine. Create a text file called , where the tilde (~) is your home folder. It doesn t have to be in , just keep track of wherever you choose to place it. Paste the following contents into it, changing Hal 9000 [Full Screen] Advanced 1 to the name of whichever screen saver you want to run (as listed in the Desktop and Screen Saver pane of System Preferences): This script will allow you to run ss start or ss stop from the command line (and over ssh) to start and stop the screen saver. If run without start or stop, it will toggle the state of the screen saver instead. Create an AppleScript on the primary machine for starting the remote screen saver (replace the path to the script with your own if not in , and the macpro.local with your own machine s network name): If triggering these from EventScripts as recommended below, you ll eventually need to save them to the EventScripts script folder. Save them to your Desktop for now. Install EventScripts ($2.99 on the App Store). (There s an older screen saver called ScriptSaver that should do this, but I couldn t get it working on Mountain Lion.) From EventScript preferences, in the EventScripts pane, click the Open Folder button to reveal the scripts folder. Move the start and stop AppleScripts from above to this folder. In EventScripts, click Add Script and select the start script. Choose Screensaver started as the trigger event. Add a second one with the trigger Screensaver will stop for the stop script. Now, when your screen saver starts on your main machine, other machines",
"keywords": ["applescript","customization","desktop","eventscripts","saver","screen","screensaver","screensaverengine","advanced","applescript","applescripts","choose","create","desktop","eventscript","eventscripts","folder","install","magic","mountain","paste","preferences","project","saver","screen","screensaver","script","scriptsaver","store","synergy","system","thunderbolt","trackpad","above","allow","apple","argument","automate","below","between","button","called","changing","choose","click","command","connected","contents","control","couldn","cross","dependencies","desktop","devised","display","doesn","dynamic","easier","eventually","fewer","fluidly","folder","great","issues","keyboard","keyless","listed","local","login","machine","machines","macpro","modify","monitor","monitors","mouse","network","older","platform","possibly","preferences","press","primary","process","recommended","remote","replace","reveal","route","running","saver","screen","screens","screensaver","script","scripts","second","selection","server","setup","shell","solution","started","starting","starts","stopping","system","teleport","tilde","toggle","track","trigger","triggering","wanted","where","wherever","whichever","working","works"]
},{
"title": "TextExpander iOS Markdown fix for Drafts 3",
"url": "/2013/04/24/textexpander-ios-markdown-fix-for-drafts-3/",
"tags": ["markdown","textexpander"],
"date": "Apr 24th, 2013",
"ts": "1366818540",
"summary": "I updated the iOS Markdown group of the TextExpander Tools to trigger [(cursor)] on [] instead of [[ , which should avoid problems with Drafts 3 templates. If you re subscribed to the URL, it should already have updated. If you downloaded and installed manually, you can either just update the snippet yourself or download a new copy of the set from the snippets tool .",
"keywords": ["iphone","markdown","drafts","markdown","textexpander","tools","avoid","cursor","download","downloaded","either","group","installed","manually","problems","snippet","snippets","subscribed","templates","trigger","updated"]
},{
"title": "Drafts 3",
"url": "/2013/04/24/drafts-3/",
"tags": ["appreview","drafts"],
"date": "Apr 24th, 2013",
"ts": "1366815720",
"summary": "This is a quick mention that Drafts 3 for iPad and iPhone is out, and it has a whole bunch of new features. It s a great tool for note-taking and much more. If you haven t tried it yet, there s more reason than ever to give it a shot. The full release notes are up on the site , and I ll let that speak for itself. Some of the highlights include drafts management (filing), advanced Evernote integration, an extended keyboard and dynamic expansion of TextExpander snippets in custom action fields. Note that if you re using my iOS Markdown group from my TextExpander tools , the one can cause issues because it expands in template variables before Drafts gets to replacing it. Dave Caolo of TUAW has a more in-depth review , and there s an awesome review by Federico Viticci up on MacStories. Check it out: Drafts for iPad and Drafts for iPhone .",
"keywords": ["evernote","federico","howbert","macstories","markdown","textexpander","viticci","caolo","check","drafts","evernote","federico","macstories","markdown","textexpander","viticci","action","advanced","awesome","because","before","bunch","cause","custom","depth","drafts","dynamic","expands","expansion","extended","features","fields","filing","great","group","haven","highlights","iphone","integration","issues","itself","keyboard","management","mention","notes","quick","release","replacing","snippets","speak","taking","template","tools","tried","using","variables","whole"]
},{
"title": "Systematic 41 with Collin Donnell",
"url": "/2013/04/23/systematic-41-with-collin-donnell/",
"tags": ["podcast","systematic"],
"date": "Apr 23rd, 2013",
"ts": "1366739640",
"summary": "I hosted a chat with Pinbook developer Collin Donnell for Systematic #41. It was a great conversation, despite my condition. (I had an engagement directly before the podcast which involved some imbibing). We talked about the life of developers, coffee and wristwatches, among a host of other topics. After the conversation I m almost tempted to start wearing a watch again. I think I ll get one of those Casio calculator watches, though. They took mine away in third grade because I always thought why memorize multiplication tables when there are tools to do this for us?",
"keywords": ["casio","watch","watches","casio","collin","donnell","pinbook","systematic","thanks","again","almost","among","because","before","calculator","coffee","conversation","developer","developers","directly","engagement","grade","great","hosted","imbibing","involved","joining","memorize","multiplication","podcast","tables","talked","tempted","think","third","thought","tools","topics","watch","watches","wearing","wristwatches"]
},{
"title": "WordPress to Jekyll: handling redirects",
"url": "/2013/04/20/wordpress-to-jekyll-handling-redirects/",
"tags": ["jekyll","wordpress"],
"date": "Apr 20th, 2013",
"ts": "1366461240",
"summary": "If you happen to be converting a blog from WordPress to Jekyll, this tip might be of use, especially if you want to make sure links to your existing posts continue to work. While this is most likely to be an issue if you re changing your permalink structure, you can still run into a few hiccups even if you maintain it. Note that this post assumes you have a working knowledge of Ruby and can get the WordPress importer script to run on its own, including installing the sequel and MySQL gems. If you re not that far yet, check back once you have it working. I m posting this to document my own discoveries, and I highly doubt it will be of much use to anyone else. While I have this working for my particular needs, this post only details enough to give you an idea how to implement your own. If you ve read this far and don t know what s going on, you should probably skip this one. I converted from having no dates in the url (/post-name) to having full dates (/2013/04/04/post-name). I handled this with Apache redirects. If you re using another server platform, you ll need to adjust the rule output accordingly. I used a heavily modified version of a migration script borrowed from the original Jekyll package . Among myriad conversions it runs, it gathers permalinks and creates rules for all existing posts as it reads them from the WordPress database. The following is the concept, but you ll need to reassemble in your own import script. First, I set up a variable in the class initialization to hold the redirects as they re gathered. During the function in the import script, it gathers all of the posts and writes out the Markdown files for you. At the end of this function I add to my array using the information in the post variable. The source line needs to generate a regular expression that matches the original URL of the post on your site. In my case this is just C6;post-title/? . If you have an existing permalink structure using dates or categories (or anything else), you ll need to add the bits in to create a matching rule. For example, if your link structure is yoursite.net/2013/04/post-title , your regular expression needs to be C6;2013/04/post-title/? . You would generate it with: I created an file for the site in my source folder. It just needs to be at the root of the site source so that it s copied over when the site is generated. Whether you create a new one or are using an existing one, you ll need to add some markers so the script knows where",
"keywords": ["apache","expression","htaccess","hypertext","jekyll","locator","protocol","regular","resource","wordpress","adding","among","apache","collecting","double","first","jekyll","markdown","mysql","while","wordpress","wordpressimporter","adjust","against","another","anyone","anywhere","array","assumes","basic","before","between","borrowed","categories","changing","check","checking","class","concept","continue","conversions","converted","converting","copied","create","created","creates","database","dates","defined","deploying","details","discoveries","document","doubt","enough","especially","example","exists","expression","files","finds","folder","function","gathered","gathers","generated","generating","going","hacked","handled","happen","having","heavily","hiccups","highly","htaccess","import","importer","including","information","initialization","inserts","installing","knowledge","knows","likely","links","local","maintain","makes","mapped","markers","matches","matching","meters","migration","missing","modified","myriad","needed","needs","original","output","package","particular","permalink","permalinks","platform","posting","posts","properly","reads","reassemble","recommend","redirect","redirects","regular","repair","right","rules","script","sense","sequel","server","sitemap","somebody","source","structure","testing","title","together","useful","using","variable","version","where","within","working","writes","yoursite"]
},{
"title": "Web Excursions for April 19, 2013",
"url": "/2013/04/19/web-excursions-for-april-19-2013/",
"tags": ["bookmarks"],
"date": "Apr 19th, 2013",
"ts": "1366383120",
"summary": "Web excursions brought to you in partnership with MindMeister , the best collaborative mind mapping software out there. dnstbr/Sublpress For anyone using WordPress and Sublime Text, this looks to be the package you ve been waiting for. Twipster Via Chris Herbert , a way to turn down the suck on the Twitter web page. Fargo.io It s a web app for OPML outlining with Dropbox integration. Nice keyboard shortcuts once you get used to them. Via Jason Gilman . When and why I automate This is exactly what I think on the matter of time spent scripting automated solutions. Love and artificial intelligence Via Justin Blanton , George Zarkadakis expounding on a topic I find myself fascinated with. Check out MindMeister and start brainstorming, collaborating, and boosting productivity.",
"keywords": ["chris","dropbox","george","github","herbert","sublime","twitter","wordpress","zarkadakis","blanton","check","chris","dropbox","fargo","george","gilman","herbert","jason","justin","mindmeister","sublime","sublpress","twipster","twitter","wordpress","zarkadakis","anyone","artificial","automate","automated","boosting","brainstorming","brought","collaborating","collaborative","dnstbr","excursions","expounding","fascinated","integration","intelligence","keyboard","looks","mapping","myself","outlining","package","partnership","productivity","scripting","shortcuts","software","solutions","spent","think","topic","using","waiting"]
},{
"title": "Sponsor: PDFpen 6 from Smile",
"url": "/2013/04/18/sponsor-pdfpen-6-from-smile/",
"tags": [],
"date": "Apr 18th, 2013",
"ts": "1366282800",
"summary": "Thanks to Smile Software for sponsoring BrettTerpstra.com this week! If you need to do anything with PDFs, you need PDFpen. Add a signature, make changes, correct a typo, fill out forms, and more! Got a scanned document? PDFpen includes OCR to convert that scan into text that you can search or edit. Want to remove sensitive info such as tax ID numbers from your PDF? Use PDFpen to redact your private data. The latest version, PDFpen 6, has improved interface and tools. And now you can export your PDFs to Microsoft Word format for sharing or editing. See the new features in action in this video by David Sparks . Buy PDFpen for $60 in the Mac App Store or directly from Smile . Or, buy PDFpenPro for $100 and you ll get advanced features like form creation tools and document permission settings. Download the free demo!",
"keywords": ["brettterpstra","david","download","microsoft","pdfpen","pdfpenpro","smile","software","sparks","sponsorship","store","syndicate","thanks","action","advanced","changes","convert","creation","directly","document","editing","export","features","format","forms","improved","includes","interface","latest","numbers","permission","private","redact","remove","scanned","search","sensitive","settings","sharing","signature","sponsoring","tools","version","video"]
},{
"title": "Systematic Episode 40 with Myke Hurley",
"url": "/2013/04/16/systematic-episode-40-with-myke-hurley/",
"tags": ["podcast","systematic"],
"date": "Apr 16th, 2013",
"ts": "1366145700",
"summary": "A big thanks to Myke Hurley , founder of the 70Decibels podcast network, for joining me on this week s Systematic . We had a great conversation about the fact that Myke thinks he has no systems. GTD, Inbox Zero none of that for Myke. While loosely defined, it turns out that he does, in fact, have systems for things like email and todo lists. I m glad we got a chance to talk that through. Also, my sincerest condolences and well wishes to those affected, directly or indirectly, by the events in Boston yesterday.",
"keywords": ["android","getting","hurley","inbox","podcast","boston","decibels","hurley","inbox","systematic","while","affected","chance","condolences","conversation","defined","directly","email","events","founder","great","indirectly","joining","lists","loosely","network","podcast","sincerest","systems","thanks","thinks","through","turns","wishes","yesterday"]
},{
"title": "Web Excursions for April 15, 2013",
"url": "/2013/04/15/web-excursions-for-april-15-2013/",
"tags": ["bookmarks"],
"date": "Apr 15th, 2013",
"ts": "1366044600",
"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Forecast Wow. There seems to be no shortage of gorgeous weather sites these days (though I m currently experiencing a shortage of gorgeous weather). This one via Stu Maschwitz . Ulysses III App and Marked App Frank Eves MD details how he uses Ulysses III and Marked together. Alfred 2 Workflow for Cheaters James Stout created an Alfred Worflow for Cheaters. Nice. jrnl Love this: jrnl is a simple journal application for your command line. Journals are stored as human readable plain text files - you can put them into a Dropbox folder for instant syncing and you can be assured that your journal will still be readable in 2050, when all your fancy iPad journal applications will long be forgotten. jrnl also plays nice with the fabulous DayOne and can read and write directly from and to DayOne Journals. Via OneThingWell . craig eley: Song Diary: Log iTunes Tracks to Day One This should become a Slogger plugin 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","dropbox","human","interface","itunes","james","maschwitz","medium","readable","stout","alfred","backblaze","cheaters","check","dayone","diary","dropbox","forecast","frank","james","journals","marked","maschwitz","onethingwell","slogger","stout","tracks","ulysses","worflow","workflow","affordably","applications","assured","backs","brought","cloud","command","computer","craig","created","details","directly","entire","everything","excursions","experiencing","fabulous","fancy","files","folder","forgotten","gorgeous","human","itunes","instant","journal","partnership","plays","plugin","readable","reliably","securely","seems","shortage","simple","sites","stored","syncing","today","together","weather","write"]
},{
"title": "Marked 1.4.1 in the App Store",
"url": "/2013/04/13/marked-1-4-1-in-the-app-store/",
"tags": ["appstore","marked"],
"date": "Apr 13th, 2013",
"ts": "1365894000",
"summary": "Marked 1.4.1 just hit the App Store. It s not the big next version I ve been promising, but I went back and cleaned up a few things that really needed fixing in 1.4. The biggest improvement for most users is going to be flawless handling of multiple fenced code blocks. No more choking. Also, for the same people for whom that will matter, the GitHub theme has been brought up-to-date with changes on GitHub. You ll also notice that Marked now shows up in Open in menus throughout the system. This will be handy with Ulysses 3, especially when working with external sources. The first diff algorithm is updated to handle more tag types and cause less code breakage if it misses. There are even a few improvements for people using a retina display. Overall, it polishes up the 1.4 release nicely. The next version of Marked is still in flux. It s code complete, beta testers have had very positive feedback, and I can say coming soon without reservations. How and when, though, are still to be fully determined. I will definitely keep you posted. In the meantime, Marked 1.4.1 is ready for you!",
"keywords": ["cycle","github","release","software","store","ulysses","github","marked","overall","store","ulysses","algorithm","biggest","blocks","breakage","brought","cause","changes","choking","cleaned","coming","definitely","determined","display","especially","external","feedback","fenced","first","fixing","flawless","fully","going","handle","handling","handy","improvement","improvements","meantime","menus","misses","multiple","needed","nicely","people","polishes","positive","posted","promising","ready","release","reservations","retina","shows","sources","system","testers","theme","throughout","types","updated","users","using","version","working"]
},{
"title": "Gaug.es fun for Slogger and GeekTool",
"url": "/2013/04/13/gauges-fun-for-slogger-and-geektool/",
"tags": ["analytics","gauges","geektool","slogger"],
"date": "Apr 13th, 2013",
"ts": "1365858000",
"summary": "Mostly because of Stephen Hackett s endorsement of it in Systematic #11 , I m giving Gauges a try for my blog analytics right now. One thing I immediately appreciated about Gauges was the simplicity of the API. You can easily incorporate it into scripts, tools, even things like Status Board , with a little output formatting. The first thing I did was add a plugin to Slogger. It s in the pluginsdisabled folder right now. If you want to try it out, you can update your install to the latest version, or just download it directly and save it to your plugins folder. Run to initialize the config, then open your file in a text editor. You ll need an API key, which is really easy to get. Once you re logged into your Gauges account, go to My Account - API keys and create a new key called Gauges for Slogger (or whatever) and copy the resulting string of letters and numbers. Paste that into and the next time you run it (or it runs automatically), you should get an entry for each of your Gauges. Each entry includes the total views, total visits, top five pages and top five referrers. Next, I built a command line tool that works as a GeekTool geeklet. It requires an API key, too. If you created one for Slogger, just re-use it, otherwise follow the instructions above to get one. Hang on to it while I explain the rest of the setup. First, you need to save the script as gauges.rb to a folder on your drive. It doesn t really matter if it s in your path unless you plan to use the command frequently from the command line. If that s the case, I ll assume you know how to put it in your path and make it executable. You ll need the JSON ruby gem as well. I don t know why this isn t included in the main Ruby distribution. Sorry. Run (you may need if you get a permission error) to install it. If you re using rvm be sure to install it in your system environment if you want GeekTool to be able to use it (GeekTool doesn t inherit your shell environment). Next, run the command from the command line: . The first time you run it, it will ask for the API key, which you can paste in at the prompt. Hit return and it will check your account and spit out (pretty, color-coded) Visits/View numbers for each gauge. It stores your key securely in your system Keychain as a generic Internet password 1 . Note that you can customize the colors in the script by changing the color names in the output (GREEN, BLUE, etc.) to other colors defined above the function. For GeekTool, I only",
"keywords": ["analytics","command","geektool","github","google","interface","programming","account","analytics","bettertouchtool","board","change","control","create","dashboard","first","green","gauges","geektool","geeklet","github","google","hackett","internet","keychain","magic","mission","mostly","paste","safari","slogger","sorry","status","stephen","systematic","textmate","trackpad","visits","above","account","analytics","appreciated","argument","assume","automatically","avoid","because","blogging","borrowed","built","bundle","called","changing","check","click","coded","color","colors","command","config","configuration","control","create","created","customize","dashboard","defined","deliveries","directly","disabled","distribution","doesn","download","downtime","drive","earlier","easily","editor","endorsement","entry","environment","error","example","executable","experimenting","explain","external","files","finger","first","folder","forcing","formatting","function","gauge","gauges","geeklet","generic","giving","graph","helps","however","ideal","image","included","includes","incorporate","inherit","initialize","install","instructions","label","latest","letters","lights","little","logged","makes","missed","names","numbers","output","override","pages","password","paste","permanently","permission","placed","plugin","plugins","portion","prompt","referrers","requires","resulting","return","right","running","script","scripts","second","securely","settings","setup","shell","simplicity","solution","space","stores","string","style","swipe","system","technique","temperature","tools","track","turned","understand","unique","updates","users","using","version","views","visitors","visits","wanted","whatever","wherever","while","widget","works"]
},{
"title": "Fix blurry, pixelated icons in Mountain Lion",
"url": "/2013/04/12/fix-blurry-pixelated-icons-in-mountain-lion/",
"tags": ["launchpad","macos","quicktip"],
"date": "Apr 12th, 2013",
"ts": "1365811980",
"summary": "I hadn t seen it happen for a long time, but it struck me today. Blurry icons in Finder and Launchpad. Not all of them, just a few. Some App Store apps, some non, with no obvious rhyme or reason to what was affected. I ve actually never seen this happen in Launchpad before today, but back on Lion it happened once in a while in Finder and in the Application Switcher. A cache clear and a reboot sometimes took care of it, but not always. If anyone knows what actually causes it, I d love to hear about it. For now, here s a quick, simple fix. Put Launchpad in your Dock (you took it out, right?) and make sure your Dock isn t set to autohide Open Launchpad Find the apps with blurry icons and drag them to the Launchpad icon in your Dock Boom. Crystal clear again. Here s hoping that the occurrence is not a sign of larger issues",
"keywords": ["finder","launchpad","macrumors","store","blurry","crystal","finder","launchpad","located","macrumors","store","switcher","affected","again","anyone","autohide","before","blurry","cache","causes","clear","forum","happen","happened","hoping","icons","issues","knows","larger","obvious","occurrence","quick","reboot","rhyme","right","simple","sometimes","struck","thread","today","trick","while"]
},{
"title": "Web Excursions for April 12, 2013",
"url": "/2013/04/12/web-excursions-for-april-12-2013/",
"tags": ["bookmarks"],
"date": "Apr 12th, 2013",
"ts": "1365771600",
"summary": "Web excursions brought to you in partnership with CleanMyMac X , all the tools to speed up your Mac, in one app. Draft. Write Better. An online writing tool that you have to try. Version control and collaboration with full diff views, Markdown, publishing, tweeting (with stats), export to local files, Dropbox, Google Drive, Evernote, Box, even an FTP server. Also, word count, reading level scores, image upload and linking, notes and comments 1 all in a plain text editor that s beautiful to look at. Some Ulysses III Themes for Marked These look great. I should hire that Poritsky guy. Nifty tip for retaining the detachable plug on an Apple Power Supply I must do this. I always find my duck heads when I m not looking for them and don t need them, never when I am or do. Plus, I love that Steve heat tested the Sugru for the post. Booknote An app that integrates bookmarking across all your browsers into a menubar, using Evernote as a hub. I m not ditching Pinboard for an Evernote-based system, but it s a pretty nifty idea. Forecast Pointed out by Justin Blanton , this really is an amazing weather site. They ve packed in as much info as some of the crazier sites, but made it look great. And the Time Machine is awesome.",
"keywords": ["apple","drive","dropbox","evernote","google","machine","markdown","sugru","apple","blanton","booknote","cleanmymac","draft","drive","dropbox","evernote","forecast","google","justin","machine","markdown","marked","nifty","pinboard","pointed","poritsky","steve","sugru","themes","ulysses","version","write","across","adding","amazing","awesome","based","beautiful","because","bookmarking","brought","browsers","collaboration","comments","control","count","crazier","detachable","ditching","documenting","editor","excursions","export","files","great","heads","image","integrates","level","linking","local","looking","menubar","nearly","nifty","notes","online","packed","partnership","publishing","reading","retaining","scores","server","sites","speed","stats","stuff","system","tested","tools","tweeting","upload","using","views","weather","writing"]
},{
"title": "See what's new at iTextEditors",
"url": "/2013/04/11/see-whats-new-at-itexteditors/",
"tags": ["iphone","itexteditors","texteditor"],
"date": "Apr 11th, 2013",
"ts": "1365721920",
"summary": "iTextEditors , my comparison chart for iOS text editing apps of all sorts, continues to grow. With the features of over 80 text editors now listed on the chart, I don t think I m lying when I say it s a valuable resource to anyone who wants simple, fast editing on their iOS device. While I haven t had the time to redesign the chart to make the comparison and filtering as easy as possible, I did find the time to add a way to specify what s been most recently added or updated. A small blue star appears to the left of the app name for latest 5-10 updates and additions 1 . Now, if you check back every now and then to see what s new, well, you ll actually be able to see what s new. I m thinking about building a feed of some kind for it, too, to notify interested parties about additions. There s actually a lot in store, as time allows. Developers, keep sending me your apps and updates ! This list is getting a lot of traffic and it s a great way to make sure you re seen. Please note, though, that this particular list is only for plain text editors. If your app is primarily a Rich Text editor, hold off for a bit. I ll be expanding in the future. Whether you re a user or a developer, if you find an error on iTextEditors, please use the submission form to specify the correction and add a short note in the comment field letting me know. I don t have time to confirm every feature on all of these myself, but I want to keep it as up-to-date and accurate as possible. Seems simple, right? Because the system runs off a Google Spreadsheet and generates automatically, it s trickier than you might think",
"keywords": ["editor","editors","javascript","because","developers","google","seems","spreadsheet","thanks","while","accurate","added","additions","allows","anyone","appears","automatically","building","chart","check","comment","comparison","confirm","continues","correction","developer","device","editing","editor","editors","error","everybody","expanding","feature","features","field","filtering","generates","getting","great","haven","helping","itexteditors","interested","latest","letting","listed","lying","myself","particular","parties","possible","primarily","recently","redesign","resource","right","sending","short","simple","small","sorts","specify","store","submission","system","think","thinking","traffic","trickier","updated","updates","useful","valuable","wants"]
},{
"title": "Sponsor: Instatim",
"url": "/2013/04/11/sponsor-instatim/",
"tags": [],
"date": "Apr 11th, 2013",
"ts": "1365678000",
"summary": "A special thanks to Instatim for sponsoring BrettTerpstra.com this week. Instatim is a more personal social network that helps you stay in touch with your closest friends, family and co-workers. Engineered for privacy, Instatim is unlike other social networks because we do not store information about our users past activities and locations. Your status is shared securely and only to people you have chosen. Status Updates: Keep in touch by posting status updates about what you re doing (walking the dog, meeting a client, etc.) and reading your friends statuses. Groups: Sort contacts into different groups. Share statuses with specific groups to keep the right people in the right loop.",
"keywords": ["instatim","brettterpstra","dates","download","engineered","expiration","groups","instatim","location","share","sponsorship","status","store","syndicate","updates","activities","activity","because","choose","chosen","client","closest","contacts","different","doing","engaged","expiration","family","friends","groups","helps","information","knows","location","locations","meeting","network","networks","people","personal","posting","privacy","reading","right","securely","shared","social","special","specific","sponsoring","status","statuses","store","thanks","touch","unlike","updates","users","walking","whereabouts","workers"]
},{
"title": "Cheaters cleans up its act, gets a date with Siri",
"url": "/2013/04/10/cheaters-cleans-up-its-act-gets-a-date-with-siri/",
"tags": ["cheaters","cheatsheet"],
"date": "Apr 10th, 2013",
"ts": "1365634440",
"summary": "I took a minute to clean up some styling on Cheaters . The League Gothic font wasn t looking very good on my new monitor, and I decided just to clean everything up a little. You can t just go changing one font without changing all of them, right? I also added a cheat sheet for Siri. I added it to the demo , in case you just want to read it without installing Cheaters. Full credit for the sites I gathered the commands from at the bottom of the cheat sheet. I know it s not the most useful thing in the world how often are you sitting at your laptop or desktop when you want to use Siri? Still, I d spent some time exploring and needed a way to practice the various command syntaxes so that I d be able to use them without thinking so much after I hit the button. All of the code is up on Github , and there are instructions for getting started with Cheaters on the project page .",
"keywords": ["cheaters","fonts","github","cheaters","github","gothic","league","added","bottom","button","changing","cheat","clean","command","commands","credit","decided","desktop","everything","exploring","gathered","getting","installing","instructions","laptop","little","looking","minute","monitor","needed","often","practice","project","right","sheet","sites","sitting","spent","started","styling","syntaxes","thinking","useful","various","world"]
},{
"title": "Systematic 39 with Christopher Gamblee-Wallendjack",
"url": "/2013/04/10/systematic-39-with-christopher-gamblee-wallendjack/",
"tags": ["podcast","systematic"],
"date": "Apr 10th, 2013",
"ts": "1365612420",
"summary": "My planned guest for episode 39 had to cancel at the last minute. I decided to take the opportunity to find a guest I d never heard of and see how things went. I put out a call on Twitter and App.net, and dropped a link in the 5by5 IRC room. Pretty soon I had about 40 people to check out and pick from. It wasn t easy, there were a lot of really interesting-sounding people who were willing to step up. I ended up choosing to talk with Christopher Gamblee-Wallendjack . I put the other top candidates on a list and as spots open up I ll probably tap them again to see if they re still interested. The conversation went smashingly. I had a lot of fun meeting someone new, and I d like to thank Christopher for making the time!",
"keywords": ["communities","networking","online","podcast","social","studios","twitter","check","christopher","episode","gamblee","systematic","twitter","wallendjack","again","cancel","candidates","check","choosing","conversation","decided","dropped","ended","episode","guest","heard","interested","interesting","making","meeting","minute","people","planned","smashingly","sounding","spots","thank","willing"]
},{
"title": "Wrangling email: my post on Macworld",
"url": "/2013/04/09/wrangling-email-my-post-on-macworld/",
"tags": ["email","macworld","writing"],
"date": "Apr 9th, 2013",
"ts": "1365516660",
"summary": "A post based on my presentation at the last Macworld is up on wait for it Macworld. It was written prior to the advent of Mailbox , which I m testing as an alternative solution right now, but this is still my go-to system. Check it out at Macworld.com .",
"keywords": ["apple","macworld","check","macworld","mailbox","advent","based","presentation","right","solution","system","testing","written"]
},{
"title": "Fun with intelligent 404 pages",
"url": "/2013/04/07/fun-with-intelligent-404-pages/",
"tags": ["javascript","jekyll","webdesign"],
"date": "Apr 7th, 2013",
"ts": "1365347460",
"summary": "Up until today, I d been redirecting 404 errors on my new site to an archive version of the old site. I m confident enough at this point that all of my previous content (that I m concerned with) is properly redirecting and search engines are all updated with the new permalink structure. So I turned that off. Just in case, though, I thought I d smarten up the 404 to offer possible options based on the URL that a person comes in on. C mon, it s Sunday. I decided to do it on the client side with JavaScript rather than adding databases or dynamic server-side scripts to my static site. It s not at all a new concept, I m just excited that I pulled it off pretty well on my static site. It uses the search.json that I generate when my site builds. It contains post titles, summaries, tags and keywords (all part of my work in progress content exposure project ). Then it dissects the request url path and sanitizes the string (removes dashes, slashes, percents and numbers) runs a fuzzy string match 1 with the url terms against the contents of search.json sorts the list by match score, trims it to 15 and adds it to the page This means that bad or truncated urls can still lead a person to the content that they were looking for. It also, just for fun, means that you can easily search the site using keywords with a simple url, such as brettterpstra.com/applescript or brettterpstra.com/jekyll . I m not posting the scripts for now, as building the search.json requires a rather involved set of custom plugins and the JavaScript isn t much good without it. If you re terribly curious, though, just drop me a line . While I m nerd-boasting about stuff, check out my blink(1) telling me that my Jekyll site is generating. Because I use a system that schedules builds for future dates, it s cool to know when the process starts and is running in the background. It took some coding to make it start and stop blinking continuously, but I now have a function in my Rakefile that takes RGB color codes and a start/stop argument to blink in any color for different tasks. If it notices that I m at my machine when it completes a task, it takes over my audio momentarily, unmutes it as needed and announces the status using the Zarvox voice (try it: or ). If not, it sends me a push notification on my phone. I gotta stop with this stuff. It currently only finds characters in the order they are in the search (with whatever in-between each one), but I d eventually like",
"keywords": ["engine","javascript","locator","resource","search","static","because","javascript","jekyll","rakefile","sunday","while","zarvox","account","adding","against","announces","applescript","archive","argument","audio","background","based","between","blink","blinking","boasting","brettterpstra","building","builds","characters","check","client","codes","coding","color","comes","completes","concept","confident","contains","content","contents","continuously","curious","custom","dashes","databases","dates","decided","different","dissects","dynamic","easily","engines","enough","errors","eventually","excited","exposure","finds","function","fuzzy","generating","gotta","heavy","involved","jekyll","keywords","little","looking","machine","match","momentarily","needed","notices","notification","numbers","offer","options","percents","permalink","person","phone","plugins","point","possible","posting","process","project","properly","pulled","rather","redirecting","removes","requires","running","sanitizes","schedules","score","scripts","search","sends","server","simple","slashes","smarten","sorts","starts","static","status","string","structure","stuff","summaries","system","takes","tasks","telling","terms","terribly","thought","titles","today","transposed","trims","truncated","turned","unmutes","updated","using","version","voice","whatever","words"]
},{
"title": "Customizing the nvALT preview",
"url": "/2013/04/06/customizing-the-nvalt-preview/",
"tags": ["design","javascript","marked","nvalt"],
"date": "Apr 6th, 2013",
"ts": "1365253200",
"summary": "I got bored with my nvALT preview style. I ve been using a GitHub style forever now, and it s great for just about every situation. Clean, crisp, legible still, I needed a break. I based a new custom style on work that my friend, Erik Sagen , did for the next version of Marked. I made some tweaks for my own tastes, and added some JavaScript tricks to it. I m sharing the result with the world. It s free for unlimited use with nvALT. You can even freely share documents exported with it, but I request that you not re-purpose the stylesheet itself for any other use without permission. This is ultimately a demonstration of what a little CSS and JavaScript can do for nvALT s custom template engine. Of course, it s all easier and more flexible if you use Marked , but there s still fun to be had. Hopefully it will inspire some other creations. If you re handy with a little CSS (and optionally JavaScript/jQuery), it s a simple system to play with 1 . Dig in and see how it works, then make something awesome. A slightly modified Lopash theme from the upcoming version of Marked , complete with custom web fonts. Automatic highlighting of code blocks with highlight.js A basic implementation of Widon t for headlines. Smooth scrolling when clicking footnotes and anchors. A back to top link that appears when scrolling down a note. You don t get the promise of a perfect, polished style. It will need some iterations, but it s easy to update. Feel free to report any style or scripting issues you run into with it. I ll do my best to fix things that are definitely broken. Installation is really, really simple. You don t even have to play around in Terminal for this one. The download is at the end of the post, and there s a README with the following information in it. I tell you this just in case you re impatient, for whatever reason. I d hate to hold you up. First, back up any custom files you ve created previously. You can always restore the default style by deleting the and files from . Copy the files in the downloaded zip folder to . If the nvALT folder doesn t exist, create it or simply drag the entire nvALT folder you unzipped into [User Home]LibraryApplication Support. nvALT will automatically pick up this new theme even if it s already running. After switching notes you should see the change. Solarized Light is included in case you prefer it with the theme, and can be switched in with a quick edit in template.html (near the top). The",
"keywords": ["cascading","javascript","sheet","sheets","style","automatic","changelog","clean","donate","download","element","enjoy","first","github","hopefully","inspect","inspector","installation","javascript","libraryapplication","light","lopash","marked","published","readme","removing","sagen","smooth","solarized","support","terminal","updated","webkit","widon","added","anchors","annoyed","another","appears","automatically","aware","awesome","based","basic","blocks","bored","break","broken","change","choke","choose","chunk","click","clicking","convenient","create","created","creations","crisp","custom","debugging","default","definitely","deleting","demonstration","documents","doesn","download","downloaded","easier","editors","enabled","encoded","engine","entire","exist","experimenting","exported","files","first","flexible","folder","fonts","footnotes","forever","freely","friend","great","handy","headlines","helps","highlight","highlighting","hyphenation","hyphens","impatient","implementation","included","information","inline","inspire","inspires","issues","iterations","itself","jquery","legible","little","looks","modified","moved","needed","notes","nvalt","optionally","panel","people","permission","polished","prefer","preview","previously","promise","quick","remove","report","restore","right","running","scripting","scrolling","selector","separately","share","shared","sharing","simple","simply","situation","slightly","style","stylesheet","styling","switched","switching","system","taking","tastes","template","theme","tricks","tweaks","unlimited","unzipped","upcoming","using","version","whatever","whole","works","world"]
},{
"title": "Web Excursions for April 05, 2013",
"url": "/2013/04/05/web-excursions-for-april-05-2013/",
"tags": ["bookmarks"],
"date": "Apr 5th, 2013",
"ts": "1365167340",
"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. Ikea Dioder ambilight hack So cool. Check out the video. Camera+ for iPad This is a great photo app, now with a dedicated iPad version that takes full advantage of the additional screen real estate. HyperSwitch: The New HyperDock For Your Keyboard I m really digging this. It s unobtrusive while adding a bunch of functionality to the cmd-tab switcher. Memofon Via George Entenman , this looks like it will eventually be pretty awesome. Markdown - Mindmap, with support for checklists, multiple themes and presentations. It seems like it s pretty beta at the moment, but hopefully good things will come. Pattern Digger This could be handy. It scans a code directory for TODO, FIXME, or any other pattern you want and displays your project todo lists based on what it finds. You can click a todo item to open the file containing it in an editor, and see badge counts of todos per file. It can live update as files change, too. I ve been playing with it for a while. I have scripts that do this from the command line which work fine, but I m finding that the GUI overview is nice sometimes.",
"keywords": ["apple","fixme","camera","check","digger","dioder","entenman","fixme","george","hyperdock","hyperswitch","keyboard","markdown","memofon","mindmap","pattern","setapp","access","adding","advantage","ambilight","awesome","badge","based","brought","bunch","change","checklists","click","command","containing","counts","dedicated","digging","directory","displays","editor","estate","eventually","excursions","files","finding","finds","functionality","great","handy","hopefully","hundreds","lists","looks","monthly","multiple","overview","partnership","pattern","photo","playing","presentations","project","scans","screen","scripts","seems","sometimes","subscription","support","switcher","takes","themes","today","todos","unobtrusive","version","video","while"]
},{
"title": "Sponsor: Shopster",
"url": "/2013/04/04/sponsor-shopster/",
"tags": [],
"date": "Apr 4th, 2013",
"ts": "1365073200",
"summary": "A big thanks to Shopster for sponsoring BrettTerpstra.com this week. Shopster is a new kind of groceries list app that learns what you purchase and where, so it can remind you later on. Whenever you check an item as purchased, Shopster learns the location where you got it. The next time you look for the same thing, a geofenced alarm will be triggered when you are near the location. Auto-learning of locations when checking items as purchased. Geofenced reminders for your products, based on your prior buying history. In-place editing table, for quick corrections and editions. Unique ruler to quickly enter the number of items you need to buy. Smart auto-complete, to assist you with entering frequently-purchased products, based on your prior history. Reorder items with a simple tap-and-hold. Check out Shopster on the App Store , it s only $0.99.",
"keywords": ["apple","appstore","fence","iphone","shopster","touch","brettterpstra","check","features","geofenced","reorder","shopster","smart","sponsorship","store","syndicate","unique","whenever","alarm","assist","based","buying","check","checking","corrections","editing","editions","enter","entering","geofenced","groceries","history","items","later","learning","learns","location","locations","products","purchased","quick","quickly","remind","reminders","ruler","simple","sponsoring","table","thanks","triggered","where"]
},{
"title": "Mac App review: Ulysses III",
"url": "/2013/04/03/mac-app-review-ulysses-iii/",
"tags": ["appreview","editor","macos","markdown","ulysses"],
"date": "Apr 3rd, 2013",
"ts": "1364991300",
"summary": "The Soulmen have just posted Ulysses III to the Mac App Store. It brings Daedalus-style document management (similar to Scrivener ) to a Markdown (and Textile) editor that s pretty special. The editor itself uses inline highlighting for things like footnotes, comments, links and image attachments (which can be dragged and dropped). In reality, these are being stored as plain text, but displayed in a way that is reminiscent of a word processor. Bold and italics are shown styled as well. There are shortcut keys for just about every operation. It s also gorgeous. There are several editing modes, including distraction free and full-screen modes, dark and light backgrounds and an iOS-style cursor. There are three collapsible panes for stacks, sheets and editing. Five small buttons in the toolbar are the extent of the chrome, allowing for a very elegant interface. Documents are stored as stacks of sheets, and you can select and edit multiple sheets at once. It uses iCloud and syncs with Daedalus, but you can import external sources, too. It becomes both an editor and a document manager. Documents can be navigated by headers, and you can add bookmarks and star sheets as favorites. You can also add notes to sheets and attach images as reference items. Ulysses III includes a full character/word count with reading time estimates. You can export your documents to RTF, PDF, TXT or HTML. In the near future when the next version of Marked is officially released integration with Marked will be tight. If you re looking for a new Markdown editor, Ulysses III is truly worth checking out. For the next week it s priced at $19.99 US, and it will be $39.99 US after that. Daedalus Touch is also on sale for the week at just $0.99 US.",
"keywords": ["daedalus","icloud","markdown","scrivener","soulmen","store","daedalus","documents","markdown","marked","scrivener","soulmen","store","textile","touch","ulysses","allowing","attach","attachments","backgrounds","becomes","bookmarks","brings","buttons","character","checking","chrome","collapsible","comments","count","cursor","displayed","distraction","document","documents","dragged","dropped","editing","editor","elegant","estimates","export","external","favorites","footnotes","gorgeous","headers","highlighting","icloud","image","images","import","includes","including","inline","integration","interface","italics","items","itself","light","links","looking","management","manager","modes","multiple","navigated","notes","officially","operation","panes","posted","priced","processor","reading","reality","released","reminiscent","screen","several","sheets","shortcut","shown","similar","small","sources","special","stacks","stored","style","styled","syncs","tight","toolbar","truly","version","worth"]
},{
"title": "Systematic #38 with Patrick Rhone",
"url": "/2013/04/02/systematic-number-38-with-patrick-rhone/",
"tags": ["podcast","systematic"],
"date": "Apr 2nd, 2013",
"ts": "1364936520",
"summary": "It was my pleasure to host Patrick Rhone ( minimalmac.com , Enough and more) on Systematic episode 38. We talked about physical and mental challenges, career paths and eventually got around to unconscious computing, the fascinating topic surrounding things like the FitBit and Google Glass. Thanks to Patrick for joining me today, and hopefully both of our local tundras will keep melting off now. Check out Systematic #38 at 5by5 .",
"keywords": ["benjamin","fitbit","patrick","podcast","rhone","studios","check","enough","fitbit","glass","google","patrick","rhone","systematic","thanks","career","challenges","computing","episode","eventually","fascinating","hopefully","joining","local","melting","mental","minimalmac","paths","physical","surrounding","talked","today","topic","tundras","unconscious"]
},{
"title": "Web Excursions for April 01, 2013: Alfred 2 Edition",
"url": "/2013/04/01/web-excursions-for-april-01-2013-alfred-2-edition/",
"tags": ["alfred","bookmarks"],
"date": "Apr 1st, 2013",
"ts": "1364823420",
"summary": "Web excursions brought to you in partnership with MindMeister , the best collaborative mind mapping software out there. No April Fools jokes here, just a bunch of Alfred 2 goodness. Alfredo Alfredo is a [Ruby] wrapper for Alfred 2 s new Workflow system. It generates a XML response based on the information in the Alfred Forums. Alfred 2 Ruby Framework A framework for Alfred 2 workflow development in Ruby. Alfred workflow for Github An Alfred 2 workflow for Github that works almost like the GitHub command bar. Alfred 2 Workflow List Search, Install and Share The beginnings of a repository for all of the Alfred 2 Workflows popping up. Yak pushing workflow It has the basic trimmings, i.e. a Contacts custom action you can wire up to phone numbers in Alfreds contacts viewer, a dial keyword and keyboard shortcuts to handle stuff selected in OS X applications. Digested Convert notes and highlights from iBooks to PDFs or Evernote notes on your desktop. A really cool idea, I need to test it out and see if it works. Check out MindMeister and start brainstorming, collaborating, and boosting productivity.",
"keywords": ["alfred","alfredo","evernote","github","workflow","alfred","alfredo","alfreds","check","contacts","convert","digested","evernote","fools","forums","framework","github","github","install","mindmeister","search","share","workflow","workflows","action","almost","applications","based","basic","because","beginnings","boosting","brainstorming","brought","bunch","collaborating","collaborative","command","contacts","custom","desktop","development","excursions","framework","generates","goodness","handle","highlights","ibooks","information","jokes","keyboard","keyword","mapping","notes","numbers","partnership","phone","popping","productivity","pushing","repository","response","selected","shortcuts","software","sounds","stuff","system","think","trimmings","viewer","workflow","works","wrapper"]
},{
"title": "A few more of my favorite Bash aliases",
"url": "/2013/03/31/a-few-more-of-my-favorite-bash-aliases/",
"tags": ["terminal"],
"date": "Mar 31st, 2013",
"ts": "1364734800",
"summary": "I love my aliases. It s part of the reason I need a better dotfile management setup porting them to any server environment I m working on is a must for my sanity. I thought I d share a few of the ones I find handy, especially in OS X environments. Chrome is still my browser of choice for most purposes, but it has a couple of quirks. First, dragging an html file to it doesn t seem to open a new tab or load the file in the current tab. It just does nothing. A quick alias using is my workaround: Next, it frequently loads up with the fonts all wonky. This is probably due to font conflicts on my system, but it happens to me on multiple machines and drives me crazy. Here are a couple of aliases I use to restart the font server and launch Chrome, solving the issue. The combination of the the two allow me to just run to start it up fresh. I have a more complex one that gently quits chrome (osascript), restarts the server and then launches Chrome with a few command line flags, but that one has dependencies and personal tweaks that aren t very useful to others. I write a lot of scripts, so is a frequent friend. I also have a few shortcuts for editing some shell files. They re set to use my $EDITOR 1 variable but could be modified for any editor: I would also highly recommend checking out , my tool for quickly locating my various scripts and editing them. Most of my git aliases are actually git aliases, created in my global . These are a few that I find handy on their own:",
"keywords": ["github","taskpaper","chrome","editor","first","scripting","alias","aliases","allow","browser","checking","choice","chrome","combination","command","commands","complex","conflicts","couple","crazy","created","dependencies","doesn","dotfile","dragging","drives","editing","editor","environment","environments","especially","files","flags","fonts","frequent","fresh","friend","gently","global","handy","happens","highly","ideas","launch","launches","loads","locating","machines","management","miscellaneous","modified","multi","multiple","nothing","osascript","others","personal","porting","quick","quickly","quirks","quits","range","recommend","restart","restarts","sanity","scripts","server","setup","share","shell","shortcuts","solving","system","thought","tweaks","useful","usefulness","using","variable","various","wonky","workaround","working","write"]
},{
"title": "A multi-purpose EDITOR variable",
"url": "/2013/03/30/a-multi-purpose-editor-variable/",
"tags": ["quicktip","scripting","terminal"],
"date": "Mar 30th, 2013",
"ts": "1364665740",
"summary": "Here s a quick trick I ve been using to load different editors from the command line based on the type of file. It can be extended to whatever file types you want to handle and use whichever editor you prefer. I use Vim to edit git messages, MultiMarkdown Composer (via the command available from the website ) for text and Markdown files, and Sublime Text 2 for just about everything else. Now if I run a git merge and need to enter a message, it pops up Vim right in the terminal I m working in. If I edit a Markdown file, it automatically opens it in MultiMarkdown composer. Anything else gets sent to Sublime Text 2. Like I said, it s easy to customize with more file types and editors, but I thought I d share the idea for anyone who d find it helpful.",
"keywords": ["editor","editors","github","markdown","multimarkdown","sublime","composer","editor","first","markdown","multimarkdown","sublime","anyone","automatically","available","based","command","composer","created","customize","different","editor","editors","enter","everything","executable","extended","files","folder","handle","helpful","merge","message","messages","opens","point","prefer","quick","right","scripts","share","terminal","thought","trick","types","using","variable","website","whatever","whichever","working"]
},{
"title": "SearchLink 1.5 with Amazon search and affiliate linking",
"url": "/2013/03/28/searchlink-1-dot-5-with-amazon-search-and-affiliate-linking/",
"tags": ["markdown","search","searchlink"],
"date": "Mar 28th, 2013",
"ts": "1364493600",
"summary": "Yes, I updated SearchLink again (another lunchtime project). I added Amazon search (!a) and a configuration option to allow auto-creation of affiliate links. If you set the option to it will return straight Amazon links. The configuration involves creating an Affiliate link using Amazon s link tool, and then examining it to find your tag, camp and creative ids. One of my links looks like this: The parts you need are , , and (just the parts after the sign). Edit the Automator service by double clicking it and in the script you ll find the variable . This gets set to an array that looks like: Also note that the variable name for the iTunes partner program setup is now , just for a little more clarity in naming conventions. The gist has been updated to 1.5, and the original post url now redirects to a project page with full installation, configuration and usage instructions. SearchLink v2.3.65 Download SearchLink v2.3.65 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 01/16/24. Changelog Donate More info",
"keywords": ["affiliate","amazon","business","itunes","marketing","affiliate","amazon","automator","changelog","donate","download","markdown","published","searchlink","updated","added","affiliate","again","allow","another","array","clarity","clicking","configuration","conventions","creating","creation","creative","double","editor","examining","itunes","installation","instructions","involves","leaving","links","little","looks","lunchtime","naming","original","partner","parts","program","project","redirects","return","script","search","searches","service","setup","straight","updated","usage","using","variable"]
},{
"title": "Sponsor: Wufoo",
"url": "/2013/03/28/sponsor-wufoo/",
"tags": [],
"date": "Mar 28th, 2013",
"ts": "1364468400",
"summary": "Wufoo ? Who? It s a web application that lets you build amazing online forms for your websites. They host everything. They build the backend. You get an easy, fun and fast way to collect and analyze data, and it even integrates with many payment systems. With Wufoo you get Over 200 pre-made templates themes from their form gallery Ability to customize branding with your own logo and themes to match Integration with over 50 web apps including WordPress, MailChimp, Basecamp, Stripe, etc. Support for beautiful typography with custom fonts and Typekit integration Just because you re working with forms and data doesn t mean you have to do it without personality or style. Gathering information from your users is exciting, why shouldn t your tools be exciting too? Experience the difference. Sign up for Free and get started with Wufoo today.",
"keywords": ["wufoo","ability","basecamp","experience","gathering","integration","mailchimp","sponsorship","stripe","support","syndicate","typekit","wordpress","wufoo","amazing","analyze","backend","beautiful","because","branding","build","collect","custom","customize","difference","doesn","everything","exciting","fonts","forms","gallery","including","information","integrates","integration","match","online","payment","personality","shouldn","started","style","systems","templates","themes","today","tools","typography","users","websites","working"]
},{
"title": "SearchLink gets a little smarter",
"url": "/2013/03/27/searchlink-gets-a-little-smarter/",
"tags": ["macos","markdown","searchlink","service"],
"date": "Mar 27th, 2013",
"ts": "1364420340",
"summary": "I find SearchLink to be one of my most useful Services to date. I don t even use the Auto-Link command from the Markdown Service Tools anymore. In case you haven t seen it yet, it allows you to quickly enter simple markers in your text and then automatically run various types of web searches and insert the top result as a Markdown link automatically. It saves a ton of time when you re linking lists of apps, adding definitions, referencing iTunes and Last.fm artists and much more. The only problem I ve run into is if I run it once on a block of text, then again on another block of text, I get overlapping reference markers in my Markdown. This update fixes that. The installation and usage are the same, and you can find all of the instructions and documentation on the original SearchLink post . The only difference is that it now adds a random 4-digit string before the reference titles in addition to checking to make sure it s not overlapping any existing markers. The 4-digit string will be the same for all of the links created at the time it s run, but the next run will create a new prefix. The numbers are followed by a dash and a counter so it s easy to visually find the related link in the text if you need to make corrections. You can disable this prefixing, if you want to, by opening the Service in Automator and setting the variable at the top of the script to . SearchLink v2.3.65 Download SearchLink v2.3.65 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 01/16/24. Changelog Donate More info",
"keywords": ["apple","iphone","itunes","markdown","store","automator","changelog","donate","download","markdown","published","searchlink","service","services","tools","updated","adding","again","allows","another","anymore","artists","automatically","before","block","checking","command","corrections","create","created","definitions","difference","digit","disable","editor","enter","fixes","followed","haven","itunes","installation","instructions","leaving","linking","links","lists","markers","numbers","opening","original","overlapping","prefix","prefixing","problem","quickly","random","referencing","related","saves","script","searches","setting","simple","string","titles","types","usage","useful","variable","various","visually"]
},{
"title": "Systematic #37 with Jonathan Snook",
"url": "/2013/03/26/systematic-number-37-with-jonathan-snook/",
"tags": ["podcast","systematic"],
"date": "Mar 26th, 2013",
"ts": "1364353680",
"summary": "I was extremely happy to host Jonathan Snook (a.k.a. Snook ) on Systematic today. I ve been following his work for over a decade, and it was great to chat with him about career paths, using Github as a portfolio and some great top picks for web developers (and Archer fans). A big thanks to Jonathan for taking the time out to record this one. Check out episode 37 on 5by5!",
"keywords": ["github","jonathan","podcast","snook","studios","archer","check","github","jonathan","snook","systematic","career","decade","developers","episode","great","happy","paths","picks","portfolio","record","taking","thanks","today","using"]
},{
"title": "The first apps on my new Mac",
"url": "/2013/03/26/the-first-apps-on-my-new-mac/",
"tags": ["macos"],
"date": "Mar 26th, 2013",
"ts": "1364346000",
"summary": "I spent my free time over the last week setting up a new Macbook Air. Given my constant experimentation with OS X, I build up a lot of mistakes over time. I decided to do this install from the ground up and avoid porting legacy garbage into a new machine. These are my notes from the setup. I know that tools like Boxen and others can automate a lot of this. They re primarily for mass-installs, though, and my needs change too frequently to ever really script this process. It s something I only do every couple of years and my list of apps, settings and tweaks is almost entirely different each time I do it. Before I begin, some tricks I ve learned for making this process easier. The best tip I can offer is to keep notes on your setup as it changes. This makes the whole process require 90% less thought and lets you get right down to the drudgery of building an awesome system from scratch. Keep notes in text files (or nvALT) and when it s time to get going, copy them into Apple s Notes app so they ll be instantly available once you ve signed in with an Apple ID on a fresh Mountain Lion (or newer) install. Next, put your portable settings and preferences into Dropbox and symlink the files to their locations as needed. Settings that you re accustomed to on one machine often translate to a new machine without any modification. Sublime Text, iTerm, Bash, Moom, etc. all have their preference files stored in my Dropbox and symlinked to their appropriate locations on each machine. This is often a PLIST file linked into , but sometimes an entire folder or subfolders. I use a Dropbox folder called Sync for all of these, with sub-folders for each app. Setting up most apps on a new machine is just a matter of a lot of (symlinking) for me. Lastly (and you should be doing something like this anyway), store all your serial numbers, license files and download info for every app in 1Password . The App Store takes care of half of this battle, but for all of your apps that weren t purchased through Apple s App Store, keep a copy of the license code, any key files and the download link in one place. I highly recommend 1Password for this purpose. There are other apps that handle this specific case, but having it all in 1Password means that I only have to sync one keychain file to get all of my licenses and my passwords at once. Note that you can copy the actual license files and url handler links into 1Password for apps that support them, making registering apps as you",
"keywords": ["apple","appstore","acorn","adium","airfoil","alfred","apple","bartender","before","boxen","caffeine","cobook","decent","delibar","disable","dropbox","droplr","duckduckgo","either","fantastical","first","function","google","hazel","hyper","image","keybindings","keyboard","lastly","launch","launchcontrol","launchbar","macbook","magic","mailplane","markdown","maybe","modifer","mountain","notes","omnifocus","plist","password","preferences","propane","quicksilver","reeder","search","searchlink","searcher","service","setting","settings","silver","simplify","spotify","store","sublime","system","taskpaper","terminal","textexpander","tools","totalfinder","tweetbot","utilities","xcode","accessing","account","accustomed","ahead","aliases","almost","anyway","apple","automate","available","avoid","awesome","basic","battle","begin","between","breeze","build","building","called","change","changes","click","clicking","comes","comfortable","components","configure","consider","constant","couple","decided","desktop","different","documents","doing","double","download","drudgery","duckduckgo","easier","effort","enough","enter","entire","entirely","everybody","excellent","experimentation","facilitates","files","finding","first","folder","folders","fresh","function","functioning","garbage","gemset","going","ground","handle","handler","having","highly","homebrew","https","iterm","ideas","information","inspiration","install","installed","installs","instantly","keychain","laborious","learned","legacy","license","licenses","linked","links","locations","machine","makes","making","mistakes","needed","needs","newer","notebook","notes","numbers","nvalt","offer","often","others","passwords","poison","portable","porting","preference","preferences","primarily","process","purchased","rebuild","recent","recommend","registering","right","running","scratch","script","scripts","search","serial","setting","settings","setup","shared","signed","snippets","sometimes","specific","spent","steps","store","stored","subfolders","support","symlink","symlinked"]
},{
"title": "MacVoices #1399",
"url": "/2013/03/26/macvoices-number-1399/",
"tags": ["macjury","macvoices","podcast"],
"date": "Mar 26th, 2013",
"ts": "1364322180",
"summary": "I was honored to join the last MacJury with Chuck Joiner , Dori Smith , and Peter Cohen . We talked about Mailbox and Dropbox, RSS and Google Reader and a bit about Kevin Lynch and Apple. It was a great conversation with some people smarter than me, and it was really fun to be a part of. Thanks to Chuck Joiner for the invite and to the rest of the panel for taking it easy on me for my first appearance. Check it out at MacVoices.",
"keywords": ["adobe","apple","google","kevinlynch","mailbox","reader","systems","apple","check","chuck","cohen","dropbox","google","joiner","kevin","lynch","macjury","macvoices","mailbox","peter","reader","smith","thanks","appearance","conversation","first","great","honored","invite","panel","people","smarter","taking","talked"]
},{
"title": "Web Excursions for March 25, 2013",
"url": "/2013/03/25/web-excursions-for-march-25-2013/",
"tags": ["appstore","bookmarks","javascript","macappstore","popclip"],
"date": "Mar 25th, 2013",
"ts": "1364225400",
"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Superhero.js A curated collection of very informative and useful articles on JavaScript. dtrx: Intelligent archive extraction Do The Right Extraction : it s on steroids. I love that it handles archives that didn t put everything in a folder: it creates the folder automatically so you don t have stuff all over the folder you were working in. Haven t tested yet, hoping it works fine on BSD. [via OneThingWell ] App Store Quickview I ve been using this a lot as I explore the App Store (which I do all too frequently). It loads up the web preview for any app that you hover over, preventing you from having to click in, click back and re-scroll. It s a huge timesaver considering the terrible speed at which the App Store loads pages. Turning the Link Bundler into a PopClip extension Turn the bit.ly Link Bundler into a PopClip extension for bundling with even fewer clicks. Daily tip: Search notes with Siri I ve been using Siri more and more (and really enjoying it). I don t make heavy use of the Notes app, but for the things I do stick in there, these are some handy tips from Dave Caolo. 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","caolo","iphone","javascript","store","backblaze","bundler","caolo","check","daily","extraction","haven","intelligent","javascript","notes","onethingwell","popclip","quickview","right","search","store","superhero","turning","affordably","archive","archives","articles","automatically","backs","brought","bundling","click","clicks","cloud","collection","computer","considering","creates","curated","enjoying","entire","everything","excursions","explore","extension","extraction","fewer","folder","handles","handy","having","heavy","hoping","hover","informative","loads","notes","pages","partnership","preventing","preview","reliably","scroll","securely","speed","steroids","stick","stuff","terrible","tested","timesaver","today","useful","using","working","works"]
},{
"title": "nvALT 2.2β 104",
"url": "/2013/03/24/nvalt-2-point-2-beta-104/",
"tags": ["nvalt"],
"date": "Mar 24th, 2013",
"ts": "1364137200",
"summary": "I ve just pushed nvALT 2.2 104 to the server. It should be available for all current users of the 2.2 beta under Check for Updates. If you re not currently using the beta, you ll need to download and update directly using the link below. Note that we re no longer supporting previous versions despite the beta label, it s more stable than 2.1 is right now. This should be the final beta release before an official 2.2 version. One of the main new features in 104 is Simperium sync . This replaces the older Simplenote API and should provide super-stable note sync with Simplenote. The only caveat is that if you have very large notes (400k+), you may have sync on those notes rejected by Simperium. If that s the case, you should stick with Dropbox sync. For most users, though, this upgrade should alleviate prior issues with Simplenote and I can once again say it s a good option for cross-platform synchronization. As a side note to developers, the Simperium API requires an API key that we re not distributing with the source (which is now updated on the master branch). To build locally, you need to obtain a key (instructions in the source code) and copy the SimperiumConfig-example.h file to SimperiumConfig.h. Edit it to point to your own key. I ve also added a Preview in Marked command. It s in the menus, but is easiest to access with Control-Command-M (C6;M). It will save the current state of the note and open it in Marked. Marked will remain in the background so that you can keep editing without switching back and forth. There are several other tweaks and bugfixes in this release. See the full release notes for more information. 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 More info If you need to revert while we solve any issues, the 101 beta is available here .",
"keywords": ["dropbox","interface","programming","simperium","simplenote","changelog","check","command","control","donate","download","dropbox","markdown","marked","multimarkdown","notational","preview","published","simperium","simperiumconfig","simplenote","updated","updates","velocity","access","added","advanced","again","available","background","before","below","branch","bugfixes","build","capabilities","caveat","command","compatibility","cross","developers","directly","distributing","download","easiest","editing","example","features","forth","information","instructions","issues","label","locally","longer","master","menus","missing","notes","nvalt","official","older","platform","point","preview","pushed","rejected","release","replaces","requires","restore","revert","right","server","several","solve","source","stable","stick","stuff","super","supporting","switching","synchronization","tweaks","under","updated","upgrade","users","using","version","versions","while"]
},{
"title": "Mac Hacks from O'Reilly",
"url": "/2013/03/23/mac-hacks-from-oreilly/",
"tags": [],
"date": "Mar 23rd, 2013",
"ts": "1364074140",
"summary": "By the way, I wrote some chapters in Chris Seibold s new book of Mac Hacks. 1 Without this footnote, this would be my shortest post ever. This isn t because the book doesn t deserve more praise, it s because I m lazy, it s Saturday and the house is quiet. If I spent too long writing this post, it would come out of my time reading by the fire and drinking Irish coffee (because someone forgot to tell Mother Nature about Spring this year). The book is really good and full of stuff I didn t know, which is for me a good sign that it s a worthwhile investment. Go get it .",
"keywords": ["chris","hacks","seibold","chris","hacks","irish","mother","nature","saturday","seibold","spring","because","chapters","coffee","deserve","doesn","drinking","footnote","forgot","house","investment","praise","quiet","reading","shortest","spent","stuff","worthwhile","writing","wrote"]
},{
"title": "Markdown, the book",
"url": "/2013/03/23/markdown-the-book/",
"tags": ["books","markdown"],
"date": "Mar 23rd, 2013",
"ts": "1364058000",
"summary": "In case you haven t heard, my friends David Sparks and Eddie Smith have released another book in David s Field Guide series: Markdown . With 130 pages and 27 screencasts, plus audio interviews with myself, Merlin Mann, Fletcher Penney, Federico Viticci, and Gabe Weatherhead, it s pretty well packed with information on basic and advanced Markdown, as well as Markdown workflows and how to put it to use for you. The book in all of its multimedia glory is available for iPad on the iBookstore ($9.99 US). There s also a PDF version for those without iPads, but if you have one, definitely get the iBook version.",
"keywords": ["eddie","federico","ibook","markdown","merlin","smith","viticci","david","eddie","federico","field","fletcher","guide","markdown","merlin","penney","smith","sparks","viticci","weatherhead","advanced","another","audio","available","basic","definitely","friends","glory","haven","heard","ibook","ibookstore","ipads","information","interviews","multimedia","myself","packed","pages","released","screencasts","series","version","workflows"]
},{
"title": "Auto-Tagging Jekyll posts with Zemanta",
"url": "/2013/03/23/auto-tagging-jekyll-posts-with-zemanta/",
"tags": ["jekyll","tagging","zemanta"],
"date": "Mar 23rd, 2013",
"ts": "1364043600",
"summary": "More for the purposes of associating posts and building my custom search engine, but also for SEO, I ve been adding semantic keywords to my Jekyll posts. The result is similar to my old AutoTag bundle for the TextMate blogging bundle. It creates a keyword block for my post in addition to my curated tags which contains top-level topics and can be used in Open Graph keywords, keyword meta and for search and related post association during site generation. I keep my keyword YAML separate from tags because I use it in different ways under different circumstances. In your templates you can easily choose to combine them or use them separately, so there s no harm in having the extra header. This post details the process of adding keywords to new posts. I also used the same technique to back-catalog all of my previous posts. I use a service called Zemanta to analyze my content and determine the appropriate tags. It s very good, but sometimes still requires a bit of manual editing after I run it. It s still faster than doing it by hand. To get started you ll need an API key. Don t worry, for your purposes this is entirely free. Create an account at Zemanta, then register an application to get the API key. Now you can easily pass your post content to Zemanta and get back an easy-to-parse array. I run this as part of my publish task, which moves a post from into and adds this kind of meta to the YAML. The script below illustrates this section. It extracts the YAML headers from the post, adds the keywords and sticks the headers back in. Insert your Zemanta API key at line 7 where the Zemanta.new object is created. To test, you can point Rake at a post and add keywords by running . Now you can utilize the Keywords payload in whatever way you like. I use them, for example, in my Open Graph headers. In I have a line: So, if the page has keywords on it, it runs this from my plugins folder: Lastly, I include them in the JSON file I use for my site search (still in progress ). Hopefully some Jekyll users will find this useful. Note that the tags returned by Zemanta are generally 90% correct with a couple of superfluous tags that won t hurt but could be removed.",
"keywords": ["engine","graph","jekyll","keywords","optimization","protocol","search","zemanta","autotag","create","graph","hopefully","jekyll","keywords","lastly","rakefile","textmate","zemanta","account","adding","analyze","array","associating","association","because","below","block","blogging","building","bundle","called","calls","catalog","choose","circumstances","contains","content","couple","covering","created","creates","curated","custom","details","different","doing","easily","editing","engine","entirely","example","extra","extracts","faster","folder","generally","generation","hashbang","having","header","headers","illustrates","install","keyword","keywords","level","manual","moves","object","parse","payload","plugins","point","posts","process","publish","register","related","removed","requires","returned","running","script","search","section","semantic","separate","separately","service","similar","sometimes","started","sticks","superfluous","system","technique","templates","topics","under","useful","users","utilize","whatever","where","worry","zemanta"]
},{
"title": "iOS App Review: Pinbrowser",
"url": "/2013/03/22/ios-app-review-pinbrowser/",
"tags": ["appreview","iphone"],
"date": "Mar 22nd, 2013",
"ts": "1363971600",
"summary": "A relatively new app called Pinbrowser highlights the social aspect of bookmarking on the Antisocial Bookmarking platform, Pinboard . It allows you to quickly browse other people s public bookmarks by user, tag or popularity, right on your iPhone. If you use Pinboard as a source of lesser-known news, information and app links as some of your favorite bloggers do Pinbrowser is a great way to distill your favorite topics and links from trusted users into an easy-to-digest list. Send bookmarks of interest to Twitter, other Pinboard apps or to apps such as Instapaper or Pocket for later examination. Pinbrowser is a simple, one-thing-well type of app with great possibilities for information gathering. It s only 0.99 US on the iTunes App Store.",
"keywords": ["bookmarks","instapaper","iphone","pinboard","store","antisocial","bookmarking","center","instapaper","launch","pinboard","pinbrowser","pocket","store","twitter","allows","aspect","bloggers","bookmarking","bookmarklets","bookmarks","browse","callback","called","digest","distill","examination","favorite","gathering","great","highlights","iphone","itunes","information","interest","later","lesser","links","people","platform","popularity","possibilities","public","quickly","relatively","right","simple","social","source","supports","topics","trusted","users"]
},{
"title": "Sponsor: Xero - Your numbers never looked so beautiful",
"url": "/2013/03/21/sponsor-xero-your-numbers-never-looked-so-beautiful/",
"tags": [],
"date": "Mar 21st, 2013",
"ts": "1363863600",
"summary": "Special thanks to Xero for sponsoring BrettTerpstra.com this week. Xero is online accounting software that s simple, beautiful and smart. With Xero, your financial data is displayed visually on the dashboard so you get a clear picture of your finances anywhere, anytime, on any device. It connects to your bank, and with over a hundred apps such as Harvest, Batchbook Quoteroller, to give you all the information you need to run your business without any manual data entry. Xeros online so you can start using it right away, no need for installation or updates you re always using the latest version. For your free trial or to find out more, visit xero.com/creatives . Sign up to Xero before June 30, 2013 and get 60 days free.",
"keywords": ["accounting","business","finance","small","batchbook","brettterpstra","harvest","quoteroller","special","sponsorship","syndicate","xeros","accounting","anytime","anywhere","beautiful","before","business","clear","connects","creatives","dashboard","device","displayed","entry","finances","financial","hundred","information","installation","latest","manual","online","picture","right","simple","smart","software","sponsoring","thanks","trial","updates","using","version","visit","visually"]
},{
"title": "nvALT Tag Search for Alfred 2 update",
"url": "/2013/03/18/nvalt-tag-search-for-alfred-2-update/",
"tags": ["alfred","nvalt","search","tagging"],
"date": "Mar 18th, 2013",
"ts": "1363617660",
"summary": "I ve had several people report that the nvALT Tag Search workflow for Alfred 2 hasn t been working for them. I just updated the download with version 1.1. It removes some of the criteria for the file filter and hopefully generalizes the search enough to work for more people. Please be sure to open the workflow and double-click the File Filter input in the workflow. Under Search Scope you need to make sure it points to the folder where you store your text files. Related: you have to have your database stored as text files. Hope this helps, it s a really handy tool when it works. Update: I just uploaded version 1.2, which fixes the .ext appearing in non- md file searches. It should work with any extension now. nvALT Tag Search for Alfred 2 v1.2 Download nvALT Tag Search for Alfred 2 v1.2 A workflow for Alfred 2 that searches your nvALT folder by tag only Published 03/15/13. Updated 03/15/13. Changelog Donate More info",
"keywords": ["dropbox","locator","management","managers","resource","workflow","alfred","changelog","donate","download","filter","published","related","scope","search","under","updated","appearing","click","criteria","database","double","download","enough","extension","files","filter","fixes","folder","generalizes","handy","helps","hopefully","input","nvalt","people","points","removes","report","search","searches","several","store","stored","updated","uploaded","version","where","workflow","working","works"]
},{
"title": "nvALT Tag Search for Alfred 2",
"url": "/2013/03/17/nvalt-tag-search-for-alfred-2/",
"tags": ["alfred","scripting","tagging"],
"date": "Mar 17th, 2013",
"ts": "1363525200",
"summary": "While dinking around with Alfred 2 , I came up with something kind of handy. It s a workflow containing just a file filter which constrains the search to your nvALT folder and searches only by OpenMeta tags, and a shell script that opens the file in nvALT. It requires that you store your database as text files (you should be doing that anyway, more on that soon). Just adjust the file filter to point to your own folder and it should be good to go. The default keyword is . Just enter it followed by a space and the name of your tag to start searching. I m especially excited about the fact that you can return XML responses to Alfred, primarily because it means you can create dialogs. Combined with the workflow system, that means you could return a list of results, ask for confirmation and act accordingly. Pretty cool, and I think I might be posting some more complex actions as time allows. nvALT Tag Search for Alfred 2 v1.2 Download nvALT Tag Search for Alfred 2 v1.2 A workflow for Alfred 2 that searches your nvALT folder by tag only Published 03/15/13. Updated 03/15/13. Changelog Donate More info",
"keywords": ["alfred","script","shell","workflow","alfred","changelog","donate","download","openmeta","published","search","updated","while","actions","adjust","allows","anyway","because","complex","confirmation","constrains","containing","create","database","default","dialogs","dinking","doing","enter","especially","excited","files","filter","folder","followed","handy","keyword","nvalt","opens","point","posting","primarily","requires","responses","results","return","script","search","searches","searching","shell","space","store","system","think","workflow"]
},{
"title": "A Link Bundler Service for Bit.ly",
"url": "/2013/03/16/a-link-bundler-service-for-bitly/",
"tags": ["bitly","service"],
"date": "Mar 16th, 2013",
"ts": "1363438800",
"summary": "I like link bundlers. They allow me to share multiple urls with people in a way that s convenient for me and the person receiving them. My former standby was Linkbun.ch , but they re getting old and I m not sure how much longer it will be around. Bit.ly added Bundles back in 2010, and more recently added API access to them. I figured I d give it a shot. This Service is the result of the experiment. With a little configuration, it allows you to select any amount of text containing urls and click a button to create a Bit.ly bundle for simple sharing of as many links as you want, with just one url to send out. The installation takes a bit of effort, but it s not too bad. You can install the Service by unzipping it and double-clicking the .workflow file. A dialog will pop up asking if you want to install it or open it in Automator. We want to open it in Automator first because we need to make a small edit. Next, you need an API key. Set up a bit.ly account if you don t have one Log in to your Bit.ly account Go to http://dev.bitly.com/myapps.html Click Manage my apps and enter your password Copy the Generic Access Token Go back to the workflow open in Automator Scroll down to the first Run Shell Script action Find the line at the top that looks like: Paste your key between the single quotes and save Close the file, go back to where you opened it from and double click it again, this time choosing the Install option. If you want to add a shortcut key for this, see my how-to , or get the Services Manager 1 . Just select any text that contains full urls within it. Link Bundler will scan the text, pick out the links, and create a Bit.ly bundle for you. It will pop up a dialog at the end with your link, and offer to open it in your default browser. It s quite handy on its own, but also serves as an example for usage. Feel free to pick the main script apart (even though it s a bit messy right now). You could add link shortening to the output link, which would also give you analytics on shared bundles. The API would also make it pretty easy to set up actual oAuth sign-in and build a table-based app for bundle creation and editing. Not sure how much use that would be, but for some reason it s on my project list. Link Bundler Service v1 Download Link Bundler Service v1 An OS X System Service that scans text for urls and creates a Bit.ly bundle from them Published 03/15/13. Updated 03/15/13. Changelog Donate More info I",
"keywords": ["automator","click","double","finder","interface","locator","programming","resource","script","shell","access","automator","bundler","bundles","changelog","click","close","configuration","donate","download","generic","install","installation","linkbun","manager","paste","preferences","published","script","scroll","service","services","shell","swoon","system","token","updated","usage","ability","access","account","action","added","again","allow","allows","amount","analytics","apart","asking","based","because","between","bitly","browser","build","bundle","bundlers","bundles","button","choosing","click","clicking","configuration","containing","contains","context","convenient","create","creates","creation","default","dialog","double","editing","effort","enter","example","experiment","figured","first","former","getting","gives","handy","highly","install","installation","links","little","longer","looks","messy","multiple","oauth","offer","opened","output","password","people","person","project","putting","quick","quotes","receiving","recently","recommend","right","scans","script","search","serves","service","services","share","shared","sharing","shortcut","shortening","simple","single","small","standby","table","takes","unzipping","usage","using","where","within","workflow","works"]
},{
"title": "Web Excursions for March 15th, 2013",
"url": "/2013/03/15/web-excursions-for-march-15th-2013/",
"tags": ["bookmarks"],
"date": "Mar 15th, 2013",
"ts": "1363371120",
"summary": "Web excursions brought to you in partnership with CleanMyMac X , all the tools to speed up your Mac, in one app. Active Markdown: an experiment Very cool idea using variables and formula within Markdown documents, with a Tangle type of interface for live adjustment. I don t have a practical use for this right now, but it s highly intriguing. [via Noah Paessel ] New user interface for ExpanDrive 3/Mac A long-time favorite of mine got a much-needed makeover. Google, destroyer of ecosystems This is a great piece by Aldo Cortesi regarding Google s exit of the RSS marketplace and why they never should have been there to begin with. ranger A nifty file manager for Terminal. Browse directory trees, edit, preview, open, copy and remove files and more, all with a visual interface. [via Larry Hynes ] blink(1) from thingm Just got two of these in the mail and am having a blast. It s a USB alert light with full spectrum control over the color, fading and blinking. You can control it from the command line, with scripts or via IFTTT . Read Quick for iPad Learn to speed read with stories from your own feeds. I haven t tried it yet, but Rob Corddry was into it enough to ask me to revise his Top 3 picks on the last Systematic . While that s not going to happen, I will link it.",
"keywords": ["corddry","google","ifttt","manager","markdown","reader","twitter","active","browse","cleanmymac","corddry","cortesi","expandrive","google","hynes","ifttt","larry","learn","markdown","paessel","quick","systematic","tangle","terminal","while","alert","begin","blast","blink","blinking","brought","color","command","control","destroyer","directory","documents","ecosystems","enough","excursions","experiment","fading","favorite","feeds","files","formula","going","great","happen","haven","having","highly","interface","intriguing","light","makeover","manager","marketplace","needed","nifty","partnership","picks","piece","practical","preview","ranger","remove","revise","right","scripts","spectrum","speed","stories","thingm","tools","trees","tried","using","variables","visual","within"]
},{
"title": "More command line handiness",
"url": "/2013/03/14/more-command-line-handiness/",
"tags": ["scripting","terminal"],
"date": "Mar 14th, 2013",
"ts": "1363280400",
"summary": "This first one is a simple, universal shortcut for getting lists of files inside of various archive formats. Not that it s terribly hard to do (), but why not just create one command to rule them all (and make it really short)? This is inspired by the function, which does similar for extracting files. I don t know offhand who to credit with that, but you can find it in the bash-it distribution. Put that in your and next time you want to know what s in an archive, just type (think list zip ). It currently works with zip and tar (including gzip, and bzip) files. Plenty of room to add more filetypes if you have other compression/archiving formats. This one is mostly in Ruby because I go down rabbit holes any time I start playing with and . It s an alias that lets you scan running processes and quickly find the pid and name. It accepts a partial, case-insensitive search string, or you can use regex (grep extended), like this: to match growl but not growlhelper. I use a similar trick for quickly finding and killing processes with an interactive menu called fk . I love this one. It opens the current directory or a specified file in LaunchBar, ready for action. Hit tab and you can quickly copy, move, run a Service on it, open it in an app whatever s handy. If you use Gist and the command line, you probably have jist installed. If not, run and make your life easier. This extremely short alias is great for popping a clipboard straight to a public gist and opening the link in your browser. batch changes the extension of all of the specified files in a directory. It takes two arguments, first the original extension, then the extension to replace it with. For example will turn a directory of HTML files into PHP files. Magic. I had to give this one a longer name because I don t use it so often that I would remember a clever short one. + TAB is easy enough for me to find this when I need it. This last one isn t anything new, but it s extremely useful (at least for web developers), so I figured I d mention it. It calls , the command line interface for Quick Look, and opens a Quick Look preview of whatever file you run it on. Someday I ll actually get my entire dotfile setup onto GitHub, but don t hold your breath.",
"keywords": ["archive","command","computer","github","interface","launchbar","quick","github","launchbar","magic","plenty","quick","service","someday","accepts","action","alias","archive","archiving","arguments","batch","because","breath","browser","called","calls","changes","chgext","clever","clipboard","command","compression","create","credit","developers","directory","distribution","dotfile","easier","enough","entire","example","extended","extension","extracting","figured","files","filetypes","finding","first","formats","function","getting","great","growl","growlhelper","handy","holes","including","insensitive","inside","inspired","installed","interactive","interface","killing","lists","longer","match","mention","mostly","offhand","often","opening","opens","original","partial","pbgist","playing","popping","preview","processes","psgrep","public","quickly","rabbit","ready","regex","remember","replace","running","search","setup","short","shortcut","similar","simple","stick","straight","string","takes","terribly","think","thought","trick","tricks","universal","useful","various","whatever","works"]
},{
"title": "Sponsor: New Relic",
"url": "/2013/03/14/sponsor-new-relic/",
"tags": [],
"date": "Mar 14th, 2013",
"ts": "1363258800",
"summary": "A big thanks to New Relic for sponsoring BrettTerpstra.com this week. Competition is continuing to heat up for mobile apps. With over 1.5 million apps available in the Apple App Store and Google play, you ve really only got one chance to make a good impression. So when there s a problem, you want to know as it s happening, before it affects your end users. New Relic for Mobile Apps is the only performance management tool on the market to provide real-time visibility into native mobile apps. And it s seamlessly integrated with New Relic s existing monitoring service to provide the most comprehensive, end-to-end view of your web operations and environment. Get actionable data, in real time, based on real user experiences, mobile device performance, geographic location and much more. Going forward without New Relic s critical insight into apps on iOS and Android is not an option.",
"keywords": ["android","device","google","management","mobile","performance","relic","store","android","apple","brettterpstra","competition","going","google","mobile","relic","sponsorship","store","syndicate","actionable","affects","available","based","before","chance","comprehensive","continuing","critical","device","environment","experiences","geographic","happening","impression","insight","integrated","location","management","market","million","mobile","monitoring","native","operations","performance","problem","seamlessly","service","sponsoring","thanks","today","trial","users","visibility"]
},{
"title": "Slogger update and BlogLogger fix",
"url": "/2013/03/13/slogger-update-and-bloglogger-fix/",
"tags": ["logging","slogger","social"],
"date": "Mar 13th, 2013",
"ts": "1363197600",
"summary": "Slogger has had a couple of small but important updates this week. You can update from GitHub manually or using (if that s how you installed it). You can overwrite everything, but if you ve customized your plugin setup, you ll need to move plugins around again to enable/disable them, overwriting with the new versions. 1 BlogLogger now handles errors more gracefully, works with a broader range of feed types (including Atom) and is finally working on my Jekyll blog again. I went ahead and moved the updated plugin to the stable branch, but if you run into any trouble, please let me know . BlogLogger will now also convert any embedded YouTube or Vimeo videos into a format that Day One can preview automatically. It s finally making use of the great feature the Day One folks added a while back! TwitterLogger now handles retweets. See your config file for the new option after the first time you run it. That is all. In order to preserve your configuration, copy the files into folders manually instead of overwriting the whole folder. You can also just copy your file out, replace the folder, move any plugins necessary and put back in place.",
"keywords": ["configuration","github","opensource","youtube","bloglogger","enjoy","github","jekyll","retweets","slogger","twitterlogger","vimeo","youtube","added","again","ahead","automatically","branch","broader","config","configuration","convert","couple","customized","disable","embedded","errors","everything","feature","files","finally","first","fixes","folder","folders","folks","format","gracefully","great","handles","important","including","installed","issues","making","manually","moved","necessary","overwrite","overwriting","plugin","plugins","preview","range","replace","report","retweets","setup","small","stable","support","trouble","types","updated","updates","using","versions","video","videos","while","whole","working","works"]
},{
"title": "An in-progress custom site search project",
"url": "/2013/03/13/in-progress-site-search/",
"tags": ["scripting","search","semantic"],
"date": "Mar 13th, 2013",
"ts": "1363180320",
"summary": "I m writing about a project that s not finished, might never be and is probably of little interest to most people. This post is basically journaling a milestone, but you can see the project in action right now. I ll show you in a minute. I ve been pondering for a while how to best surface my older content. Most of what I write is evergreen, with little relation to anything else happening at the time and relevant for long periods. Blogs aren t built that way, though, and anyone who s ever tried digging through archives knows it s a pain. So we rely on Google (and NerdQuery ), which is pretty good, but I really wanted to come up with a way to help people dig into my own content once they got here. I ve been through a few permutations of a tag-based site search, but nothing that really seemed to add much value. My latest experiment seems to be my best attempt yet, though it has a way to go yet. First, go check out the latest incarnation in the Archives section . Type a topic (markdown, applescript, service tools, etc.) into the search box and get instant results on the page. The results are based on a TextMate-style string match of the title, tags and a distillation of keywords in the content using some homebrew semantic analysis. The database is a JSON file I generate with a few custom Jekyll filters and a template when my site builds. The search and sorting is all client-side right now, meaning it happens in your browser instead of on the server. This is not a good idea. I m reworking the same concept in a CGI, which will allow more advanced analysis and sorting without choking the browser. In essence, I m just building my own API that I can pull from locally, add the information I consider relevant and present the results however I please. The current implementation creates a div on the Archives page, but the script could be used on any page. Any time you typed in the search field, the page would just turn into search results, or a popup would appear, filtering as you type. Searchpath uses a similar implementation. I really should just give up and use it instead, but I m stubbornly working on this as a pet project. I m hoping that once I have the mechanics worked out, doing some more advanced fuzzy matching and topic relationships will be an easy step. I ll also be adding autocomplete, but I need to think about the most useful implementation for that. I d love an autocomplete that beyond just completing known words would offer semantically",
"keywords": ["archive","engine","engines","google","search","textmate","archives","blogs","first","google","jekyll","nerdquery","search","searchpath","since","textmate","accurate","action","adding","advanced","allow","anyone","appear","applescript","archives","autocomplete","based","beyond","browser","building","builds","built","check","choking","client","completing","concept","consider","content","creates","custom","database","definitely","digging","distillation","doing","essence","evergreen","experiment","feature","field","filtering","filters","finished","fuzzy","happening","happens","homebrew","hoping","however","ideas","implementation","incarnation","information","instant","instantly","interest","journaling","keywords","knows","latest","little","locally","markdown","match","matching","maybe","meaning","mechanics","milestone","minute","nobody","nothing","offer","older","people","periods","permutations","pondering","popup","project","reads","related","relationships","relevant","results","reworking","right","script","search","section","seemed","seems","semantic","semantically","server","service","sidebar","sieve","sifter","similar","sorting","string","stubbornly","style","suggestions","surface","template","think","through","title","tools","topic","tried","typed","useful","using","value","wanted","while","words","worked","working","write","writing"]
},{
"title": "More Markdown for PopClip",
"url": "/2013/03/12/more-markdown-for-popclip/",
"tags": ["extension","markdown","popclip","service","tools"],
"date": "Mar 12th, 2013",
"ts": "1363137720",
"summary": "I wrote a few new PopClip extensions over the weekend. There were several features from the Markdown Service Tools that I thought would be really handy to have right after making a mouse selection. The first one is an extension to turn lines of text into Markdown bullet items. Indentation is handled as nested lists and existing markers are overwritten (so a numbered list converts to a bullet list). I frequently type quick notes on single lines and then later add formatting, so this is already being used quite a bit on my system. It s also handy when copying lists from websites and pasting to plain text as they lose their formatting in the process. BulletList isn t just for bullet lists, though. Holding option while clicking the extension in the PopClip popover will create/update a numbered list instead. If it s run on an already-numbered list, it will update ( fix ) the ordering in the list. This is only here if you want a separate button for numbered lists. I made it before I decided to add the option-key feature to BulletList. It does exactly the same thing as Option-clicking the BulletList extension. If that s natural for you, don t install the extra extension. This one turns indented text into a nested Markdown block quote. It reads the indentation of the text and determines the level of block quoting to apply. I really came up with creative names for these, didn t I? This will, as you guessed, turn selected text into Markdown code. Here s the cool part, though: if your selection is within a paragraph, it will turn it into inline code. If it s multiple lines, it will create a code block. When creating an inline code block, it will also detect whitespace at the beginning and end of the selection and make sure that it s excluded from the surrounding backticks. This one also differs from the Service Tools slightly. Instead of just moving everything out one tab or four spaces, it takes the line closest to the left edge, fully outdents it and then applies the outdent to any nested lines in the selection, maintaing indentation. It really had to be this way, as making a selection repeatedly is far less convenient than adding a shortcut to a service and hitting a hotkey a couple of times. The extensions are up on Github . The download below has these extensions as well as the last few all packaged up and ready to install (I think, let me know if it doesn t work). Brett's PopClip Extensions v1.45.2 Download Brett's PopClip Extensions v1.45.2",
"keywords": ["block","bulletlist","bullets","github","indentation","markdown","quotation","wordpress","blockquote","brett's","bulletlist","changelog","donate","download","extensions","github","holding","indentation","markdown","numberedlist","outdent","popclip","published","service","tools","updated","adding","applies","apply","backticks","before","beginning","below","block","bullet","button","clicking","closest","convenient","converts","copying","couple","create","creating","creative","decided","detect","determines","differs","doesn","download","everything","excluded","extension","extensions","extra","feature","features","first","formatting","fully","guessed","handled","handy","hitting","hotkey","indentation","indented","inline","install","items","later","level","lists","maintaing","making","markers","mouse","moving","multiple","names","natural","nested","notes","numbered","ordering","outdent","outdents","overwritten","packaged","paragraph","pasting","popover","process","quick","quote","quoting","reads","ready","repeatedly","right","selected","selection","separate","service","several","shortcut","single","slightly","spaces","surrounding","system","takes","think","thought","times","tools","turns","useful","websites","weekend","while","whitespace","within","writing","wrote"]
},{
"title": "Systematic #35 with Rob Corddry",
"url": "/2013/03/12/systematic-number-35-with-rob-corddry/",
"tags": ["podcast","systematic"],
"date": "Mar 12th, 2013",
"ts": "1363114140",
"summary": "That s right. Rob Corddry . He s was in my opinion one of the best correspondents the Daily Show ever had, and he s since done some amazing work. Did you ever see Hot Tub Time Machine? You really should. We talked about writing processes, especially pertaining to his current show, Children s Hospital. Apps, techniques, motivation and other details are all on the table. A huge thanks to Rob for making the time. It was awesome to chat! You can hear the episode at 5by5 .",
"keywords": ["american","brewster","broadcasting","childrens","company","corddry","daily","hospital","machine","paget","secret","service","states","studios","united","children","corddry","daily","hospital","machine","amazing","awesome","correspondents","details","episode","especially","making","motivation","pertaining","processes","right","since","table","talked","techniques","thanks","writing"]
},{
"title": "8 tips for no-touch flying: a completely serious survival guide to economy seating",
"url": "/2013/03/10/8-tips-for-flying-comfortably-in-economy-seating/",
"tags": ["personal","quicktip"],
"date": "Mar 10th, 2013",
"ts": "1362938400",
"summary": "I fly a fair amount. It s a necessary evil, I guess. Road trips are for teenagers and very tolerant parents of small children. Trains are slow and expensive. Walking is usually out of the question if there s a plane involved anywhere in the equation. So I fly. I also don t like touching people, especially for hours at a time when I m already annoyed about being stuck in economy class. I m not scared of germs or anything, I just get really tense when there s physical contact involved. Being tense means I can t sleep, and not sleeping on four-hour plane rides is not an option. These are notes compiled from my experiences over the last few years. I can t guarantee they ll work for anyone else. You have to have a certain personality type to pull most of them off. They usually work for me, but there are always edge cases. Sometimes spending four hours with your knee touching someone else s knee while squirming around the elbow they ve inconsiderately placed against your shoulder is inevitable. That s what drinks are for. 1. Get on the plane first. If you have the option, be sure to get to your seat before the others in your row. This will help with the next few steps. say things under your breath, roll your eyes and shake your head at things that aren t really annoying people are hesitant to upset already-annoyed people and unlikely to start a conversation or risk encroaching on your space. Note: be careful not to illicit sympathy by being annoyed with something that anyone else might agree is annoying. You re not here to make friends. personal space prior to liftoff is weird. Everyone seems to take up more space on the ground. If you can define your territory on the runway, it will turn into empty space after liftoff even if you re touching someone in the beginning. if the person shares your distaste for contact with unknown humans, simply resting your elbow on the arm rest as they sit down will discourage them from using said armrest. If lost, you can re-establish this domain every time they shift or reach for something. let your knees spread to a comfortable distance and see if they touch anyone else s. Doing this slowly is creepy enough that most people will recoil and give you your space. If they don t concede: reach for your under-seat carry-on between your legs, forcing your knees apart. Apologize for the inconvenience, but only retract your knees part of the way back together. This results in more space than you need",
"keywords": ["amway","armrest","class","economy","jesus","personal","space","technology","amway","apologize","appear","bring","claim","crossing","doing","everyone","jesus","maintain","random","repeat","sometimes","trains","usually","walking","affecting","afraid","again","against","agree","allow","allows","amount","ankle","annoyances","annoyed","annoying","answers","anyone","anywhere","apart","apology","applying","armrest","asking","assuming","before","beginning","below","between","blessings","blockers","breath","careful","carry","cause","center","certain","children","class","comfort","comfortable","compiled","completely","concede","connections","conscious","constantly","contact","conversation","crabby","craft","create","credibility","creepy","cubby","define","discourage","distance","distaste","domain","drinks","drool","easily","economy","edges","elbow","elicit","empty","encroaching","enough","equation","especially","expanding","expect","expensive","experience","experiences","extend","extra","fabric","facing","falling","favor","favorite","fidgeting","figure","first","flexible","flight","folded","forcing","friends","front","garment","gently","germs","great","ground","guarantee","guess","headrest","headwinds","hesitant","hours","humans","illicit","imaginary","inconsiderately","inconvenience","inevitable","inscrutable","inspired","installment","interrupt","involved","irrational","jacket","knees","liftoff","limited","loudly","making","maybe","mentioning","minutes","motivation","necessary","needing","notes","observations","obvious","others","outside","parents","party","passengers","passionate","peaceful","people","perfectly","person","persona","personal","personality","phone","physical","pictures","pilot","placed","plane","pocket","political","press","pressure","pretend","prove","punched","questions","random","reach","reasonable","recoil","relax","relieved","repeatedly","resting","rests","results","retract","rides","right","runway","scared","scratch","second","seems","shake","shares","shift","shirt","shoulder","showing","simply","sleep","sleeping","slowly","small","snore"]
},{
"title": "An Inline Footnote Service redux just for Gabe",
"url": "/2013/03/10/an-inline-footnote-service-redux-just-for-gabe/",
"tags": ["footnotes","markdown","markdownservices","multimarkdown","service","tools"],
"date": "Mar 10th, 2013",
"ts": "1362924000",
"summary": "Gabe Weatherhead (a.k.a. MacDrifter ) made a special request yesterday that after some discussion made sense in the spirit of readable Markdown. He wanted to be able to use the inline footnote converter in the Markdown Service Tools , but needed to be able to name his footnote markers instead of just assigning them sequential numbers. The revised version of the Service is backward-compatible, so if you re using it you don t have to do anything differently. You now have the extra option of including a marker name in brackets at the very beginning of an inline footnote. You can also include multiple references to a footnote that hasn t been created yet. If you make a note like , you can include anywhere and it will link up when you run the Service. I also threw an extra Service in that I find constantly handy despite it basically being a one-liner: Compress Empty Lines. It quickly strips out multiple newlines and leaves paragraphs and code intact. Just neatens things up. It s under Paragraphs in the tools. Now go write something, and remember, footnotes make you look sexier. 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 More info",
"keywords": ["james","joyce","markdown","notes","service","tools","wordpress","changelog","compress","donate","download","empty","macdrifter","markdown","paragraphs","published","service","services","tools","updated","weatherhead","almos","anywhere","assigning","backward","beginning","brackets","collection","compatible","constantly","converter","created","creating","designed","differently","discussion","easier","extra","footnote","footnotes","formatted","handy","including","inline","intact","leaves","liner","macos","marker","markers","multiple","neatens","needed","newlines","numbers","paragraphs","quickly","readable","references","remember","sense","sequential","sexier","special","spirit","strips","threw","tools","under","using","version","wanted","write","yesterday"]
},{
"title": "Footnote utilities for the Markdown Service Tools",
"url": "/2013/03/09/footnote-utilities-for-the-markdown-service-tools/",
"tags": ["footnotes","markdown","markdownservices","multimarkdown"],
"date": "Mar 9th, 2013",
"ts": "1362837600",
"summary": "There are two new footnote-related additions to the Markdown Services Tools . One is an older project for converting an easy inline footnote format into regular MultiMarkdown footnotes, and the other replaces all footnote markers in a document with unique strings for avoiding conflicts when concatenating multiple documents or rendering multiple posts containing footnotes on a single blog page (for example). The md - Footnotes - Convert Inline Format Service was created a while ago, and you can see the original post for more details . In short, you create footnotes as you type using the syntax . When you run the service, it replaces the inline syntax with an MMD-style marker () and creates the footnote definition at the bottom of the document. It s meant to be run after writing, but before rendering. It is conscious of existing footnote id s, though, and won t overwrite or conflict with any that exist. Thus, you can run it multiple times without issue. When writing long pieces, especially ones spanning multiple documents, it can become hard to keep track of any kind of footnote numbering or naming system. Name conflicts can cause some pain, so the easiest solution is to automatically update your footnote marker names per document. This Service grabs the current time in seconds and uses it as a prefix for all of the footnotes in the document. It makes sure that markers and definitions remain paired. This is of less use if you keep footnotes in a separate file or reference the same footnote across multiple documents. If that s the case, don t use this Service it will break any references that exist in other files. It s best used for shorter pieces that will become part of a larger collection, like stories in a compilation or posts on a blog, as long as their footnotes are self-contained within their document. It s designed only to prevent one document s footnotes from conflicting with another s when they re compiled or displayed together. Both services are now available in the Markdown Service Tools package. I ve also updated the project page to make more sense with the latest tools. Don t say I never do anything for you. 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 More info",
"keywords": ["document","editor","formats","markdown","multimarkdown","notes","service","tools","changelog","convert","donate","download","footnotes","format","inline","markdown","multimarkdown","published","service","services","tools","unique","updated","across","additions","almos","another","automatically","available","avoiding","before","bottom","break","cause","collection","compilation","compiled","concatenating","conflict","conflicting","conflicts","conscious","contained","containing","converting","create","created","creates","creating","definition","definitions","designed","details","displayed","document","documents","easier","easiest","especially","example","exist","files","footnote","footnotes","format","formatted","grabs","inline","larger","latest","macos","makes","marker","markers","meant","multiple","names","naming","numbering","older","original","overwrite","package","paired","pieces","posts","prefix","prevent","project","references","regular","related","rendering","replaces","seconds","sense","separate","service","services","short","shorter","single","solution","spanning","stories","strings","style","syntax","system","times","together","tools","track","unique","updated","using","while","within","writing"]
},{
"title": "New in the Markdown Service Tools: in-place Markdown to RTF",
"url": "/2013/03/08/new-in-the-markdown-service-tools-in-place-markdown-to-rtf/",
"tags": ["markdown","markdownservices","multimarkdown","service"],
"date": "Mar 8th, 2013",
"ts": "1362794640",
"summary": "With help from Tobias O Leary , the Markdown Service Tools can finally do in-place conversion from (Multi)Markdown to RTF. The primary reason for wanting this was to allow people to write Markdown directly in Mail.app, then convert it immediately before sending. Put a shortcut key on it and it s a snap. In order to demonstrate how exciting this is, I have made you a video. See? Exciting. md - Convert - MultiMarkdown to RTF is now included in the Markdown Service Tools . Please read on for some additional information and requirements. The Service works in any Cocoa text field that handles Rich Text. If you can change your font weight, size and color in the field, you re in the right place. Download the installer (latest version of both the Mac and Support-Mac archives), unzip and run them. If you use homebrew, just run . Images referenced in your Markdown will disappear. Due to the way RTF handles image attachments, including them is not possible. The default style (Swiss from Marked ) is stored in (created the first time you run the service). This file can be edited if desired, but should remain a single line starting with XHTML Header: and contain a full declaration. Embedded fonts don t work, and there are a lot of elements lost when converting, so it takes some experimentation. You can boil your CSS down to a single line using any of the various compression tools, or use a web service . The MultiMarkdown to RTF works by converting the selected Markdown using the binary and passing the output HTML to the OS X utility . The command converts the raw HTML into RTF data in a temporary file, which is then read into the RTF clipboard and pasted back to the file. That s the secret sauce: when is passed input on STDIN, it fails to create the clipboard RTF properly. Passing it out to a temp file and reading it back in allows it to function properly. If you open up the file in Automator, you can see the sausage factory floor. Download directly below, or see the project page for more details on installation and configuration. 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 More info",
"keywords": ["cascading","format","markdown","multimarkdown","service","sheets","style","tools","automator","because","changelog","cocoa","convert","donate","download","embedded","exciting","github","header","images","leary","markdown","marked","multi","multimarkdown","passing","published","stdin","service","services","styling","support","swiss","tobias","tools","updated","xhtml","allow","allows","almos","archives","attachments","before","below","binary","change","clipboard","collection","color","command","compression","configuration","contain","contents","conversion","convert","converting","converts","couple","create","created","creating","declaration","default","designed","desired","details","directly","disappear","easier","edited","elements","emails","exciting","experimentation","factory","fails","field","finally","first","floor","fonts","formatted","function","handles","homebrew","image","included","including","information","input","installation","installed","installer","latest","macos","notes","original","output","passed","passing","pasted","people","possible","preserved","primary","project","properly","reading","referenced","requires","restored","right","sauce","sausage","secret","selected","sending","service","shortcut","single","starting","stored","style","takes","temporary","tools","unzip","using","utility","various","version","video","wanting","weight","works","write"]
},{
"title": "iOS App Review: AeroPress Timer for iPhone",
"url": "/2013/03/08/ios-app-review-aeropress-timer-for-iphone/",
"tags": ["appreview","iphone"],
"date": "Mar 8th, 2013",
"ts": "1362758400",
"summary": "A year ago Jarrod Glasgow was driving trucks for a living. Now he s making awesome iOS apps. His first app, AeroPress Timer is a really good-looking app that holds some of the best recipes for making AeroPress coffee. Each recipe has a description and overview, and then a series of countdown timers. Pour, stir, steep and press. It has inverted and normal orientation recipes, and describes the grind and amount of coffee to use for each. I m drinking an excellent cup of coffee made using the Bold recipe right now. It s excellent. I used to accomplish this with the default stopwatch app and a lap timer, but this is a major improvement. There s a great video of it in action on Vimeo . Pick up AeroPress Timer ($1.99 US) on the App Store and make a great cup of coffee. If you don t have an AeroPress, pick one up for around $30. You ll thank yourself after your first cup.",
"keywords": ["aeropress","coffee","glasgow","recipe","store","timer","vimeo","aeropress","glasgow","jarrod","store","timer","vimeo","action","amount","awesome","coffee","countdown","default","describes","description","drinking","driving","excellent","first","great","grind","holds","improvement","inverted","living","looking","major","making","normal","orientation","overview","press","recipe","recipes","right","series","steep","stopwatch","thank","timer","timers","trucks","using","video"]
},{
"title": "Sponsor: Igloo Software",
"url": "/2013/03/07/sponsor-igloo-software/",
"tags": [],
"date": "Mar 7th, 2013",
"ts": "1362657600",
"summary": "I d like to thank Igloo Software for sponsoring BrettTerpstra.com this week. At Igloo, we believe that working with other people doesn t have to be complicated it s about three things: content, communication and collaboration. It s why we integrate our core suite of apps around social tools to create an intranet you ll actually like. Blogs to share news and progress updates Calendars that sync with your favorite software Document storage, securely available anywhere Forums to keep your discussions and ideas together Microblogs, a private Twitter-like stream for your team Wikis for living, collaborative documentation Everything inside your Igloo is customizable. With multiple channels in each app, it s easy to show different content to different teams, groups or projects. Plus, we re securely hosted on the moon in the cloud. Get started with Igloo today. And if your boss needs some convincing, we ve got some whitepapers for her.",
"keywords": ["communities","facebook","igloo","microblogging","networking","online","social","syndicate","twitter","blogs","brettterpstra","calendars","document","everything","forums","igloo","microblogs","software","sponsorship","syndicate","twitter","wikis","anywhere","available","believe","channels","cloud","collaboration","collaborative","communication","complicated","content","convincing","create","customizable","different","discussions","doesn","favorite","groups","hosted","ideas","inside","integrate","intranet","living","multiple","needs","people","private","projects","securely","share","social","software","sponsoring","started","storage","stream","suite","teams","thank","today","together","tools","updates","whitepapers","working"]
},{
"title": "Systematic #34: Brainstorming with George Browning",
"url": "/2013/03/05/systematic-number-34-brainstorming-with-george-browning/",
"tags": ["podcast","systematic"],
"date": "Mar 5th, 2013",
"ts": "1362547140",
"summary": "A big thanks to George Browning of Zengobi Software for joining me this week on Systematic. The creator of Curio talked brainstorming with me (collaborative and personal) and shared some great top picks. Barry Terpstra makes an appearance this week. It s fun to do the special spots, but it s horribly disruptive I m not sure Barry will be back in the future, so get your kicks while you can. Episode #34 is up on 5by5 now!",
"keywords": ["barry","browning","curio","george","houston","podcast","studios","systematic","zengobi","barry","browning","curio","episode","george","software","systematic","terpstra","zengobi","appearance","brainstorming","collaborative","creator","disruptive","great","horribly","joining","kicks","makes","personal","picks","shared","special","spots","talked","thanks","while"]
},{
"title": "Site versioning with Jekyll/Octopress",
"url": "/2013/03/05/site-versioning-with-jekyll-octopress/",
"tags": ["jekyll","webdesign"],
"date": "Mar 5th, 2013",
"ts": "1362492000",
"summary": "When you re editing the design and scripts on a static site that has good caching implemented, seeing your changes can be tricky. The easiest way around it is to add a cachebuster version string to the file includes. Here s a simple trick for implementing versioning for CSS and JS files on a Jekyll/Octopress site. With a couple of minor additions to your config file, Rakefile and , you won t have to think twice about caching when testing. Add a version parameter anywhere in your _config.yml file. For ease of use I placed mine near the top. Anywhere in your templates, use where you want to include your version number. I m using an htaccess trick (below) to convert urls like to with cachebusting. Using this method does not require you to actually rename any files. It will just take the versioned filename from your template and read it as a fresh file when you update. This reads in your _config.yml file, searches for the line and replaces it with a line containing an incremented version number. If you run now, it will increment your version number and the next build will include updated versioning for all of the mentions in your template files.",
"keywords": ["cascading","computer","htaccess","javascript","octopress","rakefile","sheets","software","style","versioning","anywhere","boilerplate","javascripts","jekyll","octopress","rakefile","using","above","additions","anywhere","automatically","below","build","cachebuster","cachebusting","caching","changes","config","containing","convert","couple","deploy","design","easiest","editing","filename","files","first","found","fresh","htaccess","implemented","implementing","includes","increment","incremented","makes","mentioned","mentions","method","minor","parameter","placed","query","reads","rename","replaces","scripts","searches","seeing","simple","simpler","static","string","template","templates","testing","think","trick","tricky","twice","updated","updating","using","version","versioned","versioning","where"]
},{
"title": "Generational 024 - Text editing",
"url": "/2013/03/03/generational-024-text-editing/",
"tags": ["podcast"],
"date": "Mar 3rd, 2013",
"ts": "1362357960",
"summary": "I really enjoyed doing episode 024 of Generational with David Sparks , Dr. Drang and, of course, our gracious host Gabe Weatherhead . The topic was text editors and the result was nerd porn. There were so many interesting (to me) aspects to the discussion that I couldn t list them all here. If you re interested in text, text editors, Markdown or have any fascination with serious nerdery, check it out.",
"keywords": ["editor","literature","markdown","microsoft","weatherhead","world","david","drang","generational","markdown","sparks","weatherhead","aspects","check","couldn","discussion","doing","editors","enjoyed","episode","fascination","gracious","interested","interesting","nerdery","serious","topic"]
},{
"title": "Web Excursions for March 1st, 2013",
"url": "/2013/03/01/web-excursions-for-march-1st-2013/",
"tags": ["bookmarks"],
"date": "Mar 1st, 2013",
"ts": "1362179580",
"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. Keyboard Maestro wrappers for the Markdown Service Tools Patrick Welker over at RocketINK has updated his Keyboard Maestro wrappers for the Markdown Service tools and included a few of my other projects, including SearchLink . The true power of regular expressions A good post on regular expressions. Just in case you ever wondered if they were actually useful. 10 Super Useful Free Icon Font Sets Icon fonts can be a really useful tool in lightweight web design. These sets are a pretty good place to start with a lot of commonly useful pictographs. RegexMatch A really good (and good-looking) regular expression tester for OS X. Handles groups, sub-matches, substitutions and exporting regular expressions in a variety of languages. completeme 0.2.5 A very cool filename completion tool for quickly opening a file in your editor from the command line. Via OneThingWell .",
"keywords": ["crossword","expression","languages","mystery","papers","programming","regular","research","tutorials","check","handles","keyboard","maestro","markdown","onethingwell","patrick","regexmatch","rocketink","searchlink","service","setapp","super","tools","useful","welker","access","brought","command","commonly","completeme","design","editor","excursions","exporting","expression","expressions","filename","fonts","groups","hundreds","included","including","languages","lightweight","looking","matches","monthly","opening","partnership","pictographs","projects","quickly","regular","subscription","substitutions","tester","today","tools","updated","useful","variety","wondered","wrappers"]
},{
"title": "Glui: a lightweight alternative to Skitch",
"url": "/2013/02/28/glui-a-lightweight-alternative-to-skitch/",
"tags": ["appreview","macos"],
"date": "Feb 28th, 2013",
"ts": "1362078000",
"summary": "I m among the many who are discontent with the latest version of Skitch . I ve reverted back to the previous version and have been using it happily, but there s a new alternative. Glui ($2.99 US introductory price) provides screen, window and crosshair snapping (with keyboard shortcuts available), basic annotation and easy sharing via Dropbox with short urls. URLs for shared snapshots are automatically placed in your clipboard. You can also hold down the Option key to be able to drag the image anywhere you want to put it (or directly to Acorn for further editing). I m also using this with Droplr to share screenshots via my custom ckyp.us 1 domain. I just hold Option, drag it to my Droplr menu bar item and paste the resulting URL on my clipboard into chat or a Tweet. Glui is currently lacking the ability to change the color of annotations, and to output any format other than PNG. For most of my purposes that s fine. If I want multiple types of annotations, I m probably using Clarify , and if it s headed to my blog I m running image conversion and optimization via Dropzone destinations anyway. For fast sharing, Glui is a perfect option and a great alternative to Skitch. My tribute to one of the greatest bands of my generation, but nobody ever gets it .",
"keywords": ["activity","christian","dropbox","droplr","graphics","locator","network","portable","resource","skitch","store","twitter","acorn","clarify","dropbox","droplr","dropzone","skitch","store","ability","among","annotation","annotations","anyway","anywhere","automatically","available","bands","basic","change","clipboard","color","conversion","crosshair","custom","destinations","directly","discontent","domain","editing","format","generation","great","greatest","happily","headed","image","introductory","keyboard","lacking","latest","multiple","nobody","optimization","output","paste","placed","price","provides","resulting","reverted","running","screen","screenshots","share","shared","sharing","short","shortcuts","snapping","snapshots","tribute","types","using","version","window"]
},{
"title": "Quick Link: A cheat sheet for pitching your app",
"url": "/2013/02/28/quick-link-a-cheat-sheet-for-pitching-your-app/",
"tags": ["marketing","quicklink"],
"date": "Feb 28th, 2013",
"ts": "1362064560",
"summary": "App Design Vault has gathered tips from a few recent articles and books on pitching your app to blogs ( including my own and Pitch Perfect by my friends Steve Sande and Erica Sadun). I maintain that getting blog coverage is the #1 path to app success, so I consider this a great resource. The information is gathered in a really nice infographic format. It s easy to read and there are a lot of great tips in there.",
"keywords": ["blogging","erica","handhelds","iphone","pitch","sadun","sande","smartphones","steve","blogs","cheat","design","erica","getting","pitch","reviews","sadun","sande","sheet","steve","ultimate","vault","articles","blogs","books","consider","coverage","format","friends","gathered","getting","great","including","infographic","information","maintain","pitching","recent","resource","success"]
},{
"title": "Sponsor: Almond+",
"url": "/2013/02/28/sponsor-almond-plus/",
"tags": [],
"date": "Feb 28th, 2013",
"ts": "1362052800",
"summary": "Thanks to Almond+ for sponsoring BrettTerpstra.com this week. There are over 750 routers available on Amazon, but Almond is the highest rated of them all, beating even the Apple Airport Extreme. A Router for the Jetsons. Easy Touchscreen WiFi Router. Easier Home Automation. Extremely fast gigabit speeds. Exquisitely Designed.",
"keywords": ["almond","automation","jetsons","kickstarter","router","zigbee","airport","almond","amazon","apple","automation","brettterpstra","designed","easier","exquisitely","extreme","jetsons","reserve","router","sponsorship","syndicate","thanks","touchscreen","available","beating","gigabit","highest","rated","routers","speeds","sponsoring","worthy"]
},{
"title": "Systematic #33 with Merlin Mann",
"url": "/2013/02/26/systematic-number-33-with-merlin-mann/",
"tags": ["podcast","systematic"],
"date": "Feb 26th, 2013",
"ts": "1361901360",
"summary": "I had the pleasure of hosting Merlin Mann for a second time this week. The topic was failing gracefully, and the conversation was surprisingly on-point. Suprising for me, not for Merlin. He s a pro. The top picks of the week were especially fun, and we covered some great apps. Thanks as always to Merlin for taking the time, I hope everyone enjoys the show! Check it out at 5by5 .",
"keywords": ["apple","merlin","podcast","studios","check","merlin","suprising","thanks","conversation","covered","enjoys","especially","everyone","failing","gracefully","great","hosting","picks","point","second","surprisingly","taking","topic"]
},{
"title": "Markdown Service Tools 2.0",
"url": "/2013/02/25/markdown-service-tools-two-point-oh/",
"tags": ["markdown","markdownservices","multimarkdown","service"],
"date": "Feb 25th, 2013",
"ts": "1361800800",
"summary": "Thanks to a big hand from Joe Workman , the Markdown Service Tools are at 2.0. There aren t a lot of new tricks in there, but everything should be codesigned to avoid Gatekeeper issues and there are many improvements to functionality: Outdent Service preserves sub-indentation, run it multiple times to outdent everything to the left. Indent and Code Block services separated. Indent now uses four spaces, and Code Block indents everything by one tab. Link list from clipboard has a better regex and removes ending punctuation, etc. from links surrounded by quotes or brackets. Additional minor tweaks all around The services have been reorganized to sort better alphabetically. To keep everything manageable, you ll want to delete your existing set of Markdown Service Tools and replace them. This means, unfortunately, that you ll need to reassign any keyboard shortcuts. I highly recommend downloading a copy of the Services Manager . You can find additional installation instructions in the howto section , and more details on the set on the (soon-to-be-updated) project page . 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 More info Now that there s a new and (hopefully) stable foundation to build off of, I ll be adding new services soon. I may actually take these and build a bundle I can sell for a buck or two on the App Store, but they re free for now. If you re making heavy use of the Markdown Service Tools, a donation would be welcome! I bet you're making tons on all the time you save. Or me on GitHub!",
"keywords": ["business","expression","indent","indentation","keyboard","markdown","regular","service","shortcut","store","style","tools","block","changelog","donate","download","gatekeeper","github","indent","manager","markdown","outdent","published","service","services","store","thanks","tools","updated","workman","adding","almos","alphabetically","avoid","brackets","build","bundle","clipboard","codesigned","collection","creating","designed","details","donation","downloading","easier","ending","everything","formatted","foundation","functionality","heavy","highly","hopefully","howto","improvements","indentation","indents","installation","instructions","issues","keyboard","links","macos","making","manageable","minor","multiple","outdent","preserves","project","punctuation","quotes","reassign","recommend","regex","removes","reorganized","replace","section","separated","services","shortcuts","spaces","stable","surrounded","times","tricks","tweaks","unfortunately","updated","welcome"]
},{
"title": "Twice-baked potatoes",
"url": "/2013/02/24/twice-baked-potatoes/",
"tags": ["cooking","potatoes","recipe"],
"date": "Feb 24th, 2013",
"ts": "1361737860",
"summary": "I m not a chef. I m barely a cook. I do have my moments, though, and today s lunch was one of them. Even my wife agrees. I thought I d take a minute and record the recipe for posterity and my own reference, but you can try it if you re looking for something to do. This is distributed under the WTF license, of course, so do whatever you like with it. I love potatoes. I ve even heard tell (from people who make their money on potatoes) that they re good for you. I don t really care. I ve baked, boiled, fried and mashed various concoctions together, but this was my favorite thus far. It s a standard recipe modified to my tastes, but a good grounds for experimentation. This is basically a meal, unless you re all into pyramids or whatever the FDA is suggesting these days. Slice the top 1/3 (horizontally) off of each potato. Scoop out the insides of the remaining two thirds with a spoon and place in a large mixing bowl. The other 1/3 can be added, but when this is done you ll have leftover filling anyway, so make chips out of them. Or just eat them right there. You know you want to. 3 Tbsp milk 2 Tbsp sour cream 1/2 cup finely chopped, pan-fried brussel sprouts Grated cheddar cheese to taste A little bit of salt. Pepper. A lot of pepper. Chives Mash the potatoes and mixing ingredients until consistent, but don t over-blend. They get gooey if you do, and chunkiness is far preferable. It tastes good. It feels good. Go with it. Scoop the mixture back into the potato skins you emptied. Fill them up and pile it on, then add a dollop of sour cream and sprinkle some grated cheddar cheese on top. Place the resulting potato boats into a baking pan and bake at 350 for 15-20 minutes. I made my last batch without bacon for reasons I won t go into. If you like the bacon, though, put some in the oven for about 15 minutes (or until sufficiently crisp) while you re baking the potatoes the first time. Take them out and let them cool, then crumble them and include in the mixing and topping lineup.",
"keywords": ["baking","cheddar","cheese","cream","potato","tablespoon","chives","first","grated","pepper","preheat","scoop","second","slice","added","agrees","anyway","bacon","baked","baking","barely","batch","before","blend","boats","boiled","brush","brussel","cheddar","cheese","chips","chopped","chunkiness","completely","concoctions","consistent","cream","crisp","crumble","different","distributed","dollop","emptied","experimentation","favorite","feels","filling","finely","first","fried","gooey","grated","heard","horizontally","ingredients","innards","insides","leftover","license","lineup","little","looking","lunch","mashed","minute","minutes","mixing","mixture","modified","moments","money","olive","people","pepper","posterity","potato","potatoes","preferable","pyramids","reasons","recipe","record","remaining","resulting","right","russet","skins","spoon","sprinkle","sprouts","standard","sufficiently","suggesting","taste","tastes","thirds","thought","today","together","topping","under","various","verse","water","whatever","while"]
},{
"title": "nvTagNavigator 1.1 with automatable tag indexing",
"url": "/2013/02/23/nvtagnavigator-1-dot-1-with-automatable-tag-indexing/",
"tags": ["nvalt","tagging"],
"date": "Feb 23rd, 2013",
"ts": "1361633100",
"summary": "When I posted the nvTagNavigator application, I had mentioned that you could automate it to run at regular intervals. I didn t think about the fact that it pops up two dialogs every time it runs, making that impossible. The new download includes a script that can be automated. nvTagNavigator indexes your nvALT tags and creates a panel for navigating your notes based on tags. There are two applications, makeTagsList and nvTagNavigator. Now, the first time you run the makeTagsList application, it will store your responses in your system defaults. From that point on, running the included nvtaggenerator.rb will automatically use the preferences you set when you ran makeTagsList. You can then automate that script using launchd. The screenshot below shows the settings I use in LaunchControl : You ll need to update the path to point to wherever you install the script. You can also use Lingon with the same type of settings. If you don t want to use either, you can edit the plist below in any text editor, and save the final file as . Be sure to change [username] to your username and adjust the path as necessary to point to wherever you install the script. The 7200 in the script indicates that it should run every 2 hours (60602), and can be adjusted to whatever interval you want. nvTagNavigator v1.1 Download nvTagNavigator v1.1 Collect and navigate your nvALT tag collection Published 02/15/13. Updated 02/15/13. Changelog Donate More info",
"keywords": ["automation","element","growl","launchd","lingon","property","shareware","changelog","collect","donate","download","hopefully","launchcontrol","lingon","published","updated","adjust","adjusted","advanced","applications","automate","automated","automatically","based","below","change","collection","creates","defaults","dialogs","download","editor","either","first","hassle","hours","impossible","included","includes","indexes","indicates","install","interval","intervals","launchd","maketagslist","making","mentioned","navigate","navigating","necessary","notes","nvalt","nvtagnavigator","nvtaggenerator","panel","plist","point","posted","preferences","process","regular","responses","running","screenshot","script","settings","shows","store","system","think","username","users","using","whatever","wherever"]
},{
"title": "Sponsor: Treehouse",
"url": "/2013/02/21/sponsor-treehouse/",
"tags": [],
"date": "Feb 21st, 2013",
"ts": "1361448000",
"summary": "Treehouse is a better way to learn technology. library of step-by-step video courses and training exercises will give you a wide range of competitive, in-demand technology skills that will help you land your next dream job or build your startup idea. No experience? No problem! Learn to build websites, create iPhone and Android apps, code with Ruby on Rails and PHP, or start a business. Start learning today, and get 1 month free .",
"keywords": ["android","iphone","languages","programming","rails","android","learn","rails","sponsorship","syndicate","treehouse","build","business","competitive","courses","create","demand","dream","exercises","experience","iphone","learn","learning","library","problem","range","skills","startup","technology","today","training","video","websites"]
},{
"title": "Systematic #32 with Daniel Jalkut",
"url": "/2013/02/19/systematic-number-32-with-daniel-jalkut/",
"tags": ["podcast","systematic"],
"date": "Feb 19th, 2013",
"ts": "1361303760",
"summary": "Systematic #32 just went live. I was joined by Daniel Jalkut of Red Sweater software for a conversation about MarsEdit, productivity and some great picks of the week. Thanks to Daniel for stopping by! Check out episode 32 at 5by5 .",
"keywords": ["daniel","jalkut","marsedit","programs","software","studios","sweater","television","check","daniel","jalkut","marsedit","sweater","systematic","thanks","conversation","episode","great","joined","picks","productivity","software","stopping"]
},{
"title": "iOS App Review: Write for iPhone",
"url": "/2013/02/16/ios-app-review-write-for-iphone/",
"tags": ["appreview","iphone","texteditor"],
"date": "Feb 16th, 2013",
"ts": "1361057400",
"summary": "At this point, I think just about everyone knows I have a thing for iOS text editors . My proclivity for plain text and my love of my iDevices means that I track innovation in this arena pretty closely. A new app in this category has recently caught my attention: Write , a Dropbox-based text editor for iPhone. The editor in Write is pretty standard, with an extra keyboard row offering instant access to some common second and third-screen characters. The appearance of the editor can be quickly adjusted by holding two fingers down on the screen, which pops up a dialog where you can change fonts and turn on night mode (inversed colors). Oddly, it includes Marker Felt and Papyrus font options. To each their own. It supports Markdown preview, and the keyboard row can slide to the left to reveal Markdown-specific formatting tools. It lacks a smart return for list continuation, etc., but it s smart enough that when you type an asterisk as the first character of a line, it adds a space after it. I found list indentation to be a little difficult, though. When you first launch the app, it defaults to starting a new note immediately. In the settings you can configure it to open the file list on launch instead, depending on your intended use for the app. You can save the current file to Dropbox while editing by just pulling down on the screen. In preview mode, the same gesture provides a quick-delete capability. Of course, it will auto-save if you switch documents or start a new one. Swiping from left to right reveals the file list. Write uses an app-specific Dropbox folder (which is also used by its lightweight Mac counterpart found here ). You can Quick Look files by pressing and holding the filename, and you can star files for quick access from a second tab in the list view. There s a search bar in the file list for searching document titles. Unfortunately, there s no full text search (or in-document search). That would be a very nice addition. One thing I m impressed by is the generous use of intuitive gesture controls. The pull-to-save and pull-to-delete functions are handy, and the press-and-hold Quick Look is outstanding, but the rest of the gestures are gathered from other sources and standard interactions. What Write did correctly, in my opinion, is the right combination of existing gesture-based actions into one app. One feature that s not unique to Write but well-implemented here is the keyboard cursor control. Tapping and holding a button",
"keywords": ["drive","dropbox","google","iphone","quick","store","twitter","check","cloudapp","drafts","drive","dropbox","editing","evernote","facebook","gestures","google","markdown","marker","oddly","papyrus","poster","quick","sharing","similar","store","swiping","tapping","textastic","tweetbot","twitter","unfortunately","write","writeup","access","actions","activates","adjusted","advanced","another","appearance","applications","arena","asterisk","based","before","between","biggest","button","capability","caret","category","caught","certain","change","character","characters","class","clipboard","closely","colors","combination","combining","common","complaint","configure","configured","consider","continuation","control","controls","copying","correctly","counterpart","cursor","decision","defaults","depending","dialog","difficult","disable","distance","document","documents","dollar","dragging","editing","editor","editors","emailing","enough","everyone","everything","experience","export","extra","feature","features","filename","files","fingers","first","folder","fonts","formatting","found","functions","gathered","geared","generous","gesture","gestures","handy","holding","horizontal","horizontally","idevices","iphone","itunes","implementation","implemented","impressed","includes","including","indentation","innovation","instant","integration","intended","interactions","internal","intuitive","inversed","jittered","keyboard","knows","lacks","launch","lightweight","listed","little","management","marketing","materials","middle","movement","night","notes","offering","opens","options","others","overkill","perfectly","point","position","press","pressing","preview","previewing","price","printing","proclivity","provides","public","pulling","quick","quickly","range","recently","return","reveal","reveals","right","schemes","scratching","screen","search","searching","second","services","settings","sharing","slide","smart","solves","sources","space","specific","specifically","standard","standout","starting","supports","switch","think","third","threshold","titles","tools","track","unique","using","where","while","writing"]
},{
"title": "GMail in the shell",
"url": "/2013/02/15/gmail-in-the-shell/",
"tags": ["terminal"],
"date": "Feb 15th, 2013",
"ts": "1360962000",
"summary": "Here are a couple of nifty (I think) bash functions which probably won t work for anyone else. The first one checks GMail 1 and reports unread messages on the command line, the second one keeps a vigilant watch for new messages and streams the sender and subject lines using rsstail . The part that s probably most likely to fail is the automatic detection of the username and password. It uses Directory Service via the utility to locate the primary email address of the current user, and then locates the password for accounts.google.com in your keychain based on the result. This makes a lot of assumptions: your primary email is your GMail address, your current user has it assigned and you ve stored your password for GMail in your keychain. It s easy to fix if it doesn t work (hardcode your email and password), but it s not at all secure. Your call, I just figured I d share the trick From commandlinefu.com via Peteris Krumins .",
"keywords": ["address","command","email","gmail","interface","operating","password","security","system","windows","directory","gmail","krumins","peteris","service","accounts","address","anyone","assigned","assumptions","automatic","based","checks","command","commandlinefu","couple","detection","doesn","email","figured","first","functions","google","hardcode","keeps","keychain","likely","locates","makes","messages","nifty","password","primary","reports","rsstail","second","secure","sender","share","stored","streams","think","trick","unread","username","using","utility","vigilant","watch"]
},{
"title": "nvTagNavigator: a tag panel for nvALT",
"url": "/2013/02/15/nvtagnavigator-a-tag-panel-for-nvalt/",
"tags": ["nvalt","tagging"],
"date": "Feb 15th, 2013",
"ts": "1360938600",
"summary": "If you ve used nvALT for a while, you know that tagging in it is, well, broken. There s no unified place to see all your tags, and tags can t be searched exclusively. The nice thing that Zachary built into it is OpenMeta tagging, so if you store your notes as plain text files, you can search tags with Spotlight and any OpenMeta app. This, combined with the url handler, leads to some interesting possibilities. The pair of apps that you can download below are Automator wrappers. They allow you to build a tag collection from your existing tags and generate a way to view them in a panel. Clicking a tag will reveal all of the notes which have that tag, and clicking a note will open it in nvALT. First, you need to make sure you re storing your notes as plain text files. Open Preferences in nvALT and go to the Notes tab (press Command-comma to open quickly): Then run the makeTagsList application. It will first ask you what your default extension is. If you don t know what it is, you can find it under Notes preferences in nvALT, also: If you have multiple extensions in your notes folder, you can include additional ones separated by a space (e.g. md mmd txt ). By default it will look for md, as well as txt and taskpaper. Next, it asks you where your notes folder is. Point it to the folder you specified when you set up plain text storage in nvALT. Give it a minute and it will gather all the existing tags and their associated files, and build an index in HTML and JavaScript. Note that it does load jQuery from the Google Ajax API, so you ll need an Internet connection for the result to function properly. When it s finished, it will open Finder and show you where the resulting file is (in nvALT s Application Support folder). Now you can run the other application, nvTagNavigator, and it will load that file automatically. It opens it in a floating HUD and you can click around to open tag collections and jump to notes in nvALT. Use the input field at the top to quickly filter the tag list as you type. The HTML file will not update automatically you ll have to run makeTagsList once in a while to keep it up to date. You can schedule that to run daily or weekly using launchd ( Lingon , LaunchControl ) or just create a repeating iCal event that launches it . I won t go into the gory details on that right now, but there are a few easy ways to make it happen. I know it s not a fix for nvALT s tagging system, but I hope it s a helpful stopgap. nvTagNavigator",
"keywords": ["element","finder","google","javascript","openmeta","spotlight","automator","changelog","clicking","collect","command","donate","download","finder","first","google","internet","javascript","launchcontrol","lingon","notes","openmeta","point","preferences","published","spotlight","support","updated","usage","zachary","allow","associated","automatically","below","broken","build","built","click","clicking","collection","collections","comma","create","daily","default","details","download","extension","extensions","field","files","filter","finished","first","floating","folder","function","gather","handler","happen","helpful","index","input","interesting","jquery","launchd","launches","leads","maketagslist","minute","multiple","navigate","notes","nvalt","nvtagnavigator","opens","panel","possibilities","preferences","press","properly","quickly","repeating","resulting","reveal","right","schedule","search","searched","separated","space","stopgap","storage","store","storing","system","tagging","taskpaper","under","unified","using","weekly","where","while","wrappers"]
},{
"title": "Sponsor: Harvest",
"url": "/2013/02/14/sponsor-harvest/",
"tags": [],
"date": "Feb 14th, 2013",
"ts": "1360843200",
"summary": "Track all of your billable hours in the new year with Harvest before more time flies. Work on client projects from anywhere by starting a timer effortlessly via web browser, mobile device, and now from your favorite project management tool. Tracked hours appear in visual time reports designed to help finish projects on time and within budget. When all is said and done, send professional invoices to happy clients and get paid. Don t delay any longer. Sign up for a free trial and start tracking time with Harvest today.",
"keywords": ["accounting","based","browser","device","harvest","iphone","management","mobile","project","syndicate","harvest","sponsorship","syndicate","track","tracked","anywhere","appear","before","billable","browser","budget","client","clients","designed","device","effortlessly","favorite","finish","flies","happy","hours","invoices","longer","management","mobile","professional","project","projects","reports","starting","timer","today","tracking","trial","visual","within"]
},{
"title": "Quick Tip: Chrome Extensions that make GitHub rock",
"url": "/2013/02/13/quick-tip-chrome-extensions-that-make-github-rock/",
"tags": ["chrome","github"],
"date": "Feb 13th, 2013",
"ts": "1360801620",
"summary": "After some annoyances with the latest version of Safari, I switched over to Google Chrome full time. I had every intention of switching back when the kinks were ironed out of Safari, but the extensions available for Chrome have kept me hesitant to leave it behind. I m especially enamored with the great selection of GitHub extensions available. This is a list of the ones I use often enough that viewing the GitHub website without them is a shocker. Most of them are unobtrusive while adding functionality which has become essential to me. Diff for gist.github Adds colorized version comparison capability directly into a Gist page. Completely unobtrusive and exceptionally handy. GitHub Cue Adds a box to your profile page with interesting repository recommendations based on scraping the contents of public profiles you ve starred. GitHub Difftools Adds additional diff options for comparing commits, tags and branches. GitHub HTML preview Adds a button when viewing HTML files in a repo to preview them as rendered documents, in-page. Great for viewing web development project files without having to go to an external demo. GitHub improved In-page changeset unfolding (plus some other subtle goodies) on commit history pages. Click on the line for a commit and see all of the diffs for the commit appear right below. GitHub Markdown Preview Adds Markdown preview in text fields on GitHub that support Markdown input. Great for when you re wondering how it s going to render that odd syntax you used for nested code blocks inside a blockquote. GitHub Repository Recommendation Adds a little You might also like: line to the header of any GitHub project. A little obtrusive, but it comes up with some cool suggestions based on the starred projects of other users who have starred the project you re viewing. GitHub Tree When viewing a repository, a little Octocat shows up in your url bar, and clicking it drops down a full tree view of the repository structure with collapsing sections for quick navigation. That s awesome. github-find Adds a search box to repository pages that allows search just within that repository. Those are my current favorites. I d love to hear about any others, or your favorite Userscripts, if you have some interesting ones. Drop em in the comments!",
"keywords": ["chrome","github","google","safari","chrome","click","completely","difftools","extensions","github","google","great","markdown","octocat","preview","recommendation","repository","safari","userscripts","adding","allows","annoyances","appear","available","awesome","based","behind","below","blockquote","blocks","branches","button","capability","changeset","clicking","collapsing","colorized","comes","comments","commit","commits","comparing","comparison","contents","development","diffs","directly","documents","drops","enamored","enough","especially","essential","extensions","external","favorite","favorites","fields","files","functionality","github","going","goodies","great","handy","having","header","hesitant","history","improved","input","inside","intention","interesting","ironed","kinks","latest","leave","little","navigation","nested","obtrusive","often","options","others","pages","preview","profile","profiles","project","projects","public","quick","recommendations","rendered","repository","right","scraping","search","sections","selection","shocker","shows","starred","structure","subtle","suggestions","support","switched","switching","syntax","unfolding","unobtrusive","users","version","viewing","website","while","within","wondering"]
},{
"title": "Systematic #31 - Jason Rehmus",
"url": "/2013/02/12/systematic-number-31-jason-rehmus/",
"tags": ["podcast","systematic"],
"date": "Feb 12th, 2013",
"ts": "1360714380",
"summary": "Jason Rehmus, freelance editor and writer, joined me this week to talk about among other things his own story of changing his own life on his own terms. It s a great example of the Midwest work ethic. I know, people everywhere work hard, but us upper-Midwest folk take pride in the reputation. I can t explain it. I ve worked with Jason before he helped me build and edit the documentation in the current version of Marked (and recently guest-posted here ). It was a pleasure to finally get to talk to him just for fun! Check it out at 5by5.",
"keywords": ["apple","jason","podcast","rehmus","studios","twitter","check","jason","marked","midwest","rehmus","among","before","build","changing","editor","ethic","everywhere","example","explain","finally","freelance","great","guest","helped","joined","people","posted","pride","recently","reputation","story","terms","upper","version","worked","writer"]
},{
"title": "˙uʍop ǝpısdn sı plɹoʍ ǝɥʇ 'oN ¿ǝW",
"url": "/2013/02/12/uop-psdn-s-plo-on-w/",
"tags": ["service"],
"date": "Feb 12th, 2013",
"ts": "1360705800",
"summary": "To make up for my nerdery yesterday , I present the dumbest service ever made. By me, anyway, I d hate to strip that title unknowingly from someone else without a fair fight. I typed the alphabet and a few characters into some fun text! site and ran a quick regular expression to twist the originals and the replacements into a Ruby hash format. Break up the input string, reverse it and print out the replacement character if the original exists as a key in the hash. It will break on lots of characters and may cause unwanted hair growth. I have to stop writing now because I promised myself it wouldn t take me longer to post it than it did to write it. Should you be the sort who does want to send upside down text in IMs, I zipped it up below. I even put it up as a gist . Shameless. Of course, Dr. Drang would be able to make me feel better . Down Under v1 Download Down Under v1 The stupidest service I've ever made. It turns text upside down. Published 02/12/13. Updated 02/12/13. Changelog Donate More info",
"keywords": ["communities","expression","languages","networking","online","programming","regular","social","transformation","twitter","break","changelog","donate","download","drang","published","shameless","under","updated","alphabet","anyway","because","below","break","cause","character","characters","dumbest","exists","expression","fight","format","growth","input","longer","myself","nerdery","original","originals","print","promised","quick","regular","replacement","replacements","reverse","service","string","strip","stupidest","title","turns","twist","typed","unknowingly","unwanted","upside","wouldn","write","writing","yesterday","zipped"]
},{
"title": "Triggering tasks remotely with notifyutil and launchd",
"url": "/2013/02/11/triggering-tasks-remotely-with-notifyutil-and-launchd/",
"tags": ["jekyll","launchd","macos","notifyutil"],
"date": "Feb 11th, 2013",
"ts": "1360633140",
"summary": "Let me start this by saying that I m fully aware that there are multiple ways to accomplish this feat, and that my choice may not have been the perfect one. It happens to work around some frustrations I found with other solutions, but I kind of got on a kick of really wanting to make this work. It works (though it killed my Sunday). It s pretty complex to describe, though, so I ll probably end up leaving some holes in the story. If something doesn t make sense, point it out in the comments and I ll fill in the blanks. A job for each trigger A key for each trigger each job calls the same script with a different argument The first instance of the script that opens creates a shared id.running key for determining if a job is running (0 = unset, 1 = no job running, 2 = job running) The script argument sets a unique notification key for the instance and assigns a set of tasks for that trigger The script launches with the unique key, causing it to wait for a notification to be posted to that key before continuing When that key is posted to, yields and the script continues: If the running.id state is 2, it pauses and polls for the current job to finish (id.running = 1) It sets the id.running key to 2 to indicate that its own job has started Performs the tasks for that key Remove the id.running notification Loop returns to waiting for a signal launchd ( man page ) A system built into OS X that handles scheduled, constant and triggered tasks for the system. It s easy to add your own tasks and have run in the background as any user. notifyd/notifyutil ( man page ) The notification system in OS X is an easy way to post messages between shells and across users. It registers keys such as and allows you to listen to them, post values to them and query their value. You can name your keys whatever you like, you just have to know the name of it to call it later. For my Jekyll listeners I ve been using a convention like jekyll.deploy and jekyll.generate . Easy to remember. An active key can have a state set using , where 123 is the numeric value to assign. I use these to mark whether jobs are running or idle, with 0 being inactive, 1 being listening, and 2 being running. You can query the value of the key with . I wanted to be able to control more aspects of my computer remotely than standard methods would allow. I pulled a few hairs out trying to solve various problems, and this is what it came down to. The reason I",
"keywords": ["address","applescript","launchcontrol","launchd","script","secure","shell","actions","applescript","applescripts","bettertouchtool","cocoa","eventscripts","hopefully","internet","jekyll","launchcontrol","lingon","performs","pushover","rakefile","remote","remove","running","sunday","triggering","using","ability","above","access","accessible","accidentally","across","action","actions","active","added","adding","agent","agents","alias","alive","allow","allows","anyone","applications","argument","arguments","aspects","assign","assigns","associated","automate","automatically","automation","aware","background","based","basics","because","before","begins","between","blanks","browser","build","builds","built","called","calls","causing","central","centralize","change","choice","choose","combination","command","comments","compared","compiled","complex","complicated","computer","concept","confirmation","confirming","considerations","constant","continues","continuing","control","controlled","convention","convoluted","creates","daemon","dated","deploy","deploying","deploys","describe","descriptive","details","detecting","determining","devices","different","directory","doesn","drafting","easiest","easily","endless","entry","environment","errors","everything","example","except","expand","expert","externally","fashion","faster","favorite","feature","feedback","files","finish","finishes","first","folder","foolproof","forces","forgotten","found","front","frustration","frustrations","fully","generation","glance","going","hairs","handed","handle","handles","hanging","happens","having","headaches","helpful","holes","hooks","impetus","implementation","inactive","incarnation","including","inspirational","instance","interface","interfaces","invisibly","involved","issues","jekyll","keeping","keeps","killed","languages","later","latest","launchd","launches","leaving","listen","listener","listeners","listening","loaded","loading","local","login","machine","maintaining","manages","mention","messages","methods","minutes","modicum","motion","moved","multiple","narrows","necessary","neither","notification","notifications","notifyd","notifyutil","numeric","opening","opens","others"]
},{
"title": "beengone: a script-friendly way to check computer idle time",
"url": "/2013/02/10/beengone-check-computer-idle-time/",
"tags": ["scripting"],
"date": "Feb 10th, 2013",
"ts": "1360522800",
"summary": "I spent too long figuring this out, but I m quite certain there are at least 3 people who can put the result to good use. I don t know who they are yet, but they ll show up. Eventually. I wanted a way to detect whether I was at my computer or not when a script finished, and if I d been gone a certain amount of time send me a text message or push notification instead of displaying a Growl popup. I had everything worked out except for the actual detection. I was just going to use AppleScript and check for the ScreenSaverEngine process, but that proved not to be failsafe. I did some digging, only to find that OS X doesn t seem to expose that information directly anywhere. Now, if you re using Growl, you can easily add push notifications only on idle using Pushover , Boxcar or Prowl . Pushover even has an API that you can integrate in non-Growl scripts. When using the API, though, you can t detect idle the way the Growl plugin does. For applications where I want a configurable time limit and need to trigger something like another task or anything other than push notifications, I needed a means to detect idle time on my own. Enter I/O Kit . I learned this technique for detecting the idle status from a post by Jean-David Gadina . I hacked together my solution from his examples, and most of the credit for the final product really goes to him. The result is a little CLI called . You simply run it from a script with a number that represents the amount of time (in minutes) that you want to test for. If there hasn t been any keyboard or mouse input within the number of minutes you specify, it prints out true and a 0 exit code. If there has, then you haven t been gone and it outputs false and exits with a non-zero status. It s designed to be used in scripts, where you can just call it with: and it will tell you if there has been activity in the last 5 minutes. Capture the output on STDOUT or use the exit code to handle logic in your script. If you want to check and make sure it s working, run: Then, don t touch anything for five seconds. If it s working, it will output true on STDOUT. If not, you ll see false and there may be something providing input to your computer in the background which is preventing idle. I haven t seen WOL or anything else affect it yet, though. (Of course, you could get more elegant with how the CLI is called, and I ll probably eventually write a wrapper using the Process module.) is a simple tool and a simple solution which",
"keywords": ["applescript","command","growl","interface","programming","screensaverengine","standard","streams","applescript","boxcar","capture","changelog","david","donate","download","enter","eventually","gadina","growl","process","prowl","published","pushover","stdout","screensaverengine","updated","action","activity","amount","another","anywhere","applications","background","based","beengone","below","binary","called","certain","check","command","computer","configurable","credit","curious","designed","detect","detecting","detection","digging","directly","displaying","doesn","download","easily","elegant","eventually","everything","example","examples","except","exits","expose","failsafe","fairly","false","figuring","finished","folks","foolproof","going","hacked","handle","haven","helps","information","input","integrate","keyboard","learned","limit","little","logic","message","minutes","module","mouse","needed","needs","notification","notifications","original","output","outputs","people","plugin","popup","preventing","prints","process","product","proved","providing","quick","represents","results","script","scripts","seconds","seems","simple","simply","solution","specify","spent","status","technique","together","touch","trigger","using","wanted","where","within","worked","working","works","wrapper","write"]
},{
"title": "The joy of sshfs",
"url": "/2013/02/10/the-joy-of-sshfs/",
"tags": [],
"date": "Feb 10th, 2013",
"ts": "1360504800",
"summary": "I know a lot of web developers still use FTP clients to work on remote servers. I prefer to have a local dev install and use scp, rsync and git to push changes whenever it s feasible. When I can t do that, though, I use . (SSH Filesystem) allows me to mount a remote server over SSH on my local filesystem, very similar to the way ExpanDrive does it (using FUSE). In addition to web design work, this can be great for system administration and other applications where you have to work on a remote server where you don t a full dev environment set up. You get to use your own tools on your local machine while working directly with the files on the remote, all with the security of SSH. If this sounds interesting, here s the easiest way to get started. Install homebrew (if you haven t already), then use it to install and : You can grab a binary installer for Fuse4X and manually build sshfs if you don t want to deal with Homebrew, but for ease of install/uninstall, you really can t beat . There s also a new project called Fuse for OS X that is supplanting Fuse4X, but the above combination is perfectly stable for now and is to the best of my knowledge the path of least resistance for getting up and running quickly. Make a folder called mounts in your home folder (or whatever/wherever you want to mount the filesystems, but you ll need to modify the following scripts). Add and below to your to be able to quickly mount and unmount remote directories locally: These functions work with any host set up in (key pair access preferred, especially for scripting mounts). Say you have a section in your : and you have a key pair set up for password-less entry. Now you can just type to mount the entire filesystem in (the script will auto-generate the folder name based on the host or directory name). Typing would mount only the Home folder of a co-located Mac mini in . Running un-mounts the remote folder and removes the local mount point. Why do this? Because, now you get all of the benefits of working on your own system. It s as secure as SSH/SFTP but with access to your local environment and applications, and there s no need to download each file you want to work on and wait for it to sync back up. Yes, it s a bit slower (a bit determined by bandwidth, of course) than your local filesystem, but the direct tunnel keeps things moving nicely 1 . / (no or local listener required) (Quick Look from the command line) quick file copy/move between filesystems (no",
"keywords": ["mount","protocol","quick","secure","server","shell","sshfs","awesome","because","expandrive","filesystem","finder","happy","homebrew","install","multimarkdown","qlcolorcode","qlstephen","quick","quicklook","running","terminal","tricks","typing","above","access","administration","allows","anyone","applications","bandwidth","based","beautiful","because","below","benefits","between","binary","browsing","build","called","changes","check","client","clients","clipboard","combination","command","compensated","compression","design","determined","developers","direct","directly","directories","directory","download","easiest","entire","entry","environment","especially","faster","feasible","files","filesystem","filesystems","first","folder","functions","getting","goodness","great","handy","haven","homebrew","including","install","installer","interchangeability","interesting","invested","keeps","knowledge","listener","local","locally","located","machine","manually","master","modify","mount","mounts","moving","needed","nicely","often","password","perfectly","point","prefer","preferred","previews","project","quick","quickly","remote","removes","required","resistance","reverse","rsync","running","script","scripting","scripts","section","secure","security","server","servers","sessions","setting","similar","slower","sometimes","sounds","special","speed","sshfs","stable","started","super","supplanting","system","think","tools","trumps","tunnel","tunneling","turning","uninstall","unmount","updated","using","whatever","whenever","where","wherever","while","working"]
},{
"title": "Web Excursions for February 09, 2013",
"url": "/2013/02/09/web-excursions-for-february-09-2013/",
"tags": ["bookmarks"],
"date": "Feb 9th, 2013",
"ts": "1360445400",
"summary": "Web excursions brought to you in partnership with MindMeister , the best collaborative mind mapping software out there. gistsearch.org Stumbled on this accidentally, but I really like it. Aside from being able to see all of your gists on a single page, the search is quite good. Took a few minutes to index my collection, but the results are great. My OmniFocus Setup This post from Michael Schechter is an outstanding look at the way one person uses OmniFocus. It s not likely that it would work for you out of the box, but it s a great starting point for thinking about how you want to handle your own system. Office Coffee I ve always loved the coffee my Aeropress makes. Then I followed this recipe and found out I was missing the goal by a long shot. I am currently drinking a sinfully amazing cup of Joe. iOS Automation and Workflows with Drafts I ve said it before, but let me say it again: Federico Viticci is insane in the most excellently nerdy way I can imagine. A great post on making the most of the latest features in Drafts . Sketch VS Photoshop I ponied up for Sketch after reading this. I had dropped Illustrator a while back and had just been using Photoshop s vector tools, but Sketch offers some great features for web and app developers. I don t know yet if it will stick, but I m continually pleased to see indie developers (also see: Acorn and Pixelmator ) offering valid alternatives to Adobe s overpriced albeit powerful products. Check out MindMeister and start brainstorming, collaborating, and boosting productivity.",
"keywords": ["acorn","adobe","federico","omnifocus","photoshop","pixelmator","viticci","workflow","acorn","adobe","aeropress","aside","automation","check","coffee","drafts","federico","illustrator","michael","mindmeister","office","omnifocus","photoshop","pixelmator","schechter","setup","sketch","stumbled","viticci","workflows","accidentally","again","albeit","alternatives","amazing","before","boosting","brainstorming","brought","coffee","collaborating","collaborative","collection","continually","developers","drinking","dropped","excellently","excursions","features","followed","found","gists","gistsearch","great","handle","imagine","index","indie","insane","latest","likely","loved","makes","making","mapping","minutes","missing","nerdy","offering","offers","overpriced","partnership","person","pleased","point","ponied","powerful","productivity","products","reading","recipe","results","search","sinfully","single","software","starting","stick","system","thinking","tools","using","valid","vector","while"]
},{
"title": "An iOS development saga: TimeToCall",
"url": "/2013/02/09/an-ios-development-saga-timetocall/",
"tags": ["appreview","developer","iphone"],
"date": "Feb 9th, 2013",
"ts": "1360422000",
"summary": "If you ve ever thought of developing an iPhone or iPad app or any app, really Hilton Lipschitz has chronicled the journey of his new release, TimeToCall . It s a great way to see the scope of an independent development project and the amount of work that goes into a carefully-considered application. If you ever call associates, friends or relatives in time zones other than your own, TimeToCall itself is also worthy of note. It s a take on apps like Cities and Synchronize , but is specifically geared toward helping people in multiple timezones find the right time to have a chat. You know, that ideal moment when everybody involved is awake (and sober). Thanks to Hilton for the epic series, it s a great resource for other devs and soon-to-be devs. Check out both the posts and TimeToCall !",
"keywords": ["apple","handhelds","iphone","smartphones","store","timetocall","check","cities","hilton","lipschitz","synchronize","thanks","timetocall","amount","associates","awake","carefully","chronicled","considered","developing","development","everybody","friends","geared","great","helping","iphone","ideal","independent","involved","itself","journey","multiple","people","posts","project","relatives","release","resource","right","scope","series","sober","specifically","thought","timezones","toward","worthy","zones"]
},{
"title": "Quick Tip: Jumping to the Finder location in Terminal",
"url": "/2013/02/09/quick-tip-jumping-to-the-finder-location-in-terminal/",
"tags": ["macos","terminal"],
"date": "Feb 9th, 2013",
"ts": "1360407600",
"summary": "I d been meaning to write a script to do this for a while, and a post by Dr. Drang inspired me to whip it up. Dr. Drang s is a TextExpander snippet (which also works fine in shell if you use quoted form of to be safe). This method is just a tad more convenient for Terminal usage. It s a two-line bash function for quickly -ing to the location of the front Finder window with a simple command (). There are a few utilities to do this, like ShellTo and GoToShell , but why run an extra process when it s this easy? Just throw this in : Run and type to change your working directory to match your Finder location. Type to open a Finder window to your current location in the shell.",
"keywords": ["directory","finder","howbert","operating","posix","systems","terminal","window","working","drang","finder","gotoshell","shellto","terminal","textexpander","updated","added","alias","based","change","command","convenience","convenient","create","directory","extra","front","function","functionality","gracefully","inspired","location","match","meaning","method","process","quickly","quoted","reverse","script","shell","simple","snippet","speed","suggestions","throw","usage","utilities","while","window","working","works","write"]
},{
"title": "Every last Systematic show link",
"url": "/2013/02/08/every-last-systematic-show-link/",
"tags": ["scripting","systematic"],
"date": "Feb 8th, 2013",
"ts": "1360373280",
"summary": "I ve done 30 episodes of Systematic now. Every week I goad my guests into sharing their Top 3 Picks. It s usually software (kind of my thing), but it can be just about anything. After so many episodes I began to realize that I had no way to give guests advance warning as to what had been mentioned recently. I needed a list of every link ever mentioned on the show, all in one searchable page. I wrote a quick script that creates a Markdown-formatted list of show links for any show page on 5by5. Click and copy. Then, I wrote one that spidered through the show starting from the first episode, just to get me caught up. Not surprisingly, I decided to test it on other people s shows, too The end result is an easy-to-maintain list of every link ever posted for Systematic. After finishing the current list, I thought that at least the single-page scraper would be of interest to somebody out there, as it s a really easy way to archive the week s links from your favorite show. Click it and they re ready to pop into nvALT or Evernote or whatever your bag is 1 . Note that this uses markup specific to 5by5 show pages and relies on jQuery already being loaded (which it is on 5by5). The script is best used as a bookmarklet, which I happen to have handy. Copy it into the address field of a bookmark in your browser ( raw code here ), visit a 5by5 show page and click it to run. If for some reason you re interested in the one that spiders an entire show, let me know. It s not a secret or anything, I just can t imagine anyone else thinking that would be a good time. I actually have another one of these that lets you click any element on a page to gather all of the links within that element and send them straight to Pinboard. Another time.",
"keywords": ["cascading","formats","jquery","pinboard","sheets","studios","style","another","click","evernote","markdown","picks","pinboard","systematic","address","another","anyone","archive","began","bookmark","bookmarklet","bookmarklets","browser","caught","click","creates","decided","element","entire","episode","episodes","favorite","field","finishing","first","formatted","gather","guests","handy","happen","imagine","interest","interested","jquery","links","loaded","looks","maintain","markup","mentioned","needed","nvalt","pages","people","posted","quick","ready","realize","recently","relies","scraper","scraping","script","searchable","secret","sharing","shows","simple","single","software","somebody","specific","spidered","spiders","starting","straight","surprisingly","thinking","thought","through","usually","visit","warning","whatever","within","wrote"]
},{
"title": "Sponsor: Igloo Software",
"url": "/2013/02/07/sponsor-igloo-software/",
"tags": [],
"date": "Feb 7th, 2013",
"ts": "1360260000",
"summary": "It s because the consumer cloud is easy and fast. But it s not always secure enough for your business intellectual property. It certainly doesn t meet Corporate s policies for auditing and data retention. It s simply not the cloud you re looking for. Igloo is built in the enterprise cloud. We re made for business, but still fast and easy to use. In fact, we have a full suite of social tools, like blogs, built around secure document management, collaboration and version control. (We have all the security acronyms you need. Really.) It s time you try Igloo (and check out our fancy new form, too.)",
"keywords": ["business","cloud","computing","consumer","control","document","igloo","intellectual","management","property","retention","revision","system","corporate","igloo","sponsorship","syndicate","acronyms","auditing","because","blogs","built","business","certainly","check","cloud","collaboration","companies","consumer","control","document","doesn","employees","enough","enterprise","fancy","intellectual","looking","management","person","policies","property","retention","secure","security","services","simply","social","store","suite","synchronize","tools","using","version"]
},{
"title": "iPhone App Review: Horizon",
"url": "/2013/02/07/iphone-app-review-horizon/",
"tags": ["appreview","iphone"],
"date": "Feb 7th, 2013",
"ts": "1360249980",
"summary": "A new iPhone app with a clever premise hit iTunes today. Horizon is a calendar app with location-aware weather forecasts built in. Now you can see your schedule and what the weather will be during each appointment at a glance. With uncanny speed, Horizon adds weather icons to each event up to 2 weeks in advance. You can create new events right in the app and get instant weather forecasts just by tapping and holding dates in the calendar view. New events are smart enough to default to the day you re currently viewing. Horizon is elegant and good looking, and even has a night mode for dimmed viewing. It supports both Fahrenheit and Celsius, 12 and 24-hour time and full swipe gesture support. If you ever schedule weather-sensitive events, Horizon may be for you. It s currently just US $2.99 ($1.99 temporarily) on the iTunes App Store!",
"keywords": ["calendar","celsius","fahrenheit","forecasting","google","iphone","itunes","store","weather","celsius","fahrenheit","horizon","store","appointment","aware","built","calendar","clever","create","dates","default","dimmed","elegant","enough","events","forecasts","gesture","glance","holding","iphone","itunes","icons","instant","location","looking","night","premise","right","schedule","sensitive","smart","speed","support","supports","swipe","tapping","temporarily","today","uncanny","viewing","weather","weeks"]
},{
"title": "Mac App Review: MultiMarkdown Composer 2",
"url": "/2013/02/06/mac-app-review-multimarkdown-composer-2/",
"tags": ["appreview","macos"],
"date": "Feb 6th, 2013",
"ts": "1360171140",
"summary": "Fletcher Penney recently released MultiMarkdown Composer 2 on the Mac App Store. It s a cleaned-up, smoothed-out, feature-packed version of the previous incarnation. I m loving it. Of the many features I find appealing, one of the most unique is the ability to reorganize a document via the Table of Contents pallete. Each header in your document is displayed in an appropriate hierarchy, and dragging list items around in the palette will actually move the headline and its associated paragraphs and elements around in the document. You can even change the level of the header and move between parents. Very slick. The live Web Preview is accurate and scrolls to exactly where you re working in the document. Of course, you can still use Marked for preview and get its additional flexibility. The Increase/Decrease Selection tools are some of the best I ve seen, too. Byword does a great job with this, but MMDC 2 can handle all kinds of elements for example, pressing inside of a list item will select the word under the cursor, then the sentence, then the list item and finally the entire list (then the whole document, if you keep going). The Decrease Selection will incrementally bring you back down to exactly where you began. You can also quickly move text selections around via the keyboard. All of the editing features are smarter than ever, including smart MultiMarkdown table editing, smarter character pairing and all manner of Markdown element creation. The editor can still be styled via external stylesheets, but the syntax has been expanded and is even more customizable. If you re looking for a full-featured Markdown/text editor that handles large documents and allows structure manipulation, I highly recommend checking MultiMarkdown Composer 2 out. It s even on sale right now for just $4.99.",
"keywords": ["composer","contents","document","element","markdown","multimarkdown","store","table","byword","composer","contents","decrease","fletcher","increase","markdown","marked","multimarkdown","penney","preview","selection","store","table","ability","accurate","allows","appealing","associated","began","between","bring","change","character","checking","cleaned","creation","cursor","customizable","displayed","document","documents","dragging","editing","editor","element","elements","entire","example","expanded","external","feature","featured","features","finally","flexibility","going","great","handle","handles","header","headline","hierarchy","highly","incarnation","including","incrementally","inside","items","keyboard","kinds","level","looking","loving","manipulation","packed","pairing","palette","pallete","paragraphs","parents","pressing","preview","quickly","recently","recommend","released","reorganize","right","scrolls","selections","sentence","slick","smart","smarter","smoothed","structure","styled","stylesheets","syntax","table","tools","under","unique","version","where","whole","working"]
},{
"title": "Web Excursions for February 6th, 2013",
"url": "/2013/02/06/web-excursions-for-february-6th-2013/",
"tags": ["bookmarks"],
"date": "Feb 6th, 2013",
"ts": "1360161000",
"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. LaunchControl The new face of launchd. Nice. Complete access to every option and flag available to in a pretty nice interface. Lingon X A new version of Lingon released outside of the App Store for $5. More advanced controls, including running jobs as root. Between this and LaunchControl above, it s a free-for-all. Photoshop Tutorials Photoshop Lady Now that I m not using Photoshop as much for mockups, I think it s time to get back to creating rich images just for fun MailTags 3.2 Lots of improvements, optimizations and new features in the new version. Improved searching, settings sync (iCloud) and Tickle Date notifications included. Giphy Because you can t have a TextExpander snippet for every clever animated GIF response 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": ["adobe","graphics","growl","icloud","launchcontrol","launchd","photoshop","store","backblaze","because","between","check","giphy","improved","launchcontrol","lingon","mailtags","photoshop","store","textexpander","tickle","tutorials","above","access","advanced","affordably","animated","available","backs","brought","clever","cloud","computer","controls","creating","entire","everything","excursions","features","icloud","images","improvements","included","including","interface","launchd","mockups","notifications","optimizations","outside","partnership","released","reliably","response","running","searching","securely","settings","snippet","think","today","using","version"]
},{
"title": "Systematic #30 with John August",
"url": "/2013/02/05/systematic-30-john-august/",
"tags": ["podcast","systematic"],
"date": "Feb 5th, 2013",
"ts": "1360101180",
"summary": "I was joined this week by John August, the screenwriter behind Frankenweenie, Corpse Bride, Big Fish and a dozen other great films. He s also one of the masterminds behind the Fountain plain-text scriptwriting syntax and the upcoming app Highland which can convert Fountain syntax to a variety of output formats (including FDX). It was a great chat, and an enlightening look into the life of a screenwriter in Hollywood. Thanks again to John, and I hope everyone finds something in this episode to enjoy!",
"keywords": ["bride","corpse","fountain","frankenweenie","hollywood","plaintext","screenwriter","bride","corpse","fountain","frankenweenie","highland","hollywood","thanks","again","behind","convert","dozen","enjoy","enlightening","episode","everyone","films","finds","formats","great","including","joined","masterminds","output","screenwriter","scriptwriting","syntax","upcoming","variety"]
},{
"title": "Faceless, nameless, unforgettable",
"url": "/2013/02/04/faceless-nameless-unforgettable/",
"tags": ["personal"],
"date": "Feb 4th, 2013",
"ts": "1360037580",
"summary": "You know those relatively mundane moments that you remember forever? The right friends, the right music, the right lighting, the right temperature: suddenly there s this moment that you know you ll never forget. It s not a rush of fear or adrenaline, it s not an event or circumstance, it s just a moment that somehow wrote itself to your permanent storage. It s when the band goes into the breakdown and the lights go blue. The venue is just quiet enough to yell something in your friend s ear before you feel the beat start to pick up, and then it happens: the blinders come on in their amber glory and you re flooded with the sound. Everyone else disappears and the fatigue of standing through the opening act just fades away. It s that moment when you were standing next to the picnic table and the portable stereo was playing something danceable but not particularly memorable. It s hard to remember who was there, but the setting sun and the smell of the campfire and lingering firework smoke was just right the memory is seared into your brain as a combination of visual, olfactory and audio sensations. It doesn t really matter when or where, even who. It doesn t matter if I took a picture, tweeted it or told anybody about it. Without faces, without names, these are the memories that will keep me warm when everything else grows cold.",
"keywords": ["business","entertainment","equipment","garden","independence","picnic","shopping","states","table","tools","united","everyone","adrenaline","amber","anybody","audio","before","blinders","brain","breakdown","campfire","circumstance","combination","danceable","disappears","doesn","enough","everything","faces","fades","fatigue","firework","flooded","forever","forget","friend","friends","glory","grows","happens","itself","lighting","lights","lingering","memorable","memories","memory","moments","mundane","music","names","olfactory","opening","particularly","permanent","picnic","picture","playing","portable","quiet","relatively","remember","right","seared","sensations","setting","smell","smoke","somehow","sound","standing","stereo","storage","suddenly","table","temperature","through","tweeted","venue","visual","where","wrote"]
},{
"title": "Systematic #29, please drink responsibly",
"url": "/2013/02/02/systematic-number-29-please-drink-responsibly/",
"tags": ["podcast","systematic"],
"date": "Feb 2nd, 2013",
"ts": "1359789000",
"summary": "Systematic #29 was posted earlier today, including interviews with Victor Agreda Jr., Michael Schechter and Fletcher MultiMarkdown Penney, M.D.. It consists of off-the-cuff chats during my week at Macworld and is to be taken lightly and with a sense of humor. Hope you enjoy it. I ll be back on a more normal Systematic schedule this coming week, but it was great to connect with some fellow geeks at Macworld. Thanks to everyone who took the time to catch up with me this week, and my apologies to the people who I missed in my scheduling. I know there were a few. I ll be looking forward to catching up with more folks at WWDC!",
"keywords": ["agreda","apple","ashton","francisco","iphone","kutcher","macworld","michael","schechter","victor","agreda","fletcher","macworld","michael","multimarkdown","penney","schechter","systematic","thanks","victor","apologies","catch","catching","chats","coming","connect","consists","earlier","enjoy","everyone","fellow","folks","geeks","great","humor","including","interviews","lightly","looking","missed","normal","people","posted","schedule","scheduling","sense","taken","today"]
},{
"title": "jQuery Fiddler for LaunchBar",
"url": "/2013/01/31/jquery-fiddler-for-launchbar/",
"tags": ["launchbar","webdesign"],
"date": "Jan 31st, 2013",
"ts": "1359671040",
"summary": "I m tossing an early-morning project out there for anyone who might find it useful. It was inspired by a quick tip via OneThingWell . It lets you pop up LaunchBar, type in a Sparkup format string and create a temporary playground (with jQuery loaded) in Chrome. You can then use the inspector to modify elements and test out jQuery. This should really be done with JSFiddle , of course. It was just an experiment to see what was possible. I often find myself creating quick HTML structures in this way for testing out an idea, though, and it doesn t require an internet connection. It s just a really fast way to set up a playground. I think it has a place. To run it, just unzip and drop the file in . Pop up LaunchBar and type jq or however many letters it takes to get the action to show up, then hit space. Type in a string such as div#main ul.nav li*6 a{link} and you ll get an html page in your current Chrome tab with a #main div and an unordered list with a class of nav and 6 links. Open the Web Inspector (I) and you re good to start playing. It adds a simple rule with some background color and padding just to save me some time. You can adjust that in the embedded Python script. You can easily modify this to work with Safari by editing the main script in AppleScript Editor. You should just be able to change Google Chrome to Safari, but I haven t tested yet. jQuery Fiddler v1.1 Download jQuery Fiddler v1.1 Create a temporary HTML structure with jQuery loaded in a browser tab from LaunchBar Published 01/31/13. Updated 01/31/13. Changelog Donate More info",
"keywords": ["applescript","chrome","element","google","jquery","launchbar","python","safari","applescript","changelog","chrome","create","donate","download","editor","fiddler","google","inspector","jsfiddle","launchbar","onethingwell","published","python","safari","sparkup","updated","action","adjust","anyone","background","browser","change","class","color","create","creating","doesn","easily","editing","elements","embedded","experiment","format","haven","however","inspector","inspired","internet","jquery","letters","links","loaded","modify","morning","myself","often","padding","playground","playing","possible","project","quick","script","simple","space","string","structure","structures","takes","temporary","tested","testing","think","tossing","unordered","unzip","useful"]
},{
"title": "Web Excursions for January 30, 2013",
"url": "/2013/01/30/web-excursions-for-january-30-2013/",
"tags": ["bookmarks"],
"date": "Jan 30th, 2013",
"ts": "1359556980",
"summary": "Web excursions brought to you in partnership with CleanMyMac X , all the tools to speed up your Mac, in one app. tednaleid/sublime-EasyMotion I m really happy to see one of my favorite Vim plugins available for Sublime Text 2. Just hit Command- and type a letter you want to jump to on the visible screen and then hit the hint character that shows up for it. Also handles selecting between the cursor and a jump character. Developers: Heres how to add a little 1Password to your iOS apps I would love it if more iOS devs took advantage of this. Sublime Blog Sublime Text 3 Beta Sublime Text 3 beta out before I feel like I m really good with Sublime Text 2? Can t complain about progress begriffs/css-ratiocinator Automatic refactoring of CSS ot remove redundant and overly-specific selectors. It s really handy for trimming down styles, finding errors and cleaning up legacy code. iRig BlueBoard This is exactly what the iRig lineup has needed for a while. Glad to see it coming down the pipe.",
"keywords": ["cascading","formats","linux","sheets","style","sublime","automatic","blueboard","cleanmymac","command","developers","easymotion","heres","password","sublime","advantage","available","before","begriffs","between","brought","character","cleaning","coming","complain","cursor","errors","excursions","favorite","finding","handles","handy","happy","legacy","letter","lineup","little","needed","overly","partnership","plugins","ratiocinator","redundant","refactoring","remove","screen","selecting","selectors","shows","specific","speed","styles","sublime","tednaleid","tools","trimming","visible","while"]
},{
"title": "Guest post: Three Tips For Editing With Marked",
"url": "/2013/01/29/guest-post-three-tips-for-editing-with-marked/",
"tags": ["marked"],
"date": "Jan 29th, 2013",
"ts": "1359468000",
"summary": "While I m at Macworld, my friend Jason Rehmus has provided a guest post. Jason did the editing for the Marked 1.4 documentation and has just launched Sweating Commas, where he provides affordable editing services for bloggers and web writers. Be sure to check it out! We ll be talking about Marked today, so let s assume you re writing your blog posts using Markdown. If not, you should start doing that on your very next post. If you re unsure about making a change like that, here s why you should give it a shot. Some of you out there may use a writing app that converts your marked-up text as you type. I don t use those apps because I m pretty sensitive to distraction while I m writing. Using a very basic program, like TextEdit, suits me perfectly. However, since I prefer to write my blog posts and other pieces in Markdown, I do still want a way to preview the formatting before publishing. That s why I love using Marked. Once I reach a point in my process where previewing the work is appropriate, I just drag the text file to Marked in my dock and the formatted post jumps up instantly. Brett put some great features into Marked, but the one I use most frequently is the custom CSS feature. I m not a coder or a designer, so I don t go crazy with this, but just a few tweaks have given me some very handy editing tools. After I ve written several drafts of my posts, I like to do a few passes that focus on very specific areas. Using custom style sheets like this provides switches that let me see what I want to see and ignore the rest. The first thing I like to look at is the rhythm of the piece. This is kind of subjective, but as you get comfortable evaluating your own writing, you ll notice patterns. A quick way to see the rhythm in your writing, in a broad sense, is to look at the relative sizes of your paragraphs. If they re all the same size, your post will have a very regular cadence. This is good for some writing, and it s up to you to learn whether or not it s good for yours. Using a style sheet I call Zoom Mode, I can see how my paragraphs look compared to each other. I don t need Marked to view my writing this way, but the Zoom Mode style sheet allows me to emphasize certain elements in the styling to make the comparison very easy to see. Here s what this post looks like in Zoom Mode: The next step for me is to meticulously read through the post, focusing exclusively on the language. Since I m easily distracted, I don t want to see links during",
"keywords": ["cascading","formats","macworld","markdown","sheets","style","textedit","tutorials","before","brett","check","commas","however","jason","macworld","markdown","marked","rehmus","since","sweating","textedit","using","while","accompanies","accurate","affordable","afraid","allowing","allows","areas","assume","basic","because","before","bloggers","broad","cadence","causes","certain","change","check","click","coder","comfortable","compared","comparison","confident","converts","crazy","custom","designer","distracted","distraction","document","doing","drafts","easily","edited","editing","effectively","elements","emphasis","emphasize","encourage","errors","evaluating","exact","expecting","extra","feature","features","files","first","focus","focusing","formatted","formatting","friend","great","guest","handy","haven","hides","highlighting","ideas","ignore","inconsistencies","incorrect","instantly","jumps","language","launched","learn","linked","links","looks","makes","making","marked","messages","messed","meticulously","opens","opposite","paragraphs","parts","passes","patterns","perfectly","phase","piece","pieces","point","posted","posts","prefer","prevent","preview","previewing","primarily","process","program","provides","publishing","quick","reach","readers","regular","relative","rewrite","rhythm","scream","second","sense","sensitive","seriously","services","several","sharing","sheet","sheets","since","sizes","sound","specific","spend","stage","style","styling","subjective","suits","switches","taken","taking","talking","technical","thoroughly","through","today","tools","tweaks","unsure","using","validating","validator","where","while","words","world","write","writer","writers","writing","written","zipped"]
},{
"title": "Macworld 2013",
"url": "/2013/01/28/macworld-2013/",
"tags": ["macworld"],
"date": "Jan 28th, 2013",
"ts": "1359385020",
"summary": "Well, I m in San Francisco for Macworld 2013. My first few days here are going to be consumed with planning a redesign for AOL Tech and doing some heads-down coding. If you re around, though, ping me and I ll see if I have time for coffee/beer/dinner/whatever. I m looking forward to meeting some people! I m planning to skip doing Systematic this week, but I did bring a microphone with me. If I run into some interesting people who have a few minutes, I may put together a collage show. To be determined and it definitely won t be released on my usual Tuesday schedule. The following week, though, I have John August booked (a great screenwriter). That s going to be a great conversation! On Thursday I m going to be doing a Macworld panel on workflows with David Sparks, Katie Floyd and Jeff Taekman. It should be a nerdy fun time talking about our favorite ways of getting various things done. I ll also be giving a talk at Appsterdam, though I m still not sure of the timing. Anyway, as I said, don t hesitate to at least drop me a line. I m looking forward to a week of making connections and meeting people I might never have seen in person before. Ping me on Twitter or drop me a line via the contact form !",
"keywords": ["apple","david","francisco","macworld","sparks","tuesday","twitter","anyway","appsterdam","david","floyd","francisco","katie","macworld","sparks","systematic","taekman","thursday","tuesday","twitter","before","booked","bring","coding","coffee","collage","connections","consumed","contact","conversation","definitely","determined","dinner","doing","favorite","first","getting","giving","going","great","heads","hesitate","interesting","looking","making","meeting","microphone","minutes","nerdy","panel","people","person","planning","redesign","released","schedule","screenwriter","talking","timing","together","various","whatever","workflows"]
},{
"title": "A guided tour of my Hyper key shortcuts",
"url": "/2013/01/26/a-guided-tour-of-my-hyper-key-shortcuts/",
"tags": ["keybindings","productivity"],
"date": "Jan 26th, 2013",
"ts": "1359210000",
"summary": "I have been asked a few times, so I m sharing my current Hyper key mappings on my trusty Apple Wireless Keyboard . These are the ones that have already sunk into my muscle memory. I ll add to them over time, but I like to take the keyboard shortcut thing slow and see what works before I go nuts . This list doesn t include application-specific mappings, of which I have a few. I m using the Hyper key primarily as an app launcher and switcher. It s faster than LaunchBar for my most-used apps, and especially for switching between them. That might not be the case for everybody, but pinkey to caps lock key and tapping a single letter with one of my other three fingers is extremely convenient to me. My most useful keyboard shortcuts are always mapped on the left half of my keyboard. This allows me to hit them quickly while my right hand is on my trackpad (I m right handed). Most of these shortcuts are assigned through BetterTouchTool s keyboard palette. Some are directly assigned in applications that allow global keyboard shortcuts, such as Simplify and iTerm s visor. q/w/e/r are apps that I commonly jump between. In a web dev context, for example, I often hop between my editor (Sublime) and my web browser, so having e and r contiguous on the keyboard readily available with a two-key shortcut reachable with my pinky on the Hyper key and my middle and first fingers on the shortcut keys makes life easier. These are apps that my job often requires me to jump between frequently. When Growl tells me that there s a new message in Adium, I can quickly tap Hyper-a to jump there, and I have it set up to jump to the most recently-updated chat and cycle through chats with waiting messages on repeated taps of Hyper-a. As an aside, I have a cool script for Skype that will answer or hang up the current call with a keystroke (/). I ve blogged it before but have updated it since. I ll share that soon. While one-handed shortcuts are generally preferable to me, there are times when two-handed shortcuts make sense this is primarily in cases where I m going to be using keyboard-only input anyway, such as launching nvALT. ←/→: Track change via Simplify ↑: Mission control t: iTerm (not visor) i: iTerm visor 6 iTerm visor, pause, in new tab I separate the iTerm visor key (which is how I normally use iTerm) from a shortcut that just focuses iTerm so that if I have a normal window running something at the time, I can switch to it directly. The 6 shortcut",
"keywords": ["apple","iterm","keyboard","launchbar","mailplane","shareware","shortcut","utilities","windows","wireless","adium","apple","bettertouchtool","choosy","email","finder","growl","hyper","keyremap","keyboard","keyremap","launchbar","macbook","mailplane","mission","omnifocus","simplify","skype","sleep","spaces","sublime","track","tweetbot","while","wireless","allow","allows","another","answer","anyway","apple","applications","aside","asked","assigned","available","before","bettertouchtool","between","blogged","brettterpstra","browser","change","chats","class","command","comments","commonly","context","contextual","contiguous","control","convenient","cursor","cycle","defined","desktop","directly","displays","doesn","easier","editor","email","escape","especially","everybody","example","faster","feature","fingers","first","focuses","generally","github","gives","global","going","great","handed","having","highlighter","https","iterm","ideas","input","itunes","keybinding","keyboard","keystroke","language","launcher","launching","ldquo","letter","madness","makes","mapped","mappings","master","mdash","memory","mentioned","message","messages","middle","mouse","muscle","navigate","navigation","normal","normally","nvalt","often","overview","palette","partnerid","pause","pinkey","pinky","plaintext","preferable","primarily","processes","quickly","rdquo","reachable","readily","recently","repeated","requires","right","rouge","rsquo","running","script","sense","separate","sequence","setup","share","sharing","shortcut","shortcuts","simplify","simultaneously","since","single","siteid","sourceforge","specific","spotify","strong","switch","switcher","switching","tapping","tekezo","tells","through","times","trackpad","trusty","updated","usage","useful","using","visor","waiting","where","wherever","while","window","works"]
},{
"title": "Web Excursions for January 24, 2013",
"url": "/2013/01/24/web-excursions-for-january-24-2013/",
"tags": ["bookmarks"],
"date": "Jan 24th, 2013",
"ts": "1359079500",
"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 combination of github and Markdown is really powerful for us. It s possible to clone our docs site repo and submit pull requests, but it s even easier to just click the edit button on Github, make a few changes, and save. Github turns the edit into a pull request we can either accept on the spot or pull into a separate branch for further work. Markdown makes that process so much more accessible and less error prone than it would be if we were using HTML for initial markup. Vicious for Xcode - 5vor9 Vi commands in Xcode. Looks pretty good to me, though I haven t purchased yet. Completing my Twitter archive Now that Twitter archives are available, you probably want to make them fit with all of the hackery you ve performed to build your own cdnjs - the missing cdn There are currently 256 different JS, CSS and other handy bits hosted on cdnjs for inclusion in your projects. Handy. The Post-PSD Era Yep.",
"keywords": ["cascading","github","markdown","puppet","sheets","style","twitter","xcode","check","completing","github","handy","looks","markdown","puppet","setapp","speaking","twitter","vicious","xcode","accept","access","accessible","archive","archives","available","branch","brought","build","button","cdnjs","changes","click","clone","combination","commands","different","easier","either","error","excursions","github","hackery","handy","haven","hosted","hundreds","inclusion","initial","makes","markup","missing","monthly","partnership","performed","possible","powerful","process","projects","prone","puppet","puppetlabs","purchased","requests","separate","subscription","system","today","turns","using"]
},{
"title": "A downloads manager for Jekyll",
"url": "/2013/01/24/a-downloads-manager-for-jekyll/",
"tags": ["jekyll"],
"date": "Jan 24th, 2013",
"ts": "1359043200",
"summary": "On my WordPress blog I ran a plugin called Download Monitor which allowed me to create download ids that could be inserted via short tags. When I updated a download version, any mention of it throughout the site would be updated to show the latest version and link to the most recent download package. I needed something similar on my Jekyll blog to keep things up to date. The following system is geared toward Jekyll but the concept could be adapted to any static blog. This file is editable in a plain text editor or in a spreadsheet app like Numbers, and doesn t require an existing WordPress database to start, just a plain old CSV file with the appropriate data. Updating a download s row in the CSV file with a new download link, version number, update time and/or description change will recreate all of the references to it in the site next time I build it. With a little modification, this system could easily be used to generate a Downloads page for my site, though I ve decided that s really not necessary. I may change my mind in the future, though. What I ve shared here is a functioning system that is currently in use. Before it s complete and ready to share in my plugins repo, there are a few things I d like to polish:",
"keywords": ["comma","directory","downloading","jekyll","leopard","plugin","separated","tools","uploading","values","wordpress","before","download","downloads","jekyll","liquid","monitor","numbers","possibly","service","updating","wordpress","adapted","added","adding","allowed","associated","build","called","change","clipboard","command","concept","create","database","decided","description","doesn","download","downloads","droplet","easily","editable","editing","editor","example","external","finding","functioning","geared","generated","generating","handle","hardcoded","inserted","latest","listed","little","looped","matches","matching","mention","metadata","multiple","necessary","needed","needs","nvalt","offer","package","plugin","plugins","polish","possible","reads","ready","recent","recreate","references","script","search","searching","selected","share","shared","short","similar","simple","spreadsheet","started","static","system","tasks","template","templated","templates","through","throughout","toward","typing","updated","updating","using","version","versions","works"]
},{
"title": "Maintaining documentation in Markdown",
"url": "/2013/01/23/maintaining-documentation-in-markdown/",
"tags": ["markdown"],
"date": "Jan 23rd, 2013",
"ts": "1358967600",
"summary": "Markdown can be a great tool for maintaining large documentation projects of any kind. There are simple and not-so-simple ways to create the output, but the basic idea is always to maintain the source documents in Markdown format. It provides an easy way to update and maintain multiple output formats and a centralized repository of information that s easily shared, community editable and ready to pass on to new participants. There are quite a few ways to work with such a system. I m going to outline a few that I ve used, but I know there are plenty more. Feel free to add your own favorites in the comments. VoodooPad from Flying Meat is a great desktop wiki that is Markdown-friendly and can output multiple formats, including websites (for intranet or internet publication) and PDF documents for distribution. As an example, the TextMate Blogsmith Bundle documentation site is entirely generated and maintained in VoodooPad using Markdown. It s built with an older version and doesn t take advantage of all the capabilities, but it works. The latest incarnation of VoodooPad includes a Collections feature which lets you organize the output in multiple ways, allowing you to create a more linear document that is more of a chapter-based guide and less of a wiki. Of course, it s perfect for wiki-type documentation as well. collaboration/sharing all source material contained in one place, and easily portable as a bundle automatic wiki linking, programmable functionality Collections pallette in 5.0 lets you organize chapters Relatively easy to customize appearance of output ScreenSteps is designed for creating documentation. With a little hacking about in the template system , it s easy to create a Markdown documentation system within the app. With the online sharing tools and the superb screenshot/annotation tools, it s ideal for screen-based documentation of all sorts. The gollum wiki system from Github is a simple way to make a community (or solo) documentation system. You can use Github to host the wiki or run on its own for a local intranet wiki. It doesn t lend itself very well to linear documentation or PDF/e-book output, but it s an ideal solution for group documentation of individual procedures, methods, style rules, etc. Optionally, you can combine the system with something like nvALT to make editing even easier. Because gollum allows you to store all of your files in a flat folder and create associations between them, nvALT can be",
"keywords": ["document","flying","format","github","gollum","portable","textmate","voodoopad","world","because","benefits","blogsmith","build","bundle","collaboration","collections","create","custom","customizing","default","flying","github","gollum","great","htmldoc","infinitely","instant","internal","leanpub","markdown","marked","multiple","optionally","output","outputting","pandoc","portability","presto","print","procedure","proprietary","python","ranked","readily","relatively","screensteps","steps","store","sublime","summary","textmate","voodoopad","write","ability","above","advantage","aliases","allow","allowing","allows","annotation","appearance","associations","automatic","based","basic","between","breakdown","brilliant","build","built","bundle","capabilities","capability","centralized","chapter","chapters","choose","collaboration","collaborative","coming","comments","community","concatenated","configuration","consider","contact","contained","control","convert","copying","create","creating","creation","custom","customization","customize","designed","desktop","detail","difficult","distribution","document","documents","doesn","drawback","easier","easily","editable","editing","editor","effort","elements","entirely","example","experimentation","export","extension","favorites","feature","files","flexible","folder","folders","format","formats","friendly","function","functionality","generated","generates","gitignore","going","gollum","great","group","guest","guide","hacking","handle","hierarchies","hierarchy","ideal","inability","incarnation","includes","including","inclusions","index","individual","information","internal","internet","intranet","itself","keywords","kramdown","latest","leanpub","level","libraries","linear","linking","links","listed","little","local","maintain","maintained","maintaining","maintenance","markdown","markup","maruku","merge","method","methods","modifying","multi","multiple","necessary","needed","notes","nvalt","older","online","options","organize","ouput","outline","output","pallette","participants","plenty","plugin","plugins","poorest","portable","posts","preview","print","printable","procedures","processing","processor","programmable","project","projects","provides"]
},{
"title": "Systematic #28: Jean MacDonald",
"url": "/2013/01/22/systematic-number-28-jean-macdonald/",
"tags": ["podcast","systematic"],
"date": "Jan 22nd, 2013",
"ts": "1358916000",
"summary": "Jean MacDonald joined me this week on Systematic to talk about girls with guitars, girls building apps and Markdown for the masses. TextExpander talk ensued, of course, as well as the always-fun Top 3 picks of the week from both of us. Thanks to Jean for making the time! Check out episode 28 at 5by5 !",
"keywords": ["howbert","markdown","merlin","studios","systematic","textexpander","check","macdonald","markdown","systematic","textexpander","thanks","building","ensued","episode","girls","guitars","joined","making","masses","picks"]
},{
"title": "Services for quickly opening iTunes and MAS links",
"url": "/2013/01/22/services-for-opening-itunes-mas-links/",
"tags": ["itunes","macappstore","service"],
"date": "Jan 22nd, 2013",
"ts": "1358866800",
"summary": "In Chrome and Safari I disable external URLS for iTunes and the Mac App Store to avoid the apps opening every time I look up an app. In Safari I use No More iTunes , and in Chrome I just disable external links of those types using the built-in security tools. However, I sometimes do want to open iTunes or the MAS, which can be cumbersome especially in Chrome if the process is disabled. Thus, I made a few quick System Services for handling this. The first set, Open in iTunes and Open in MAS take text as input and if it matches a url for an iTunes or MAS link opens it in the destination app. I couldn t find an easy way to differentiate between the two types of url, so it currently requires that you choose iTunes or MAS and run the appropriate service. I can quickly copy a url and run this from LaunchBar and pressing Space to paste the url in, or I can select a link and right click it to run the Service directly. To make this a little handier, I created a pair that opens the url in the front tab of the browser directly. By default it works with Chrome, but with a quick edit in Automator (comment one line, uncomment another), it will work with Safari instead. You can run them from LaunchBar (or any launcher that can run Services) or with a right click any time you don t have text selected. The scripts inside can be easily extracted using Automator and could be applied to any kind of action script or extension that can run a shell script. Nothing big, just a quick tool that happens to be handy in my set of circumstances. There s a download below containing all four services, and you can see the how-to page if you re unsure how to install and use them. Open link in iTunes or MAS v1 Download Open link in iTunes or MAS v1 Quickly open iTunes and MAS urls in their destination application Published 01/22/13. Updated 01/22/13. Changelog Donate More info",
"keywords": ["automator","chrome","google","itunes","launchbar","locator","resource","safari","store","automator","changelog","chrome","donate","download","however","launchbar","nothing","published","quickly","safari","service","services","space","store","system","updated","action","another","applied","avoid","below","between","browser","built","choose","circumstances","click","comment","containing","couldn","created","cumbersome","default","destination","differentiate","directly","disable","disabled","download","easily","especially","extension","external","extracted","first","front","handier","handling","handy","happens","itunes","input","inside","install","launcher","links","little","matches","opening","opens","paste","pressing","process","quick","quickly","requires","right","script","scripts","security","selected","service","services","shell","sometimes","tools","types","uncomment","unsure","using","works"]
},{
"title": "Sponsor: AAPLTrader.com",
"url": "/2013/01/21/sponsor-aapltrader-dot-com/",
"tags": [],
"date": "Jan 21st, 2013",
"ts": "1358789400",
"summary": "I d like to thank APPLTrader.com for sponsoring brettterpstra.com this week. AAPLTrader.com The best website for Apple traders is hosting a free live event to cover Apple Earnings this Wednesday at 4pm ET on their exclusive AAPL TV Channel. This event is going to be HUGE! Register for free today, and join the fastest growing network of Apple traders in the world as they cover the biggest earnings announcement in Apple s history. Plus, receive special bonuses with your free membership, including 9 powerful stock and option training courses, and access to their extensive social network where you can get tips and strategies from some of the best Apple traders in the world. Join AAPLTrader.com right now to get an official Apple Fundamental Analysis PDF so your ready for Wednesday s live Apple Earnings event. Look forward to seeing you this Wednesday, January 23rd at 4pm ET.",
"keywords": ["apple","channel","earnings","network","register","samsung","social","syndicate","television","wednesday","aapltrader","appltrader","apple","channel","earnings","fundamental","register","sponsorship","syndicate","wednesday","access","announcement","biggest","bonuses","brettterpstra","courses","cover","earnings","exclusive","extensive","fastest","going","growing","history","hosting","including","membership","network","official","powerful","ready","receive","right","seeing","social","special","sponsoring","stock","strategies","thank","today","traders","training","website","where","world"]
},{
"title": "Jekyll tag plugin for responsive YouTube video embeds",
"url": "/2013/01/20/jekyll-tag-plugin-for-responsive-youtube-video-embeds/",
"tags": ["jekyll","liquid","tagging"],
"date": "Jan 20th, 2013",
"ts": "1358704800",
"summary": "Update: I ve added code to the plugin to take the width and height and calculate the necessary intrinsic ratio for the embed and insert the necessary CSS inline. This prevents the need for any JavaScript solutions on different aspect ratio embeds. Thanks to Andrew Clark for the tip. I ll keep this short because I know that not too many of my readers give a flying fire truck about Jekyll. If you re one of the few, you can also skip straight to the README in my JekyllPlugins repository. This is just a quick tag I whipped up. It was simple enough that I didn t spend much time looking around to see if it already existed. It s specifically for embedding YouTube videos with extra code to make them responsive. You pass it a YouTube video id (optionally a full embed or page/shortened url, it will extract the id) and if needed a width and height. It defaults to 640 x 480. With the plugin installed, the following tag creates the video below. If you already have CSS similar to this in your stylesheet, you can adjust the class name on the wrapper and remove the line that inserts the style tag. The code is in my JekyllPlugins repository on Github . Just drop the file youtubetag.rb into your plugins folder and the tag will start working. Hope it s helpful for somebody.",
"keywords": ["cascading","formats","github","javascript","jekyll","sheets","style","youtube","andrew","clark","github","javascript","jekyll","jekyllplugins","readme","thanks","youtube","added","adding","adjust","applying","aspect","automatically","because","below","causes","class","container","creates","defaults","different","embed","embedded","embedding","embeds","enough","existed","extra","extract","flying","folder","height","helpful","iframe","includes","inline","inserts","installed","intrinsic","looking","necessary","needed","optionally","plugin","plugins","prevents","produces","quick","ratio","readers","remove","repository","resizing","responsive","short","shortened","similar","simple","solutions","somebody","specifically","spend","straight","style","styles","stylesheet","truck","updated","video","videos","whipped","width","working","wrapper","wrapping","youtube"]
},{
"title": "Web Excursions for January 19, 2013",
"url": "/2013/01/19/web-excursions-for-january-19-2013/",
"tags": ["bookmarks"],
"date": "Jan 19th, 2013",
"ts": "1358611560",
"summary": "Web excursions brought to you in partnership with MindMeister , the best collaborative mind mapping software out there. Responsive Design Bookmarklet The nicest bookmarklet I ve seen yet for viewing responsive designs at various sizes. It even has an on-screen keyboard you can toggle to see how much viewable space you ll have when a user is typing. Gitfred: An Alfred v2 (beta) Workflow for GitHub Man, another temptation from Alfred. My switch is looking more and more likely. Pixa Updated to Support Acorn Files As Gus says in this short note, a great little app just got better. Marked.app Support Ulysses 3 devblog Awesome. Toggle Calendar Focus Great AppleScript trick from Daniel Jalkut for changing which calendars are shown in Calendar on Mountain Lion. ConradIrwin/jist The original defunkt gem seems to be defunct. This is an awesome replacement. Check out MindMeister and start brainstorming, collaborating, and boosting productivity.",
"keywords": ["applescript","bookmarklet","cougar","design","development","github","mountain","ulysses","acorn","alfred","applescript","awesome","bookmarklet","calendar","check","conradirwin","daniel","design","files","focus","github","gitfred","great","jalkut","marked","mindmeister","mountain","responsive","support","toggle","ulysses","updated","workflow","another","awesome","bookmarklet","boosting","brainstorming","brought","calendars","changing","collaborating","collaborative","defunct","defunkt","designs","devblog","excursions","great","keyboard","likely","little","looking","mapping","nicest","original","partnership","productivity","replacement","responsive","screen","seems","short","shown","sizes","software","space","switch","temptation","toggle","trick","typing","various","viewable","viewing"]
},{
"title": "Scheduling posts 2: the Rakening",
"url": "/2013/01/18/scheduling-posts-2-the-rakening/",
"tags": ["jekyll"],
"date": "Jan 18th, 2013",
"ts": "1358542800",
"summary": "Yesterday I covered how I m handling scheduling with my Jekyll-based blog. The command I mentioned there could be used in tandem with any static blogging system. Today I m dropping in the publish task from my Rakefile, so you can see how I apply it specifically with Jekyll. The concepts are still portable, though. The rake task can be run with or without an argument. If the argument is there and it s a filename (and the file exists), it operates directly on that file. If no argument is passed, it offers a menu of available drafts to choose from. To schedule a post, I just set the date: field in the YAML headers to a date in the future. That triggers all of the scheduling features. If the task is being run from the shell, it double checks with you for confirmation that you want to schedule a deploy. If confirmed (or forced), is run and reads from a file with the necessary commands to generate and deploy the task. In my case, it bumps the site version (used to bust cache on any CSS/JS files), runs a generate task and deploys the site using Rsync. I ll be covering my draft system in more detail in a future post. I ll mention a relevant part of it now, though. The drafts folder is a symlink from my Dropbox writing folder. If a post shows up in there with a publish prefix in the filename, Hazel triggers this system automatically. It passes a filename directly, bypassing the need for any shell interaction. The file gets published and the site gets deployed. There s also an incomplete preview_ mode that will generate the staging site but not deploy. Here s the relevant part of the Rakefile with lots of comments. For people who would be implementing something like this, they should be explanatory enough. Because it s a work-in-progress, I m posting its current state directly. When it s closer to finished it will be included in a full Git repo of all of my hacks with its most current version.",
"keywords": ["command","computer","dropbox","filename","interface","management","python","system","because","dropbox","hazel","jekyll","octopress","processing","rakefile","rsync","today","yesterday","apply","argument","automatically","available","based","blogging","borrowed","bumps","bypassing","cache","checks","choose","closer","command","commands","comments","concepts","confirmation","confirmed","covered","covering","deploy","deployed","deploys","detail","directly","double","draft","drafts","dropping","enough","exists","explanatory","features","field","filename","files","finished","folder","forced","functions","hacks","handling","headers","implementing","included","incomplete","interaction","mention","mentioned","necessary","offers","operates","passed","passes","people","portable","posting","prefix","preview","publish","published","reads","relevant","schedule","scheduling","shell","shows","specifically","staging","static","symlink","system","tandem","triggers","using","version","writing"]
},{
"title": "Scheduling posts with Jekyll",
"url": "/2013/01/17/scheduling-posts-with-jekyll/",
"tags": ["jekyll","terminal"],
"date": "Jan 17th, 2013",
"ts": "1358466840",
"summary": "After my downloads system was sorted (post coming up) and I had a writing workflow worked out, my big concern with my Jekyll system was scheduling future posts. I tend to write in streaks and, given that very little of my work is exactly time sensitive, spread the posts out to make up for the days I decide to sleep in my free time. That s a little harder to do with static blogs. You can rig up a whole setup with Hazel and Dropbox and triggers that make your site build when certain filename prefixes show up, but it gets tedious and sometimes unreliable. While there are some elements of that in my current system especially with the work I m doing to be able to post remotely it s not a setup I want to rely on. Write a draft in my _drafts folder with a name that s just a slug. It doesn t even matter what the slug is, it will be renamed with the date and a new slug based either on the title: field or a slug: field if it exists. I ll go into more detail on my draft system soon. Add a date: field in the headers of the draft for some time in the future. Run . Without arguments, my publish command scans my _drafts folder and offers a menu of recently-edited drafts. I type a number and the system reads it in. Headers are checked, modified and updated. If a date header is found at this point, it s checked against the current time. If the post is for the future, the system schedules a build and deploy for that moment. My Jekyll is configured to not publish future-dated posts, so I can do other builds before the post goes up without worrying about spoiling surprises. Morning comes, the sun comes up, my post goes live. The basis of the system is the Unix command. The command is really, really handy and available on most Unix flavors. I ve been told it s deprecated, but it s been so dependable thus far that I m not certain why it would be (other than Apple passed on it in favor of ). With this command you can type something like , then type a series of commands and terminate with . It will report that a task is scheduled and that task will run, whether you log out of the shell or not. It s perfect for starting jobs on remote servers, too, and has a batch mode that will queue jobs as CPU allows. To enable on OS X, you need to modify its plist. On Lion and later this can be done with just the command 1 . The plist file comes with a disabled flag set, but running will override that, so you don t have to worry about it. Once you ve run that command,",
"keywords": ["apple","central","dropbox","iphone","operating","processing","standard","streams","system","apple","dropbox","hazel","headers","jekyll","morning","rakefile","stdin","while","write","against","allows","another","anyone","arguments","automate","available","based","basis","batch","before","blogs","build","builds","camera","certain","checked","close","comes","coming","command","commands","computer","concern","configured","contents","database","dated","decide","dependable","deploy","deprecated","detail","direct","disabled","doesn","doing","downloads","draft","drafts","dynamically","edited","either","elements","especially","eventually","execution","exists","favor","features","field","filename","flavors","folder","formats","found","going","handy","harder","header","headers","iphone","imagine","input","integration","interested","knock","later","little","lunchy","makes","minute","modified","modify","offers","override","passed","plist","point","posts","prefixes","prove","publish","queries","queue","quick","quickly","reads","recently","remote","remotely","renamed","report","rundown","running","scans","scheduled","schedules","scheduling","script","second","sensitive","series","servers","setup","shell","shows","sleep","sometimes","sorted","speak","spoiling","spread","starting","static","streaks","surprises","system","tasks","tedious","terminal","thank","title","tomorrow","triggers","understand","unreliable","updated","upload","using","waiting","whole","worked","workflow","working","worry","worrying","write","writing"]
},{
"title": "Web Excursions for January 17, 2013",
"url": "/2013/01/17/web-excursions-for-january-17-2013/",
"tags": ["bookmarks"],
"date": "Jan 17th, 2013",
"ts": "1358442360",
"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. tominsam/jekyll-metaweblog This is unbelievably fun to hack around with (I m running on the assumption that you use Jekyll and like to tinker with Ruby on things that aren t really neccessary to your daily life, of course). It adds basic XMLRPC capabilities to your static blog, allowing you to add, edit and post as well as upload images. It needs a lot of work (it s two years old), and won t function with Poster on iOS yet, but I m getting there with my local hacks. Feeder If you publish a podcast, manually create RSS feeds or do anything with Sparkle and you don t have Feeder, you re missing out. It makes hand-crafted RSS and XML feeds fun. YouSendIt s Brad Garlinghouse Talks About Found Acquisition Looking forward to the future of Found (and genuinely hoping that it doesn t get the life sucked out of it). thomasf/exitwp An automated means of getting your WordPress blog to Jekyll. I do it for a price, but my services are really only necessary if you have a lot of custom markup or shortcode plugins, etc. A script like this will do just fine for the majority of users. maxjacobson/marked-themes I m hoping to finally get a gallery/repository of Marked Custom Styles put together soon Photobox CSS3 jQuery image gallery dropthebit Responsive CSS3/jQuery image gallery and lightbox. This is gorgeous. I tried it out on this blog and found it not quite ready for prime time, but it s still amazing. 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": ["feeder","garlinghouse","github","jekyll","jquery","wordpress","yousendit","acquisition","backblaze","check","custom","feeder","found","garlinghouse","jekyll","looking","marked","photobox","poster","responsive","sparkle","styles","talks","wordpress","xmlrpc","yousendit","affordably","allowing","amazing","assumption","automated","backs","basic","brought","capabilities","cloud","computer","crafted","create","custom","daily","doesn","dropthebit","entire","everything","excursions","exitwp","feeds","finally","found","function","gallery","genuinely","getting","gorgeous","hacks","hoping","image","images","jquery","jekyll","lightbox","local","makes","manually","marked","markup","maxjacobson","metaweblog","missing","neccessary","necessary","needs","partnership","plugins","podcast","price","prime","publish","ready","reliably","repository","running","script","securely","services","shortcode","static","sucked","themes","thomasf","tinker","today","together","tominsam","tried","unbelievably","upload","users","years"]
},{
"title": "Sponsor: DesignScene",
"url": "/2013/01/17/sponsor-designscene/",
"tags": [],
"date": "Jan 17th, 2013",
"ts": "1358427600",
"summary": "I d like to thank DesignScene for sponsoring BrettTerpstra.com this week. DesignScene is a real-time inspiration iPad app for designers. Browse creative images including logos, architecture, illustration, photography and more and save them into your own collections. You can have collections for projects youre working on, for great art, even collections that remind you of Sundays. With over 60 handpicked sources, you ll see the best creative images from around the world to spark your imagination. You can also keep up with the latest insights and tutorials from sites like PSFK, Smashing Magazine, Imprint, and more.",
"keywords": ["imprint","magazine","smashing","sponsor","store","sundays","syndicate","brettterpstra","browse","check","designscene","imprint","magazine","smashing","sponsorship","store","sundays","syndicate","architecture","collections","creative","designers","download","great","handpicked","illustration","images","imagination","including","insights","inspiration","latest","logos","photography","projects","remind","sites","sources","spark","sponsoring","thank","trailer","tutorials","working","world","youre"]
},{
"title": "Restore Save as... everywhere",
"url": "/2013/01/16/restore-save-as-everywhere/",
"tags": ["keybindings","macos","productivity"],
"date": "Jan 16th, 2013",
"ts": "1358373600",
"summary": "Update: It turns out it s not my custom keybinding that made this work. Apparently it was already there and just happened to be bound to the same key I was experimenting with. You don t need to do anything the tip is really just that Command-Shift-Option-S already is the old Save As behavior. There, saved you some trouble!",
"keywords": ["computer","keyboard","mountain","shortcut","textmate","apparently","command","keyboard","preferences","shift","shortcut","system","behavior","bound","custom","experimenting","happened","keybinding","replace","saved","style","trouble","turns"]
},{
"title": "Thank you for your time. We'll be in touch.",
"url": "/2013/01/16/thank-you-for-your-time-well-be-in-touch/",
"tags": ["productivity"],
"date": "Jan 16th, 2013",
"ts": "1358358780",
"summary": "Of the hours I ve been awake over the last couple of days, I ve spent about 15 of them reading resumes and applications for the current Engadget/AOL Tech front end web developer position . I d like to share some advice regarding applying for jobs. If you re going to send out a pre-fab application email with customizable fields, make sure you fill them in using the same font. Include a resume if the posting requested it. Don t ask permission to send it. Customize (or at least supplement) your resume. If you re going to link to a web resume, it s awesome if you make it a unique url tailored to the job you re applying for. Don t list 10-year-old, deprecated technologies under your current skills. Your awards in COBOL programming are actually a turnoff when listed under skills instead of a achievements. Have a skills section. Your job as manager of a restaurant franchise location is less interesting to me than your current capabilities. Put that skills section at the top. You know, before your extra-curricular activities. Make your resume a well-formatted PDF, not a DOCX file 1 . If you don t know how to make a PDF pretty, use a template. if you happen to be applying to a position I m handling the interviews for, go ahead and include that Markdown version you generated the beautiful PDF from. Extra points to that guy. Your resume is not your first impression. The email you send it in is. Spell things correctly. Don t use abbreviations for words you would normally spell out. Dnt tlk 2 me like yr txt peeps. Evr. Respond to the job requirements that were posted, not what you think they should be. If the job posting has a set list of skill requirements, it should probably be noted in your resume or cover letter that you have those skills, or why you think your similar-but-different skill is relevant. If it s a tech job, link your GitHub account. Have a GitHub account. Thank you for your time, we ll be in touch. I have been informed that many job postings require a DOC file, so take this with a grain of salt. I personally hate loading up Word repeatedly, and Quick Look and Google Docs both tend to wreak havoc on certain formatting, so the applicant ends up looking bad for no good reason. A PDF lets one control the formatting and presentation on any platform. In the end, though, it sounds like DOC/X is a more accepted solution. See how much I know?",
"keywords": ["employment","github","google","office","quick","skill","cobol","customize","engadget","extra","github","google","markdown","quick","respond","spell","thank","abbreviations","accepted","account","achievements","activities","advice","ahead","applications","applying","awake","awards","awesome","beautiful","before","capabilities","certain","control","correctly","couple","cover","curricular","customizable","deprecated","developer","different","email","extra","fields","first","formatted","formatting","franchise","front","generated","going","grain","handling","happen","havoc","hours","impression","informed","interesting","interviews","letter","listed","loading","location","looking","manager","normally","noted","peeps","permission","personally","platform","points","position","posted","posting","postings","presentation","programming","reading","relevant","repeatedly","restaurant","resume","resumes","section","share","similar","skill","skills","solution","sounds","spell","spent","tailored","technologies","template","think","touch","turnoff","under","unique","using","version","words","wreak"]
},{
"title": "Systematic #27 with Mike Rohde",
"url": "/2013/01/15/systematic-number-27-with-mike-rohde/",
"tags": ["podcast","systematic"],
"date": "Jan 15th, 2013",
"ts": "1358277300",
"summary": "This week s guest on Systematic was Mike Rohde of SketchNotes fame. I had a chance to see him at work during An Event Apart Minneapolis, so it was fun to get a chance to talk about the origins and techniques behind the methods. If you re not sure what sketchnoting is, check out Sketchnote Army and Mike s book on the subject . Hint: use coupon code SKETCHNOTE for a bargain. Thanks to Mike for joining me! Check out Episode 27 of Systematic on 5by5 .",
"keywords": ["design","development","drawing","hosting","rohde","sketchnote","studios","apart","check","episode","minneapolis","rohde","sketchnote","sketchnotes","sketchnote","systematic","thanks","bargain","behind","chance","check","coupon","guest","joining","methods","origins","sketchnoting","techniques"]
},{
"title": "Clip Text File: more surprisingly handy dumb tricks",
"url": "/2013/01/15/clip-text-file-a-handy-dumb-service/",
"tags": ["macos","service","terminal"],
"date": "Jan 15th, 2013",
"ts": "1358272200",
"summary": "As you may know, I store a lot of information in plain text files. Among the things I enjoy about this has always been that I can grab the contents of any file straight to the clipboard without opening it when I m on the command line. I just use and boom, done. I wrote a function a long time ago to make this a little safer and more convenient. It avoids clipping non-text files accidentally and provides a little feedback. So this morning I finally thought to bring that convenience to Finder. With some minor modifications I made a Service that makes it easy to grab file contents with a right click from Finder or any application that exposes files and folders. It will actually run on any type of file, but it uses an almost-foolproof method of figuring out if it s plain text or not before it tries to dump it to your clipboard. In case you re wondering, it runs the aged Unix tool, , and looks for the word text in the output. That word shows up correctly for every file I ve tested on, even files the system considers executables and assumes are binary. If you re scratching your head wondering why I d want to do this you probably don t have a need for it. For me, though, if I already know a file s contents and just need to access a snippet or a saved clipping again, it s time-consuming to open the file, select the text, copy, close. I much prefer the simple , and now this System Service. You can download the Service below. If you have for Growl installed (or a pseudo-Growl ), you ll get response messages in Growl or Notification Center. Either way, it gives you a Glass or Basso sound on success or error, respectively. The source for the script is on Github , and it works just fine as a shell script, too. I just don t need Growl notifications for a command that could just output to STDOUT Clip Text File System Service v1.1 Download Clip Text File System Service v1.1 Clip the contents of any text file to the clipboard from Finder Published 01/15/13. Updated 01/16/13. Changelog Donate More info",
"keywords": ["center","computer","finder","growl","notification","python","script","shell","among","basso","center","changelog","donate","download","either","finder","github","glass","growl","notification","published","stdout","service","system","updated","access","accidentally","again","almost","assumes","avoids","before","below","binary","bring","characters","click","clipboard","clipping","close","command","considers","consuming","contents","convenience","convenient","correctly","download","enjoy","error","executables","exposes","feedback","figuring","files","finally","folders","foolproof","function","gives","growlnotify","handle","information","installed","little","looks","makes","messages","method","minor","modifications","morning","notifications","opening","output","prefer","provides","pseudo","respectively","response","return","right","safer","saved","scratching","script","shell","shows","simple","snippet","sound","source","store","straight","success","system","tested","thought","tries","wondering","works","wrote"]
},{
"title": "A \"Web Excursions\" system for static blogs",
"url": "/2013/01/15/a-web-excursions-system-for-static-blogs/",
"tags": ["jekyll","pinboard"],
"date": "Jan 15th, 2013",
"ts": "1358258400",
"summary": "Web excursions brought to you in partnership with CleanMyMac X , all the tools to speed up your Mac, in one app. One of the things I was missing when I switched from WordPress to Jekyll was my Web Excursions setup. It allows me to gather link collections for posts as I browse and generate a single post with multiple links rather than a ton of individual link list posts 1 . Previously, I had just sent sites I wanted to include to Pinboard with a blogit tag and a description that would become the post. A WordPress plugin ( Postalicious ) would poll my bookmarks hourly and generate a post automatically when I had reached five or more new bookmarks with the given tag. As a replacement, I created a CLI script that I could run manually, via cron/launchd or during the task which builds my static site. It works like this: I have a custom draft setup that I ll detail in a future post, but this basically generates a Web Excursions post in my drafts folder with all the necessary title, tags, categories, etc., and formats the new bookmarks using a Markdown template. I can then use Rake to publish at any time, and it updates the title and publish date to the current time. If you re interested in the script, help yourself. I ve posted it as a Gist . It will eventually end up in a repository of my Jekyll hacks, once I have them all ready to share 2 . Edit the various variables to suit your needs. It should be flexible enough to work with any static blogging system, or even with the Blogging Bundle for TextMate. Note: the first time you run the script it will pull all entries with the configured tag within the latest 100 bookmarks. It will create a draft with all of them and you ll need to edit or discard that manually. After that it will only bring in new posts since the last run. Link list posts are great for some people, and I m not against them. They just don t fit my style. Many of them are dependent on others, and they won t make sense if I publish them one at a time.",
"keywords": ["bookmarks","jekyll","markdown","pinboard","textmate","wordpress","blogging","bundle","cleanmymac","compare","excursions","jekyll","markdown","pinboard","postalicious","previously","retrieve","textmate","wordpress","against","allows","automatically","blogging","blogit","bookmarks","bring","brought","browse","builds","categories","clear","collections","configured","create","created","custom","dependent","description","detail","discard","draft","drafts","enough","entries","eventually","excursions","first","flexible","folder","formats","gather","generates","great","hacks","hourly","individual","interested","latest","launchd","links","manually","missing","multiple","necessary","needs","others","partnership","people","pinboard","plugin","posted","posts","previously","publish","rather","reached","ready","replacement","repository","retrieved","script","sense","setup","share","since","single","sites","speed","stash","static","style","switched","system","template","title","tools","updates","using","variables","various","wanted","within","works"]
},{
"title": "My life in podcasts",
"url": "/2013/01/14/my-life-in-podcasts/",
"tags": ["interview","podcast"],
"date": "Jan 14th, 2013",
"ts": "1358185200",
"summary": "I did a live broadcast on Screen Time with Moises Chiullan. I learned how to pronounce his name (I ve forgotten, but he can remind me when he joins me on Systematic soon). We talked about CES and how much I absolutely don t care about it. We bad-mouthed Vegas. We said things we ll probably regret. It was fun. On a more informative note, I was on The Giant Robots Smashing into Other Giant Robots podcast last week, too. It was mostly an interview with some fun discussion about the details. Markdown, workflows, all the good stuff. There have been more lately that I m forgetting to link right now. My apologies for the omissions. I ll make it up to the respective podcasters when I buy them a drink at Macworld. You re going, right?",
"keywords": ["aggregator","breen","chris","directories","macworld","markdown","podcast","tutorials","chiullan","giant","macworld","markdown","moises","robots","screen","smashing","systematic","vegas","apologies","broadcast","couple","details","discussion","drink","forgetting","forgotten","going","guesting","informative","interesting","interview","joins","learned","mostly","mouthed","omissions","podcast","podcasters","podcasts","pronounce","regret","remind","respective","right","stuff","talked","workflows"]
},{
"title": "The next nvALT 2.2 beta is here!",
"url": "/2013/01/14/the-next-nvalt-2-dot-2-beta-is-here/",
"tags": ["nvalt"],
"date": "Jan 14th, 2013",
"ts": "1358163540",
"summary": "The next beta of nvALT 2.2 is ready for automatic update (for users already on the beta), or for download below. We received some great contributions from the community and there s a lot of new goodness (and bugfixes) in this release. Special thanks to: We re quite close to putting an official version number on this and releasing it on the main channel. It s very stable and it s highly recommended that if you re using 2.1, you download this version. It s on a separate update channel right now, so you ll get automatic updates for new beta releases but you can t update from 2.1 to 2.2b. Download and install and you re good to go. 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 More info Previous release notes are here . As always, the source is up on Github and you can leave bug reports on the issues page . Contributions, forks and pull requests are all welcome and encouraged.",
"keywords": ["cycle","github","locator","release","resource","software","taskpaper","windows","campaigne","changed","changelog","contributions","donate","download","fixed","github","improvements","markdown","matthew","multimarkdown","notational","press","preview","published","services","special","sungjoo","system","taskpaper","updated","velocity","added","advanced","allow","ascii","automatic","behavior","below","bookmark","bugfixes","bullet","capabilities","changes","channel","character","characters","clicking","close","community","contain","continuation","contributions","crash","dated","download","editing","encouraged","exception","external","fixed","fixes","forks","fullscreen","goodness","great","handler","highly","import","importing","indicator","insertion","install","issues","leave","links","lists","menubar","middle","newer","notes","nvalt","official","overlapping","pages","panel","position","preceded","preview","properly","putting","quick","ready","received","recognition","recommended","release","releases","releasing","reports","requests","right","script","scroll","separate","snowyu","source","stable","stuff","style","thanks","updates","users","using","utility","version","versions","welcome","where","white","wikilink"]
},{
"title": "Markdown Service Tools updates and fixes",
"url": "/2013/01/13/markdown-service-tools-updates-fixes/",
"tags": ["markdown","markdownservices","service"],
"date": "Jan 13th, 2013",
"ts": "1358092260",
"summary": "I ve updated the Markdown Service Tools again, now at version 1.5.2. A couple of Services had stopped working completely, and a few needed improvements to be a little smarter with various formatting anomalies, and I made a couple of minor additions. Once installed, the Services are available in any text field on your System. You can assign keyboard shortcuts to them for easy access. They re not as fast as KeyBindings , but much more flexible with more complex formatting and scripting. Conversion and utilities Preserve line breaks (appends two spaces to each line, forcing hard breaks) Unwrap Paragraphs (remove line breaks between adjacent lines) Cleanup Tables (reformats MMD tables to be readable, via Fletcher Penney) MultiMarkdown to HTML (works with regular Markdown, too) HTML to Clipboard Convert HTML to Markdown (Markdownify) Install by unzipping and moving all the and files to [HOME FOLDER]/Library/Services. If you can t find your Library folder, it s just hidden. In Finder, type G, type in and hit Enter. Now you can copy the files into that window. If for some reason you don t have a Services folder in Library, just create it (with a capital S ). 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 More info",
"keywords": ["element","fletcher","keyboard","locator","markdown","multimarkdown","penney","resource","service","shortcut","tools","angle","blockquote","brackets","bullet","changelog","chrome","cleanup","clipboard","conversion","convert","donate","download","duckduckgo","enter","folder","finder","fletcher","formatting","indent","indents","inline","install","italics","keybindings","level","library","linking","links","lists","markdown","markdownify","multimarkdown","ordered","outdent","paragraphs","parenthesis","penney","published","quote","safari","selection","service","services","square","standalone","system","tables","tools","unwrap","updated","access","additions","again","almos","anomalies","appends","assign","available","between","blockquotes","blocks","breaks","bullet","capital","clipboard","collection","completely","complex","convert","couple","create","creating","designed","domains","dupes","easier","field","files","first","flexible","folder","forcing","formatted","formatting","found","handles","hidden","improvements","includes","indent","indentation","installed","items","keyboard","links","lists","little","macos","minor","moving","needed","nested","numbered","numbers","parses","poetry","readable","references","reformats","regular","remove","respecting","scripting","search","shortcuts","smarter","spaces","stopped","tables","titles","unzipping","updated","utilities","various","version","window","working","works"]
},{
"title": "A Jekyll Flickr Gallery plugin test",
"url": "/2013/01/12/a-jekyll-flickr-gallery-plugin-test/",
"tags": ["gallery","personal","photography"],
"date": "Jan 12th, 2013",
"ts": "1358042460",
"summary": "I just had to test this. It s a Jekyll plugin that takes the ID of a Flickr photo set and turns it into a gallery, keeping all photos hosted on Flickr. Not that I make a lot of galleries on my blog, just one of those I think I can do that things. I know the image galleries will probably break someday when Flickr sunsets. With Yahoo s renewed interest, though, I think that day will probably come after I ve stopped caring. For now, the ease of building a gallery with Flickr s mobile uploads and the new iPhone app, and then putting into a tag to get the above is pretty perfect. Update: I added markup to allow for a link to the Flickr page for the photo in the lower right corner of the thumbnail on hover (always there on touch devices). I will share this plugin eventually, but I have to warn you that it has some dependencies that require a bit of work to get running",
"keywords": ["chicago","flickr","galleries","image","iphone","jekyll","photograph","recreation","yahoo","chicago","flickr","jekyll","photos","yahoo","above","added","allow","break","building","caring","corner","dependencies","devices","eventually","galleries","gallery","hosted","hover","iphone","image","interest","keeping","lower","markup","mobile","photo","photos","plugin","putting","renewed","right","running","share","someday","stopped","sunsets","takes","think","thumbnail","touch","turns","uploads"]
},{
"title": "Quick Tip: Flip between two apps with the Hyper key",
"url": "/2013/01/12/quick-tip-flip-between-two-apps-with-hyper-key/",
"tags": ["keyboard","productivity","quicktip"],
"date": "Jan 12th, 2013",
"ts": "1358019000",
"summary": "Update: So many people told me that it didn t work for them that I had to go digging for why I was different. I had forgotten where the whole discovery started: I mapped hyper-Tab to Command-Tab in BetterTouchTool. That s why it functions this way. Get BetterTouchTool and add a keyboard mapping, then this will all make sense. I mentioned that I made my Caps lock key into a Hyper key recently. Holding down Caps lock now gives me the equivalent of pressing Control-Command-Option-Shift all at once. This has opened up a bunch of hotkey possibilities on my system, and I ve been having fun mapping them. I also found one little side benefit. Pressing Hyper-Tab launches the Application Switcher, but because you re effectively pressing Command-Tab and Command-Shift-Tab at the same time, it just jumps to the last-focused application and disappears. This wasn t the behavior I was looking for at the time, but I quickly got used to using it on occasions where I m rapidly switching between two apps. For example, OmniFocus and Mail, or Sublime Text 2 and Chrome. Even right now I m switching between Chrome and Byword with it. Once you go through all the trouble of making the Hyper key , all you have to do is bring an app to the foreground and then switch to the other app. Then Hyper-Tab will just keep flipping between the two (until you open a third, in which case you just need to refocus the original two in succession). Stupid trick, but handy if you re a keyboard nut.",
"keywords": ["keyboard","shortcut","bettertouchtool","byword","chrome","command","control","holding","hyper","omnifocus","pressing","shift","stupid","sublime","switcher","because","behavior","benefit","between","bring","bunch","different","digging","disappears","discovery","effectively","example","flipping","focused","foreground","forgotten","found","functions","gives","handy","having","hotkey","hyper","jumps","keyboard","launches","little","looking","making","mapped","mapping","mentioned","opened","original","people","possibilities","pressing","quickly","rapidly","recently","refocus","right","sense","started","succession","switch","switching","system","third","through","trick","trouble","using","where","whole"]
},{
"title": "Scripting Jekyll image \"uploads\"",
"url": "/2013/01/12/scripting-jekyll-image-uploads/",
"tags": ["jekyll","service"],
"date": "Jan 12th, 2013",
"ts": "1358001840",
"summary": "As I start blogging more with Jekyll, I find that manually placing the images in my source folder and typing out the resulting urls is a bit cumbersome. I know a lot of people have come up with solutions for this, but it was simpler to roll my own in the end. I ve created a few ways of doing this on OS X. All of these methods will copy the image to an appropriate, date-based subfolder in your static blog s source, optimize it if the tools are available and immediately place Markdown image urls into your clipboard for pasting into your post. In general, this is the best method I have for handling the task. It makes it possible to right click on image files anywhere on the system, file them in your uploads folder and get the Markdown urls for immediate use in your post. You can find the script for the Service in this Gist . Because the script requires some customization (as simple as it may be), I m not distributing it as a pre-rolled Service. You ll need to load up Automator, create a new Service project and add the Run shell script action to it by dragging it in from the library on the left. Paste the script into that action and set the interpreter to Ruby. Set the input to Image files. It should look like: You just need to set the variable to the main folder for your blog s images. I keep all of mine in a WordPress-style uploads folder off the root. Set yours as needed, tildes (~) are ok to represent your User home folder. The is what will be used to generate your Markdown links. If your files are in a structure like , you d just set the to /uploads . The script generates the rest. If you want to use fully-qualified domains, change it to http://yoursite.com/uploads . You can also change the default type of image link that it puts on the clipboard. Set to reference if you d rather have the output in reference format. Paths for the output are relative, and assume that your base folder is in the root of your blog. Customization may be required, but I don t imagine that being the case. If you have Growl and growlnotify installed, it will use it to send notifications. Note that you can use my drop-in growlnotify replacement on Mountain Lion to use Notification Center without Growl. The script also looks for and in (both available in Homebrew). If they exist, appropriate file types will be compressed. You can adjust the parameters of the compression in lines 44 and 49 of the script. If you use Dropzone and find it more convenient than",
"keywords": ["center","downloading","github","growl","jekyll","jquery","markdown","notification","uploading","wordpress","automator","because","center","clicking","configuration","customization","destination","dragging","dropzone","filer","going","growl","hazel","homebrew","image","installation","jekyll","markdown","mountain","notification","optional","paste","paths","preferences","service","services","system","upload","wordpress","accessible","action","additions","adjust","anywhere","append","assume","assumption","available","based","blogging","build","called","change","click","clipboard","compressed","compression","configuration","convenient","convert","create","created","cumbersome","customization","default","destination","details","distributing","doing","domains","dragging","exist","files","folder","format","fully","general","generates","growlnotify","handler","handling","image","images","imagine","immediate","implementing","inline","input","installed","interpreter","jquery","leaning","library","links","looks","makes","manually","method","methods","mobile","motion","needed","notifications","opposite","optimize","output","parameters","pasting","people","placing","plans","possible","project","qualified","rather","relative","remote","replace","replacement","required","requires","resulting","results","right","rolled","script","search","section","shell","simple","simpler","solutions","source","specify","static","structure","style","subfolder","system","target","tildes","tools","toward","types","typing","upload","uploads","using","variable","watcher","where","yoursite"]
},{
"title": "Web Excursions for January 12, 2013",
"url": "/2013/01/12/web-excursions-january-12-2013/",
"tags": ["bookmarks"],
"date": "Jan 12th, 2013",
"ts": "1357994640",
"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. Mac App Store - Feedy A new RSS feed reader from the developer who brought you CodeRunner and Patterns. Fever-ish popularity and keyword ranking. No Reader sync, unfortunately. Mac App Store - moccanote Pretty, and showing potential, but I m a sucker for those univerally-accessible plain text files. This is probably an awesome solution for a lot of folks, though. iPhone companion app available, iCloud sync. gleitz/howdoi Via OneThingWell , a cool little shell script to find StackOverflow answers from the command line. Bluetooth Network Monitor C mon, that s pretty hot. Designing a responsive, Retina-friendly site Some good tips and points for any web designer looking to update a web design these days",
"keywords": ["apple","design","iphone","store","bluetooth","check","coderunner","designing","feedy","fever","monitor","network","onethingwell","patterns","reader","retina","setapp","stackoverflow","store","access","accessible","answers","available","awesome","brought","command","companion","design","designer","developer","excursions","files","folks","friendly","gleitz","howdoi","hundreds","icloud","iphone","keyword","little","looking","moccanote","monthly","partnership","points","popularity","potential","ranking","reader","responsive","script","shell","showing","solution","subscription","sucker","today","unfortunately","univerally"]
},{
"title": "An easy visual alert for your staging site",
"url": "/2013/01/11/an-easy-visual-alert-for-your-staging-site/",
"tags": ["jquery","tagging","webdesign"],
"date": "Jan 11th, 2013",
"ts": "1357960620",
"summary": "I ve had a lot of fun with Jekyll lately. There are little things popping up on this blog that seem insignificant but took way too much time. I m not sorry, I had fun doing it. I intend to blog a bit more about my Jekyll hacks, but I threw this one on today and it s simple enough to write about in under five minutes. I use staging sites to test changes to web projects before publishing them. This is great and I wouldn t want to work any other way but I sometimes forget which site I m on and find myself banging my head because changes aren t taking, or perhaps tweeting a URL from a staging domain (guilty, but it was just my own, not a client or employer s). I used to handle this with PHP , and still do in some cases where that s convenient, but this is way simpler. The code I just dropped in is a tiny bit of JavaScript that just checks the current page url against a hardcoded target url. If it s on anything other than the main domain, it puts a thin red bar up at the top of my browser. Effective and unobtrusive (and easy to turn off if it gets in the way), but it requires customizing when using on different sites. I m using jQuery, but the same thing can be accomplished with just a few extra characters if you re not loading jQuery in your project. Here s what it looks like: And you re good to go. Yep, I m clumsy enough to need this.",
"keywords": ["cascading","javascript","jekyll","jquery","locator","programming","resource","sheets","style","effective","javascript","jekyll","accomplished","against","banging","because","before","browser","changes","characters","checks","client","clumsy","convenient","customizing","different","doing","domain","dropped","employer","enough","extra","forget","great","guilty","hacks","handle","hardcoded","insignificant","jquery","little","loading","looks","minutes","myself","perhaps","popping","project","projects","publishing","requires","simple","simpler","sites","sometimes","sorry","staging","taking","target","threw","today","tweeting","under","unobtrusive","using","where","wouldn","write"]
},{
"title": "Systematic Episode 26 with Howard Buddin",
"url": "/2013/01/08/systematic-number-26-with-howard-buddin/",
"tags": ["podcast","systematic"],
"date": "Jan 8th, 2013",
"ts": "1357674000",
"summary": "It was great to have Howard Buddin, Ph.D. back on the show this week. We continued our discussion of the human brain with conversations about memory loss, common disorders and the perceived rise of autism. There was also a surprisingly inexpensive set of top three picks to flesh out your app toolbox. Check it out at 5by5 .",
"keywords": ["apple","autism","disorders","doctor","health","mental","neurodevelopmental","philosophy","spectrum","studios","buddin","check","howard","autism","brain","common","continued","conversations","discussion","disorders","flesh","great","human","inexpensive","memory","perceived","picks","surprisingly","toolbox"]
},{
"title": "More languages for Weather Geeklet",
"url": "/2013/01/08/more-languages-for-weather-geeklet/",
"tags": ["geektool","nerdtool","weather"],
"date": "Jan 8th, 2013",
"ts": "1357648560",
"summary": "Thanks to contributions from several readers, the Localized Weather Geeklet has been updated with new languages, including Italian, Polish, Norwegian, Dutch and Swedish. The current list of credits includes: Thanks to everyone who s contributed, this is quite a selection. If your language still isn t represented, you can follow the instructions on the main post to create your own localization file and submit it. Download below, and see the original post for more details. 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 More info",
"keywords": ["dutch","english","fischer","german","language","polish","spanish","swedish","twitter","brandon","catalan","changelog","daniela","donate","dorand","download","dutch","fischer","forecast","french","gallazzi","geektool","geeklet","german","guillaume","helge","includes","italian","japanese","joanna","kamrowska","kuster","localized","norwegian","pedro","pittman","polish","published","robin","rosseboe","russian","sebastian","spanish","sweden","swedish","szwac","thanks","tilburgs","updated","weather","below","contributed","contributions","create","credits","desktop","details","everyone","extensibility","forecast","includes","including","instructions","language","languages","localization","multiple","original","readers","represented","selection","several","updated","weather"]
},{
"title": "Services vs Keybindings",
"url": "/2013/01/07/services-vs-keybindings/",
"tags": ["keybindings","productivity","service"],
"date": "Jan 7th, 2013",
"ts": "1357567440",
"summary": "I talk a lot about keyboard and text tools. Many of my projects are System Services , but I ve also shared a pretty vast array of KeyBindings . If you re like many of the people who contact me with questions, you ve probably wondered what the difference is and why you would want to use both. After all, you can assign keyboard shortcuts to Services, so what s the point of confusing keybindings? Services are scripts and Automator actions that you can run on a variety of filetypes. They re easy to install, and you can build them quickly and easily in Automator (which comes with OS X). See the howto for full details and instructions . Most of my services run on plain text. They allow you to process selected text using your scripting language of choice (usually Ruby, in my case) and replace or append the result to the selection. Services can have shortcuts assigned to them in System Preferences Keyboard Keyboard Shortcuts. You can build your own collection of easily-accessible, text-modifying services this way. The major benefit to Services is that they can run scripts. This offers extensive flexibility when it comes to text processing. Any transformation you can imagine can probably be accomplished. KeyBindings are keyboard shortcuts that you can create using a system file called . They are primarily used for cursor movement and selection modification while editing text, but they can also insert text and be used to create text macros. KeyBindings can t run logic or process scripts. They can, however, do things that Services can t, such as selecting words and extending selections in either direction. They re also blazingly fast. KeyBindings only work on one paragraph, word or line at a time (depending on the selection). This is, in my opinion, the biggest drawback. For example, if I want to turn a single line into a Markdown bullet list item, no problem. If I want to select a series of lines and apply the same transformation to each of them, only the first one will be affected. That becomes the domain of Services. In a word, Cheaters . It s a popup cheat sheet system. My KeyBindings are documented there, and you can quickly build a reference for Service shortcuts and new KeyBindings you add.",
"keywords": ["graphical","interface","keybindings","keyboard","processor","shareware","shortcut","utilities","windows","assignable","automator","cheaters","instant","keeping","keybinding","keybindings","keyboard","markdown","modify","preferences","service","services","shortcuts","summary","system","accessible","accomplished","actions","affected","allow","append","apply","array","assign","assigned","becomes","benefit","biggest","blazingly","build","bullet","called","cheat","choice","collection","comes","confusing","contact","create","creation","cursor","depending","details","difference","direction","documented","domain","drawback","easily","editing","either","example","extending","extensive","filetypes","first","flexibility","however","howto","imagine","install","instructions","keybindings","keyboard","language","logic","macros","major","modifying","movement","multiple","offers","paragraph","people","point","popup","primarily","problem","process","processing","projects","questions","quickly","replace","results","scripting","scripts","selected","selecting","selection","selections","series","services","shared","sheet","shell","shortcuts","single","straight","system","tools","transformation","using","usually","variety","while","wondered","words"]
},{
"title": "Web excursions: January 6th, 2013",
"url": "/2013/01/06/web-excursions-january-06-2013/",
"tags": ["bookmarks","notes"],
"date": "Jan 6th, 2013",
"ts": "1357452000",
"summary": "Web excursions brought to you in partnership with MindMeister , the best collaborative mind mapping software out there. PlaceIt by Breezi This is pretty cool. Create app screenshots on realistic backgrounds just by dragging in an iOS screenshot. All you need to know about CSS Transitions A very comprehensive look at some parts of the CSS3 animation spec you might not have known about. 27 Science Fictions That Became Science Facts In 2012 I love this stuff. Getting Things Done with Semantic Notes This system is well thought-out, and making me reconsider some of my current practices. If you have ever written a note, this is a good read. Re-enable old style auto-save for TextEdit Add Save As back to TextEdit. Handy trick if you miss the old days. Check out MindMeister and start brainstorming, collaborating, and boosting productivity.",
"keywords": ["breezi","cascading","formats","screenshot","sheets","style","textedit","became","breezi","check","create","facts","fictions","getting","handy","mindmeister","notes","placeit","science","semantic","textedit","transitions","animation","backgrounds","boosting","brainstorming","brought","collaborating","collaborative","comprehensive","dragging","excursions","making","mapping","partnership","parts","practices","productivity","realistic","screenshot","screenshots","software","stuff","style","system","thought","trick","written"]
},{
"title": "Mass creating TextExpander snippets",
"url": "/2013/01/04/mass-creating-textexpander-snippets/",
"tags": ["productivity","scripting","snippet","textexpander"],
"date": "Jan 4th, 2013",
"ts": "1357313640",
"summary": "I ran into a situation yesterday where I wanted to create over a thousand TextExpander snippets. I won t go into detail about why, but I thought I d share my solution. In my case, I was working with a huge CSV file where one field would be the abbreviation and another would be the expansion. The script I m sharing below only works with CSV files containing two fields (abbreviation, expansion), but it can easily be extrapolated to work with much more complex sources of data. To use the script, you just need a CSV file. You can edit this in any spreadsheet that can export a CSV version of your file (Numbers, Excel, etc.), or you can just edit the list in a text editor if you know how to properly quote CSV strings containing special characters. The script generates plain text snippets only, and by default sets the group to Expand after any character. You can change some of the settings for the group and snippets by editing the XML file, but take a look at an actual TextExpander group export file for reference 1 . If you re in a spreadsheet application, delete any header rows and give yourself just two columns. Fill the first field in each row with the abbreviation you want to use, and the second with the expansion. Export the sheet as a CSV. Then run the script, passing the CSV file as the first argument and the desired name of the TextExpander group file as the second (must have a extension). The filename will be used as the group name, but that s quite simple to edit after import. After the script has run, just double-click the resulting file in Finder to import it into TextExpander as a new group. All of your snippets from the CSV file should be there. To run the script, save the raw text from below as somewhere in your path and make it executable (). Create your CSV file and run the script: Set the parameters you want on a group in TextExpander, right click the group and choose Save a copy. Open the resulting file in a text editor to see how the options are expressed in the plist format.",
"keywords": ["abbreviation","comma","editor","excel","finder","howbert","microsoft","separated","textexpander","values","create","excel","expand","export","finder","numbers","textexpander","abbreviation","another","argument","below","change","character","characters","choose","click","columns","complex","containing","create","default","desired","detail","double","easily","editing","editor","executable","expansion","export","expressed","extension","extrapolated","field","fields","filename","files","first","format","generates","group","header","import","options","parameters","passing","plist","properly","quote","resulting","right","script","second","settings","share","sharing","sheet","simple","situation","snippets","solution","somewhere","sources","special","spreadsheet","strings","thought","thousand","version","wanted","where","working","works","yesterday"]
},{
"title": "Previewing Jekyll posts with Marked",
"url": "/2013/01/04/previewing-jekyll-posts-with-marked/",
"tags": ["jekyll","marked"],
"date": "Jan 4th, 2013",
"ts": "1357306560",
"summary": "If you use both Marked and Jekyll (or Octopress ), you may want to preview your posts accurately in Marked before publishing. The first obvious step is to link your screen.css file as a Custom Style: Depending on your theme, you may need to copy the CSS 1 and edit a few things, including any custom fonts used. I find the easiest way to handle fonts in Custom Styles is to base64 encode them and embed them directly in the CSS. The following bash function added to your and run on the command line with a file as the argument, will put the correct code for the embedded font into your clipboard: You ll also want to replace any rules in your CSS that specifically reference containers that won t exist in Marked. For example, my layout uses to specify styles for the main post. You can remove these with a search and replace, or use instead. While not required, you can also remove any layout-related CSS that doesn t apply to the main post body. Next, turn on Strip YAML Headers under Behavior preferences to remove all of the post data at the top of the post for clean rendering. You ll probably want to set up Kramdown or Maruku as your custom processor, but it won t convert any Liquid tags for you by default. Octopress comes with an plugin that you can use with Jekyll (or just use Octopress), as well as a plugin , among others. The sample Custom Processor below can be added to Marked to convert those tags and then handle the Markdown conversion. To add the custom processor to Marked, save the script below to your local drive, open Behavior preferences, check the Custom Processor box, add the full path to the script and hit Save in the Custom Processor box. Open a Jekyll post in Marked. If all goes well, you should be seeing a preview with img and gist tags replaced with HTML img tags and Gist embed script tags that will render in Marked. The script by default requires that Kramdown be installed in . You can do this with . If you re using RVM, you might need to use . You can always substitute Maruku, MultiMarkdown or any other processor in the last line of the script 2 . Note that the script may take some customization. It adds .. before the substituted image path, which makes the assumption that images exist in your source folder at a level equal to your _drafts or _posts folder. Modify as needed. You may also want to add/adjust style substitutions. Right now if it detects an or class in an img tag, it adds the styles I personally use for those classes",
"keywords": ["cascading","github","jekyll","markdown","multimarkdown","sheets","style","behavior","custom","depending","headers","jekyll","kramdown","liquid","markdown","marked","maruku","modify","multimarkdown","octopress","processor","right","strip","style","styles","while","accurately","added","adjust","allowing","among","apply","argument","assumption","before","below","bloggers","bugfixing","check","class","classes","clean","clipboard","comes","command","compress","compression","containers","conversion","convert","custom","customization","default","detects","directly","doesn","drafts","drive","easiest","editing","embed","embedded","encode","example","exist","exploration","first","folder","fonts","function","great","handle","image","images","including","information","installed","layout","level","local","makes","markedapp","needed","normally","obvious","others","output","personally","plugin","posts","preferences","preprocessor","preview","process","processor","publishing","related","remove","renderer","rendering","replace","replaced","required","requires","results","rules","sample","screen","script","scripts","search","seeing","separate","simplify","source","specifically","specify","style","styles","substitute","substituted","substitutions","theme","under","using","version"]
},{
"title": "A relaunch for 2013",
"url": "/2013/01/01/a-relaunch-for-2013/",
"tags": ["jekyll","webdesign"],
"date": "Jan 1st, 2013",
"ts": "1357066860",
"summary": "As you may have noticed, this site has changed. I find it significantly less ugly now, but the changes run much deeper than that. The whole site is running on Jekyll now, and hosted on my own Mac mini at Macminicolo . It was previously running on WordPress and hosted at Dreamhost. Over the course of building this new site, I ve realized that I really don t have many issues with WordPress, and Dreamhost has always been pretty stable for me. I just get antsy and want to try new things, so I m giving this a shot. The site is responsive and should work well on iPhone and iPad in addition to desktop browsers. It does some cool things like replacing the menu bar with a dropdown at small sizes, cropping and resizing images for different views, etc. The ultimate goal was speed and stability, but I really wanted to make it more enjoyable to read on mobile devices at the same time. I m still fleshing out a download system to replace the previous one, but all existing downloads that weren t already Github-based should have direct links to the older files. My custom WordPress converter takes care of that for me. It also builds a CSV file with all of the relevant data for each download and translates shortcodes to actual links. I need to make it more easily updatable, but it should cover the bases for the time being. While most of the work I ve done has been on the back end, there are a few nifty features on the front end. One that stands out is the archive filter. It lets you type a word or two and filters the post list with fuzzy matching on the titles and associated keywords. It should work pretty well for quick searches, although the client-side parsing can bog down sometimes. I ll be tweaking it as I go. The main site search is running off of Macdrifter s NerdQuery project . That search feature will be updated to match the site design shortly, but it will provide accurate search results of my site and make it easy to extend the search to some other awesome nerd sites. Also check out the SuperReadable option, available from the gear menu in the upper right corner. It modifies the fonts and colors a bit to improve readability, and replaces the main font with OpenDyslexic. While OpenDyslexic is designed to aid dyslexic readers, I ve actually found it increases reading speed for most people. It s ugly, but it works. I don t know yet if I got the RSS feeds redirecting and formatted properly, but we ll find out soon enough. I believe I ve accounted for",
"keywords": ["dreamhost","iphone","jekyll","wordpress","because","disqus","dreamhost","github","jekyll","macdrifter","macminicolo","nerdquery","opendyslexic","superreadable","while","wordpress","accounted","accurate","although","antsy","archive","associated","available","awesome","backlinks","badly","based","bases","beginning","believe","browsers","building","builds","changed","changes","check","client","colors","comments","contents","converter","corner","cover","cropping","custom","deeper","design","designed","desktop","devices","different","direct","download","downloads","dropdown","dyslexic","easily","enjoy","enjoyable","enough","everything","extend","feature","features","feeds","files","filter","filters","fleshing","fonts","formatted","found","front","fuzzy","giving","haven","hosted","iphone","images","improve","increases","issues","keywords","links","match","matching","missing","mobile","modifies","nifty","noticed","older","parsing","people","previously","project","properly","quick","readability","readers","reading","realized","redirecting","relevant","remaining","replace","replaces","replacing","resizing","responsive","results","right","running","screw","search","searches","shortcodes","shortly","significantly","sites","sizes","small","sometimes","speed","stability","stable","stands","switch","switched","system","takes","think","thought","titles","track","transitional","translates","tweaking","ultimate","updatable","updated","upper","using","views","wanted","weren","whole","works"]
},{
"title": "Systematic #25 with Federico Viticci",
"url": "/2012/12/31/systematic-25-with-federico-viticci/",
"tags": ["podcast","systematic"],
"date": "Dec 31st, 2012",
"ts": "1356994320",
"summary": "Happy New Year s Eve! Since I m certain you were wondering what you were going to do with that day off tomorrow, Systematic is out a day early this week to make sure your Podcast playlist is stocked. I was joined by Federico Viticci of Macstories this week to talk about tech blogging, the fun of working across multiple time zones and, as always, some great picks of the week. Thanks to Federico for working with me on scheduling a recording between Minnesota, US and Viterbo, Italy without making me get up too early. I got to do another ad insert in post this week, doctored for your enjoyment. Catch Systematic episode 25 at 5by5 .",
"keywords": ["federico","iphone","italy","macstories","minnesota","studios","viterbo","viticci","catch","federico","happy","italy","macstories","minnesota","podcast","since","systematic","thanks","viterbo","viticci","across","another","between","blogging","certain","doctored","enjoyment","episode","going","great","joined","making","multiple","picks","playlist","recording","scheduling","stocked","tomorrow","wondering","working","zones"]
},{
"title": "Great apps for 2012: iOS",
"url": "/2012/12/29/great-apps-for-2012-ios/",
"tags": ["appreview","iphone"],
"date": "Dec 29th, 2012",
"ts": "1356820140",
"summary": "This is part three of a three-part series covering some of my favorite apps for 2012. So far I ve posted about my favorite Mac apps and my favorite iOS and Mac combo apps . This post covers some of my favorite iOS-only apps for the year. In Episode 22 of Systematic, I talked at length with Joey Carenza about iPhone photography. I brought a few of my favorite apps to the table, and he introduced me to a few more. These have become my favorite photo tools: KitCam An awesome, all-purpose photo tool. Choose lighting, film, lens effects and edit them all with live preview and non-destructive save (you can change effects later). Great editing tools and white balance adjustments. It even has a high speed mode that takes lower resolution images very quickly. The list of features goes on, definitely check it out. Pro HDR This is my favorite HDR tool. It has auto and manual modes for taking two exposures at once and lets you adjust the mix and contrast immediately. I did a quick review of Pro HDR a little bit ago. Cortex Cam Cortex Cam uses the video capabilities of your iPhone to shoot a series of photos at high speed, averaging them to remove noise from a scene and provide an amazingly high-resolution image. It works best with poorly-lit scenes with little to no movement, but in those situations it s amazing. Flickr The new Flickr app is awesome. And free. I ve used Flickr for years and never slowed, but this app has rekindled my interest in surfing other people s photos and uploading on the go. For some real fun, be sure to check out the Olloclip 3-in-1 Lens (also available for iPhone 5 ). People often ask what my personal preferences are. Truth be told, there s something I love about almost all of them. The ones that become permanent additions to my Writing folder, though, are the ones that are both well-rounded and stable. Here are my current top choices: Notesy Notesy is my Dropbox-based counterpart to nvALT. I ve been testing a variety for over a year now, and Notesy provides the most stable and speedy access to my large note collection, as well as cool features like regular expression search. Did I mention it s pretty fast? Trunk Notes Trunk Notes is a long-time favorite of mine. It s a full wiki platform, complete with a lot of the things you ve come to expect from MediaWiki or even Gollum. In addition to its special syntaxes, audio and image linking and full Markdown support, it also has a built-in web server for browsing",
"keywords": ["apple","iphone","markdown","mindmeister","mindnode","store","touch","acousticruler","acousticsheep","ampkit","amplitube","bonjour","boost","camera","carenza","center","choose","condo","contre","cortex","cover","daedalus","definitely","desktop","dolphin","dropbox","enter","episode","feeds","flickr","games","gollum","great","honorable","hopefully","jasmine","keyboard","kitcam","letterpress","logitech","macdrifter","markdown","maybe","mediawiki","metronome","microsoft","mindmeister","mindnode","monsters","music","navigating","netbot","notes","notesy","olloclip","pavlovian","people","photography","phraseology","poster","previously","promptdown","python","pythonista","quicklytics","radiolab","remote","rhino","screens","setting","simple","slash","sleepphones","social","spotify","super","systematic","tally","teleprompter","tentacles","terminology","textmate","textastic","tools","touch","trunk","truth","tweetbot","ultrathin","verbs","video","wordpress","writeup","writing","youtube","ability","absolute","abstract","accelerometer","access","account","accurate","added","adding","additions","adjust","adjustments","admit","affordable","against","airplane","alert","allows","almost","amazing","amazingly","analytics","animations","anthropomorphic","anyone","anywhere","argue","asleep","attachment","audible","audio","autocomplete","available","averaging","awesome","balance","based","basic","battle","beats","because","between","binaural","blast","blogging","blogs","boards","bored","brainstorming","breeze","brought","browser","browsing","built","bunch","capabilities","change","character","chart","check","checking","choice","choices","clack","clickety","collaboration","collection","combines","combo","commonly","comparison","complicated","concludes","connections","consuming","contrast","control","controls","corner","count","counterpart","couple","covering","covers","create","creation","creations","critter","cursor","dabbling","definitely","definitions","desktop","destructive","developed","developer","device","devices","dictionary","digestive","distance","document","doesn","doing","dolphin","doubles","driven","driving","easily","eating","editing","editor"]
},{
"title": "Systematic #24 with Jesse Grosjean",
"url": "/2012/12/28/systematic-24-with-jesse-grosjean/",
"tags": ["podcast","systematic"],
"date": "Dec 28th, 2012",
"ts": "1356736920",
"summary": "Well, my incredibly late Christmas episode of Systematic is up . It features an interview with Jesse Grosjean, the mad text genius behind TaskPaper, WriteRoom, PlainText and FoldingText. What more do I need to say? Enjoy, and be warned that the New Years episode may be equally late. I ll get caught up after that!",
"keywords": ["barbara","christmas","favola","holidays","medium","taskpaper","writeroom","christmas","enjoy","foldingtext","grosjean","jesse","plaintext","systematic","taskpaper","writeroom","years","behind","caught","episode","equally","features","genius","incredibly","interview","warned"]
},{
"title": "Great apps for 2012: Mac and iOS",
"url": "/2012/12/28/great-apps-for-2012-mac-and-ios/",
"tags": ["appreview","macos"],
"date": "Dec 28th, 2012",
"ts": "1356708600",
"summary": "This is part of a 3-part series covering some of my favorite apps for 2012. Yesterday I posted about some of my favorite Mac apps this year . This post is dedicated to apps available on both Mac and iOS with sync capabilities. This is by no means an all-encompassing list, but rather a few standouts. My favorite journaling app for Mac and iOS . While I love Day One on my desktop machine, it s the combination of the iPad app and the Mac version that really seals the deal for me. 1Password has long been a default install for me, and one of the first to go on any machine or device. The recent release of 1Password 4 for iOS was amazing, improving 1Password in some areas I hadn t even noticed it was lacking. 1Password on my iPhone is crucial, providing me with the security of un-hackable passwords and the convenience of having them safely stored for easy access. I also keep all of my credit card info and software serial numbers in there, and both are extremely handy to have readily available. With 1Password s intense security capabilities, I m comfortable having all of my sensitive data with me on the go. If you do anything online, I suggest having 1Password in your digital arsenal. Another must-have for me. TextExpander on my Mac saves me hours of mindlessly retyping the same things over and over, from my email signature to repetitive email responses to a plethora of other cool tricks . On iOS , TextExpander is primarily limited to the apps that support it, but that list is constantly growing. In any app that supports it, it s awesome to have all of my Markdown and other snippets available in a couple of keystrokes. Fantastical has become a complete replacement for Calendar on my Mac , and a very handy tool on my iPhone . With excellent overviews of your schedule, including tasks, it s a visually impressive substitute. The real magic, though, is in natural language event creation, allowing you to type a sentence describing an event and have the equivalent calendar entry created automatically. Cobook is another app that s replaced a default tool for me, in this case Address Book. Cobook is superior to the built-in address book in just about every way, with popup contact access, easy linking to social networks and an elegant system for tagging using contact groups. It syncs fully with the system address book and works perfectly with Mail and other applications. The iOS version syncs seamlessly and is perfect for quickly adding contacts on the",
"keywords": ["cobook","iphone","mindnode","store","tweetbot","twitter","address","another","bettertouchtool","byword","calendar","cobook","dropbox","fantastical","great","magic","markdown","mindnode","password","pocket","previously","remote","slogger","textexpander","trackpad","tweetbot","twitter","while","yesterday","access","across","action","adding","addon","address","allowing","allows","almost","amazing","announced","another","applications","archive","areas","arsenal","articles","assign","automatically","available","awesome","based","beautiful","became","before","blogging","built","calendar","capabilities","capture","catching","changing","checking","choice","client","combination","comfortable","compatible","constantly","contact","contacts","contender","control","convenience","couple","covering","created","creation","credit","crucial","dedicated","default","describing","desktop","device","devices","digital","discussed","distraction","easiest","elegant","email","encompassing","endlessly","entries","entry","environment","excellent","explore","export","extends","favorite","features","files","first","flexible","friendly","fully","functions","gesture","gestures","giddily","great","groups","growing","hackable","handy","having","hours","iphone","import","impressive","improving","including","install","intense","interface","intuitive","journal","journaling","keyboard","keystrokes","lacking","language","later","letting","limited","linking","looking","machine","magic","mapping","mindlessly","multiple","natural","networks","noticed","numbers","offers","online","overviews","passwords","perfectly","personal","perusal","platforms","plethora","popup","posted","posts","powerful","primarily","provides","providing","quickly","rather","readily","recent","record","regularly","release","repetitive","replaced","replacement","responses","retyping","reviewed","running","safely","saves","schedule","scripts","seals","seamlessly","security","sensitive","sentence","serial","series","several","short","shortcuts","signature","simple","snippets","social","software","standouts","store","stored","strong","substitute","suggest","superior","support","supports","syncs"]
},{
"title": "Great apps for 2012: Mac",
"url": "/2012/12/27/great-apps-for-2012-mac/",
"tags": ["appreview","macos"],
"date": "Dec 27th, 2012",
"ts": "1356628500",
"summary": "This will be a 3-part series celebrating some of my favorite apps in 2012: Mac apps, Mac iOS crossover apps and iOS apps. These are apps that I use regularly. Not all of them are new, and it s not even close to a comprehensive list just a few I thought worth mentioning. Sublime has become my editor of choice. It s the reason I m learning Python, and it s the most flexible and powerful editor I ve currently come in contact with. Once you get used to the un-Mac-like interface and memorize a few keyboard shortcuts, it s fast and easy to code with, and even pretty good for writing Markdown . This year s update to Curio was pretty amazing. If you want a project management app that works with a less structured way of thinking, Curio is perfect for collecting all kinds of documents, brainstorms, notes and more. It has the ability to add due dates and progress reports and see overviews of projects in a very organized manner. Simplify is my favorite music controller. It works with both Spotify and iTunes and will detect which is playing at the time. It shows cover art on the desktop (and you can customize it ), provides global control hotkeys and a popup music info and control panel. If you write documentation for screen-based procedures, Clarify is an amazing tool for quickly gathering screenshots, adding instructions and outputting PDF, HTML or even blog-based instructions. Also see ScreenSteps for more in-depth documentation and update management. By far one of my favorite utilities of the year. It gets your menu bar items on your Mac under control, hiding things that you don t need to see in a separate menu bar that can be hidden. Menu items that provide notifications can be set to show for a specified period of time before hiding again. It lets you control the position of each icon and can manage system icons as well. Worth every penny. PopClip brings iOS style selection popups to the Mac. When you select some text, it pops up a contextually-aware, iOS-style hud that allows for copy, cut, paste and a multitude of custom actions. You can even build your own extensions for it. Trickster offers a menu bar popup that shows you your most recent files and gives you easy access to them. Track downloaded files or files you saved from any application and forgot where you put them. It can sort by type and allows flagging and favorites. FoldingText is the sequel to TaskPaper. It s a fully-fledged Markdown editor that renders your markup inline. It has",
"keywords": ["cascading","coffeescript","itunes","python","sheets","style","sublime","taskpaper","totalfinder","bartender","clarify","codekit","coffeescript","curio","finder","foldingtext","function","great","keyframe","livereload","markdown","photoshop","popclip","purple","python","retina","screensteps","shush","simple","simplify","slicy","spotify","sublime","taskpaper","totalfinder","track","trickster","worth","yoink","ability","access","actions","adding","advanced","again","allows","amazing","animation","animations","another","areas","automatically","automating","aware","awesome","based","before","between","blanks","brainstorm","brainstorms","brings","browser","browsers","build","burner","capabilities","celebrating","changes","choice","close","collecting","compiling","comprehensive","contact","contextually","control","controller","cover","creating","crossover","custom","customize","dates","depending","depth","design","desktop","detect","detected","developers","development","devices","different","documents","double","downloaded","earlier","editor","elaborated","elegant","excels","extends","extensions","favorite","favorites","files","filled","flagging","fledged","flexible","folder","forgot","format","fully","gathering","generating","gives","global","great","handles","hidden","hiding","honorable","horizontal","hotkeys","ibookstore","itunes","icons","image","images","including","indispensable","inline","inserted","instructions","interface","items","keyboard","kinds","layered","layers","learning","lightweight","linear","little","major","makes","management","manipulations","markup","masking","memorize","mention","mentioning","microphone","mindmap","modes","multiple","multitude","music","muting","names","notes","notifications","offers","organized","outline","outlines","output","outputting","overviews","pages","panel","paste","penny","playground","playing","plugins","popup","popups","portability","position","possible","powerful","procedures","process","project","projects","provides","quickly","recent","refresh","refreshing","regenerate","regularly","renders","replacement","reports","requiring","saved","screen","screenshots","script","scripting","searches","selection","separate","sequel"]
},{
"title": "Merry Christmas - the holiday report",
"url": "/2012/12/25/merry-christmas-the-holiday-report/",
"tags": [],
"date": "Dec 25th, 2012",
"ts": "1356462420",
"summary": "Merry Christmas to those who celebrate it, happy [your favorite December holiday] to everyone else. Systematic will be a little delayed this week. I recorded a fun episode ahead of time with Jesse Grosjean of Hog Bay Software, with the intention of editing on my flight to Georgia, but forgot to record the ad spots I needed before leaving my home studio behind. So much for planning ahead. That episode will probably be up by Thursday. Marked remains on sale through the 28th I think. The iTunes Connect holiday means I can t change prices or metadata for it, but I did have some scheduled changes I forgot to erase before the holiday began. This could mean uncontrollable changes in price or, worst case, a couple days of Marked being unavailable for sale. That would be bad, but it s currently beyond my control. My apologies for any inconvenience.",
"keywords": ["christmas","georgia","holidays","iphone","itunes","merry","opinions","software","christmas","connect","georgia","grosjean","jesse","marked","merry","software","systematic","thursday","ahead","apologies","before","began","behind","beyond","celebrate","change","changes","comas","control","couple","delayed","editing","episode","erase","everyone","family","favorite","flight","forgot","happy","holiday","itunes","inconvenience","induced","intention","leaving","little","metadata","needed","planning","price","prices","reading","record","recorded","remains","rising","scheduled","spending","splendid","spots","studio","think","through","unavailable","uncontrollable","variety","worst"]
},{
"title": "Marked still 50% off",
"url": "/2012/12/24/marked-still-50-off/",
"tags": ["marked"],
"date": "Dec 24th, 2012",
"ts": "1356365400",
"summary": "A quick PSA: I thought Marked s price was stuck at $.99 for the week, but my initial plan of a slow ramp back up to $3.99 is in effect. It should still be 50% off today, but the price will be climbing so act soon!",
"keywords": ["climb","commercial","indoor","recreation","marked","climbing","initial","price","quick","stuck","thought","today"]
},{
"title": "Marked holiday sale!",
"url": "/2012/12/21/marked-holiday-sale/",
"tags": ["marked"],
"date": "Dec 21st, 2012",
"ts": "1356098400",
"summary": "I m taking part in AppyFridays this week. Due to the fact that changes to pricing and app updates will be unavailable from the 21st through the 28th (everyone deserves a vacation), Marked is going to be on sale all the way through Christmas. For just 99 , you can get the Markdown love you deserve this holiday. If you haven t heard about Marked, check out the Marked web page for details. Not to toot my own horn, but it s a must-have for any plain-text aficionado (or soon-to-be). Live previews with any editor, export options and features like automatic Table of Contents and Auto scroll to last edit all make writing plain text a pleasure. Pick up a copy this week , it will be a dollar well spent.",
"keywords": ["christmas","contents","howbert","latex","markdown","multimarkdown","table","appyfridays","christmas","contents","markdown","marked","table","aficionado","automatic","changes","check","deserve","deserves","details","dollar","editor","everyone","export","features","going","haven","heard","holiday","options","previews","pricing","scroll","spent","taking","through","unavailable","updates","vacation","writing"]
},{
"title": "Systematic #23 - Jim Dalrymple",
"url": "/2012/12/18/systematic-23-jim-dalrymple/",
"tags": ["podcast","systematic"],
"date": "Dec 18th, 2012",
"ts": "1355859060",
"summary": "Jim Dalrymple (The Beard) of The Loop and Amplified joined me this week to talk about the serious business of rock and roll, party planning and great apps, with only a small diversion down gun control avenue. Canada is full of great people, and I count Jim among them. It was a really fun conversation and I hope to have him back again! Check out Systematic Episode 23 at 5by5 .",
"keywords": ["apple","beard","canada","dalrymple","planning","podcast","services","studios","amplified","beard","canada","check","dalrymple","episode","systematic","again","among","avenue","business","control","conversation","count","diversion","great","joined","party","people","planning","serious","small"]
},{
"title": "Calendar Paste, scheduling made easy",
"url": "/2012/12/18/calendar-paste-scheduling-made-easy/",
"tags": ["appreview","iphone"],
"date": "Dec 18th, 2012",
"ts": "1355853600",
"summary": "Calendar Paste is a handy new app from Christian Tietze (one of the original Notational Velocity hackers). It lets you create event templates for Apple s Calendar apps on your iPhone. Set the title, location and duration, and then when you need to schedule it just choose it from the list and pick a date and time. At first I couldn t think of a use for it, mostly because it wasn t a possibility I d ever considered. Then I realized that I schedule things like podcast recordings on a regular basis, rarely at the same time but always the same title and approximate duration. With a template for it, as soon as I confirm a time with a guest, I just tap the Podcast Recording template in the list, dial in the date and it s on the calendar. Team meetings that aren t repeating events, grocery shopping trips on a need-to-eat basis, it works perfectly for anything that s the same event but not always on the same day or time. Your iPhone is potentially an excellent productivity tool. Note-taking, calendar scheduling, communication and all of the other capabilities of iOS. However, the actual benefit of the tool is entirely dependent on how long it takes you to actually use it. Calendar Paste is one of those apps that makes on-the-go productivity a reality. Calendar paste is available for your iPhone in the iTunes App Store . It s .99 and potentially a huge time-saver for quickly handling event scheduling.",
"keywords": ["apple","calendar","google","iphone","itunes","notational","store","velocity","apple","calendar","christian","however","notational","paste","podcast","recording","store","tietze","velocity","approximate","available","basis","because","benefit","calendar","capabilities","choose","communication","confirm","considered","couldn","create","dependent","entirely","events","excellent","first","grocery","guest","hackers","handling","handy","iphone","itunes","location","makes","meetings","mostly","original","paste","perfectly","podcast","possibility","potentially","productivity","quickly","rarely","reality","realized","recordings","regular","repeating","saver","schedule","scheduling","shopping","takes","taking","template","templates","think","title","trips","works"]
},{
"title": "Quick tip: Using 1Password when you can't use 1Password",
"url": "/2012/12/18/quick-tip-using-1password-when-you-cant-use-1password/",
"tags": ["password","quicktip"],
"date": "Dec 18th, 2012",
"ts": "1355842800",
"summary": "1Password is almost always the first app I install on a new machine. It s my key to opening all of the necessary accounts and it holds all of my software licenses. It s literally indispensable. I m going to just go ahead and assume you use it or are at least familiar with it and move along. You may know this already, but there s a hidden gem in your 1Password keychain file. If you locate the 1Password.agilekeychain file (Preferences General, first item) and right click it in Finder, you can view the package contents. Immediately inside you ll see a file called 1Password.html. It s a web-based means of accessing all your data without 1Password. Just open it in your browser and go. Note that Google Chrome as of about v14 is horrible for running local files (and bookmarklets on SSL sites another story). To avoid this, I launch Chrome with a wrapper script: If you don t feel like dealing with command line flags, though, open your 1Password.html file in Safari. Whatever you do, don t open it in Firefox because that would mean you d have to use Firefox. Just trying to keep you safe. Mike Rose in the comments notes that you can use a Dropbox URL instead of accessing from the local file, avoiding the Chrome issues and alleviating the need to sync the keychain file locally. Smart one, that Mike Rose. With this feature, you can get to your passwords even when you can t run 1Password. Accessing your Dropbox-synced keychain file through the web interface is the most practical example. I ve been setting up a couple of remote machines where I never intend to use the GUI and am trying to avoid installing apps in general. I install Dropbox 1 , though, and I can get all of the info I need without installing 1Password everywhere. Second use case: you use really long passwords and/or need to copy extremely long serial numbers when installing apps. You have 1Password on your iPhone, but it s not doing you much good with things you can t type, and you don t have a clipboard catcher on the machine your working on. Don t want to deal with syncing the keychain file, but need a bunch of serial numbers? Go to your Software folder in 1Password, select all and choose Export Selected from the File menu. Check the necessary fields (probably just title, registered email, registered name and license code) and export it as a plain text file. SCP/FTP that to a remote machine or put it on a USB drive. Now you can just search for the software by name and get the registered",
"keywords": ["amboynensis","ambulyx","chrome","dropbox","firefox","google","iphone","safari","accessing","check","chrome","dropbox","export","finder","firefox","general","google","password","preferences","safari","second","selected","smart","software","sublime","whatever","accessing","account","accounts","agilekeychain","ahead","alleviating","almost","another","assume","avoid","avoiding","based","because","bookmarklets","browser","bunch","called","catcher","choose","click","clipboard","command","comments","contents","couple","dealing","doing","dotfiles","drive","email","everywhere","example","export","extra","familiar","feature","fields","files","first","flags","folder","function","general","going","hassle","hidden","holds","horrible","iphone","indispensable","inside","install","installing","interface","issues","items","keychain","keychains","launch","license","licenses","literally","local","locally","machine","machines","necessary","notes","numbers","opening","output","package","passwords","practical","preferences","recommend","registered","remote","right","running","script","search","secondary","selective","serial","setting","share","single","sites","software","story","straight","strewn","synced","syncing","through","title","trying","where","working","wrapper"]
},{
"title": "Web excursions: December 16, 2012",
"url": "/2012/12/17/web-excursions-december-16-2012/",
"tags": ["bookmarks"],
"date": "Dec 17th, 2012",
"ts": "1355756400",
"summary": "Links of interest from December 11, 2012 through December 16, 2012: V2 Sneak Peek: Alfred App Workflows Ok, the possibilties for endless fiddling may be enough to make me switch unless LaunchBar adds the ability to return custom menu lists from Actions. Then I d be theirs for a long, long time. Apaxy: A simple, customisable Apache directory theme Maybe this is my Jekyll-based solution for projects that aren t convenient for GitHub JSON Helper for AppleScript I bought this a while ago and forgot about it. A reminder from iNik renews the intrigue of efficiently handling REST APIs in AppleScript. If only the rest of AppleScript were efficient Curio 8 tips and tricks video As much as I live in plain text, I m pretty much in love with Curio. It s actually a great way to organize your text files, mind maps, archived emails just about anything. html.md Combined with Python Readability, this is a pretty darn good Markdownifier. In testing it s done a better job than html2text in almost all problematic areas. Requires Node.js.",
"keywords": ["apple","applescript","github","launchbar","python","actions","alfred","apache","apaxy","applescript","curio","github","helper","jekyll","launchbar","links","markdownifier","maybe","python","readability","requires","sneak","workflows","ability","almost","archived","areas","based","bought","convenient","custom","customisable","directory","efficient","efficiently","emails","endless","enough","fiddling","files","forgot","great","handling","interest","intrigue","lists","organize","possibilties","problematic","projects","reminder","renews","return","simple","solution","switch","testing","theirs","theme","through","tricks","video","while"]
},{
"title": "Tally, let me count the ways",
"url": "/2012/12/14/tally-let-me-count-the-ways/",
"tags": ["appreview","iphone"],
"date": "Dec 14th, 2012",
"ts": "1355514600",
"summary": "I m horrible at keeping track of anything without a little help. It s why I love my computer and my iOS devices so much. One area I m absolutely incompetent in is keeping tallies of things in realtime. The slightest distraction and all of the numbers get jumbled up and I forget where I was. If you ve listened to Systematic , you ve probably heard it happen. I ve had a few counter apps for my iPhone, and all have done the job. Most of them were one-shot apps from developers who ve moved on, though, and the last of my original ones just stopped working when I got my iPhone 5. I went out looking for a new one. Something simple. I discovered Tally after a bit of searching. I don t know how I missed this release from Agile Tortoise , but I ll chalk it up to the previously mentioned disabilities. It s so simple, elegant and worth every bit of 99 cents. Tap the screen to increment. Swipe down to decrement. Swipe to the left and you can change the value manually, change the number of steps a tap will increment, and set it to count up or down. Swipe to the right and you get a list of saved tallies that you can add to and jump back to. Swipe up and you get a button for a quick counter reset, as well as my favorite part: a button to send to Drafts ( review ). It just sends the current count and tally title to a new draft, so you can quickly save a note about it to a Dropbox file or Evernote, Tweet it, send it to OmniFocus, Day One or any of dozens of other actions. It s a great way to keep track of running counts and repeating events in a place other than just within the app. The only nicety I d love to see added is shake to count. It s a minor convenience, but sometimes it s nice to disable the tap counter and be able to hold the phone in your hand and just make a little wand gesture to add to the count. Perfect in situations where you don t want to be holding your phone in front of you. Tally doesn t have this yet, but I m hoping I can talk the developer into it. Maybe I ll play him a game of Letterpress for it. I don t have to count things manually very often, but when I do an app like this is a lifesaver. Tally is the most elegant counter I ve seen, and it s earned a permanent spot in the Tools folder on my iPhone. Tally is .99 US on the App Store .",
"keywords": ["dropbox","evernote","iphone","omnifocus","smartphone","store","twitter","agile","drafts","dropbox","evernote","letterpress","maybe","omnifocus","store","swipe","systematic","tally","tools","tortoise","actions","added","button","cents","chalk","change","computer","convenience","count","counts","decrement","developer","developers","devices","disabilities","disable","discovered","distraction","doesn","dozens","draft","earned","elegant","events","favorite","folder","forget","front","gesture","great","happen","heard","holding","hoping","horrible","iphone","incompetent","increment","jumbled","keeping","lifesaver","listened","little","looking","manually","mentioned","minor","missed","moved","nicety","numbers","often","original","permanent","phone","previously","quick","quickly","realtime","release","repeating","reset","right","running","saved","screen","searching","sends","shake","simple","situations","slightest","sometimes","steps","stopped","tallies","tally","title","track","value","where","within","working","worth"]
},{
"title": "Perspective Icons, a touch of beauty for OmniFocus",
"url": "/2012/12/13/perspective-icons-a-touch-of-beauty-for-omnifocus/",
"tags": ["design"],
"date": "Dec 13th, 2012",
"ts": "1355423820",
"summary": "Federico Viticci of MacStories and Silvia Gatta , together known as Icons Coffee , have released a set of icons specifically designed for OmniFocus. Perspective Icons are perfect for touching up the default icons, and there are a total of 50 to choose from for your personal Perspectives as well. The set fits quite well with the OmniFocus aesthetic much better than the default Perspective icons you get to choose from and more so than most images I ve been able to scrape together. Looking at your task list can be depressing enough without having horrible icons to boot. They also happen to be perfect for a wide variety of other uses (such as the mind map I was just working on today). The set is going to be priced at $9.99, but you can pick up Perspective Icons at an introductory price of $4.99 if you hurry.",
"keywords": ["federico","group","iphone","macstories","management","omnifocus","viticci","coffee","federico","gatta","icons","looking","macstories","omnifocus","perspective","perspectives","silvia","viticci","aesthetic","choose","default","depressing","designed","enough","going","happen","having","horrible","hurry","icons","images","introductory","personal","price","priced","released","scrape","specifically","today","together","touching","variety","working"]
},{
"title": "Systematic #22 with J.S. Carenza III",
"url": "/2012/12/11/systematic-22-with-j-s-carenza-iii/",
"tags": ["podcast","systematic"],
"date": "Dec 11th, 2012",
"ts": "1355256120",
"summary": "The J stands for Joseph, he goes by Joey, and he s currently the Road Manager for Leonard Cohen s Old Ideas World Tour . He s been on the road for a long, long time now, and it was really interesting to grill him on the years-long path that led to his present employment. I spent some time gushing about Leonard Cohen, as I am wont to do, but we eventually moved on to talk about the evolution of photography, attention and of course, some of the coolest links of the week. Thanks to Joey for making the time to chat with me from a hotel room while he s on the road! Check out the latest episode at 5by5 .",
"keywords": ["buckley","cohen","hallelujah","leonard","montreal","studios","television","check","cohen","ideas","joseph","leonard","manager","thanks","world","coolest","employment","episode","eventually","evolution","grill","gushing","hotel","interesting","latest","links","making","moved","photography","spent","stands","while","years"]
},{
"title": "Web excursions: December 11, 2012",
"url": "/2012/12/11/web-excursions-december-11-2012/",
"tags": ["bookmarks","search"],
"date": "Dec 11th, 2012",
"ts": "1355239380",
"summary": "Links of interest from November 28, 2012 through December 11, 2012: 1Password 4 for iOS: Coming Soon to an App Store near you I have seen it. It is good. Scratch that. It s awesome. The Silver Searcher Faster text searching from the command line. Seriously, it s fast (faster than ). Installable via homebrew. Recoll I linked this over a year ago, but just now got around to figuring out how to compile it (you can install it via MacPorts, but ). After installing and via homebrew and editing a configuration file , it compiled flawlessly and is currently indexing my drive. There s already enough indexed to do searches with full query syntax, so I ve been playing. It can scour epubs, pdfs, even zip and tar archives. Color me impressed. Warning, though, it s ugly as all get out. Qt go figure. X-editable A very nice reincarnation of the bootstrap-editable plugin for jQuery. Allows popup and inline editing of fields, selections and textareas with an Ajax backend for database updates. See how long a given process has been running - Mac OS X Hints This could also be used to kill a long-running process without having to poll as much. Nifty trick.",
"keywords": ["apple","iphone","macports","store","allows","color","coming","faster","hints","installable","links","macports","nifty","password","recoll","scratch","searcher","seriously","silver","store","warning","archives","awesome","backend","bootstrap","command","compiled","configuration","database","drive","editable","editing","enough","epubs","faster","fields","figure","figuring","flawlessly","having","homebrew","impressed","indexed","indexing","inline","install","installing","interest","jquery","linked","playing","plugin","popup","process","query","reincarnation","running","scour","searches","searching","selections","syntax","textareas","through","trick","updates"]
},{
"title": "OpenURLS PopClip extension",
"url": "/2012/12/11/openurls-popclip-extension/",
"tags": ["popclip"],
"date": "Dec 11th, 2012",
"ts": "1355227320",
"summary": "I added a new PopClip extension to my collection this morning. It s called OpenURLS and it does exactly what you think: it scans selected text for urls (http or custom handlers) and opens everything it finds in each urls default application. The default OpenInChrome extension is Chrome-specific and only works with a single URL. This extension allows as many urls as you can select, and will open whatever browser your system has assigned to each handler. This includes and links, as well as links. If you use something like Choosy it will open them through that, otherwise they ll open in your default browser. It works with a single url as well as it works with a bunch. The urls don t need to be in any special format, it will find them anywhere in the text, and won t choke on things like Markdown-formatted urls (surrounded by parenthesis).You can download the extension from the GitHub repo . Once you have it downloaded or cloned, just double-click the package from Finder to install.",
"keywords": ["browser","chrome","clients","extension","finder","github","google","locator","markdown","resource","choosy","chrome","finder","github","markdown","openinchrome","openurls","popclip","added","allows","anywhere","assigned","browser","bunch","called","choke","click","cloned","collection","custom","default","double","download","downloaded","everything","extension","finds","format","formatted","handler","handlers","includes","install","links","morning","opens","package","paren","parenthesis","scans","selected","single","special","specific","surrounded","system","think","through","whatever","works"]
},{
"title": "Planter for LaunchBar",
"url": "/2012/12/09/planter-for-launchbar/",
"tags": ["launchbar","productivity","scripting"],
"date": "Dec 9th, 2012",
"ts": "1355078340",
"summary": "This is a version of Planter (instant nested folder creation from indented text input) modified for LaunchBar 1 . It has a customized version of the Planter script and CocoaDialog embedded, so you can use it simply by unzipping the download, placing the file in and running it directly from LaunchBar. Download at the end of this post. If you use LaunchBar s Instant Send feature or navigate to a folder, hitting tab and running the Planter action will automatically use that folder as the root. If you run Planter on its own, it will ask you to pick a root directory. Next, it will show you any templates you have installed in . See the original post for more information on templates. If you choose Custom from this dialog, you ll get a text dialog where you can enter your own indented directory structure to create. Directories are entered as plain text, and indenting a line will make that directory a child of the previous indent level before it: Note: this version does not have a fallback if there are no templates installed. I should have, but I m out of time to fix this right now. Therefore, you must have at least one file in . Put whatever common folder structure you use into or just create a blank file with a extension. Lastly, it will ask you for any replacement variables for the template. These are entered separated by spaces. Multiple-word replacements should be quoted (e.g. ). Then, it instantly creates your nested structure with any variable replacements in the folder you chose. Boom. The next step for Planter is to handle templated files. For example, entering index.html on an indented line below a folder name would create a skeleton html5 index file at that location. I plan to have any file in with an extension other than serve as a file template, so entering a matching name and extension in the file structure will place a file instead of creating a directory. Coming eventually. If anyone wants to modify this script to work with Alfred, et al, it shouldn t be terribly difficult. All dependencies are embedded in the script bundle. Have fun. Be productive. Planter for LaunchBar/CLI v1.3 Download Planter for LaunchBar/CLI v1.3 Instantly create nested directory structures from indented text Published 05/05/13. Updated 05/05/13. Changelog Donate More info Your support is greatly appreciated! Or me on GitHub!",
"keywords": ["applescript","computer","directory","folder","launchbar","management","structure","alfred","applescript","changelog","chunks","cocoadialog","coming","custom","directories","donate","download","github","instant","instantly","jonathan","lastly","launchbar","multiple","planter","poritsky","published","therefore","updated","action","anyone","appreciated","automatically","before","below","blank","borrowed","bundle","child","choose","chose","common","create","creates","creating","creation","customized","dependencies","dialog","difficult","directly","directory","download","embedded","enter","entered","entering","eventually","example","extension","fallback","feature","files","folder","greatly","handle","hitting","indent","indented","indenting","index","information","input","installed","instant","instantly","level","location","matching","modified","modify","navigate","nested","original","placing","productive","quoted","replacement","replacements","right","running","script","separated","serve","shouldn","simply","skeleton","spaces","structure","structures","support","template","templated","templates","terribly","unzipping","variable","variables","version","wants","whatever","where"]
},{
"title": "A useful Caps Lock key",
"url": "/2012/12/08/a-useful-caps-lock-key/",
"tags": ["keybindings","keyboard"],
"date": "Dec 8th, 2012",
"ts": "1354996140",
"summary": "Updated: This configuration no longer works in macOS Sierra or greater due to changes in Karabiner. I ve written some new instructions. I ve had my Caps Lock key remapped to an escape key for some time now. I ve become quite used to it to the point where using other people s keyboards is inconvenient. Given that I ve already ruined my muscle memory, I figured I d take it a step further. The end result is that hitting my Caps Lock key once still gives me Escape, but holding it triggers a Hyper modifier key (simultaneous Control, Shift, Option and Command). I can map the Hyper key using any of an assortment of utilities to do all kinds of fun things. This is a slightly simplified version of what Steve Losh presented earlier this year, specifically the remapping that takes place in the Hyper section of that post. The idea is the same, but this doesn t modify the behavior of the Control key my muscle memory just wasn t ready to accept that. The first thing you ll need to do is disable the Caps Lock key in OS X. Head to System Preferences Keyboard pane and click the Modifier Keys button. Set Caps Lock to No Action. The system starts with PCKeyboardHack . I ve used this on all of my machines, including Mountain Lion systems and have never had issues because of it. It installs a kernel extension, but I swear it s nothing to be afraid of. Next, I used KeyRemap4MacBook , another kext utility for more intensive remapping. If you re new to KeyRemap4MacBook, you ll have fun (and likely be overwhelmed) sifting through the default options. Explore, but be warned that enabling too many at once will guarantee that you forget which keys do what and lead to unexpected behavior. I know this from experience. I m adding my own custom commands to KeyRemap using the private.xml file. This file is easily located by opening KeyRemap4MacBook, going to the Misc. tab and clicking the button to Open private.xml. Below is the code that I m using for the primary remapping. It sets up the F19 key that the Caps Lock key is now remapped to so that pressing it once triggers escape (especially handy in vim) and holding it down simulates holding Control, Command, Option and Shift all at once. Rarely is this combination used as a hotkey combo, so it becomes a key that can be mapped to system-wide functions that are easily accessible without conflicting with anything else. Save the file and go back to KeyRemap4MacBook s settings. Under the Change Key tab, hit the ReloadXML",
"keywords": ["chrome","control","google","keyboard","keyboardmaestro","modifier","preferences","shortcut","system","action","below","bettertouchtool","change","chrome","cocoa","command","control","defaultkeybindings","escape","explore","hyper","karabiner","keyremap","keyboard","macbook","maestro","modifier","mountain","pckeyboardhack","preferences","rarely","reloadxml","shift","sierra","steve","system","under","updated","accept","accessible","actions","adding","afraid","another","assortment","basic","because","becomes","behavior","brand","browser","button","changes","click","clicking","combination","combo","command","commands","conditions","configuration","conflicting","custom","default","disable","doesn","doing","earlier","easily","editing","enabling","escape","especially","experience","extension","extra","favorite","fields","figured","first","forget","functions","gives","going","greater","guarantee","handy","hitting","holding","hotkey","iterm","including","inconvenient","install","installs","instructions","intensive","issues","kernel","keyboard","keyboards","kinds","launch","likely","limit","located","longer","macos","machines","mapped","mapping","mappings","memory","modifier","modify","muscle","navigation","nothing","offers","opening","opens","options","overwhelmed","people","point","presented","pressing","primary","private","ready","remapped","remapping","right","ruined","screenshot","section","sequential","settings","shows","sifting","simplified","simulates","simultaneous","slightly","special","specifically","starts","swear","system","systems","takes","through","triggered","triggers","unexpected","using","utilities","utility","version","visor","warned","where","works","written"]
},{
"title": "Gerber Artifact, the most useful thing in my pocket",
"url": "/2012/12/07/gerber-artifact-the-most-useful-thing-in-my-pocket/",
"tags": ["hardware","tools"],
"date": "Dec 7th, 2012",
"ts": "1354914000",
"summary": "I realized the other day that I don t blog much about the non-software tools and objects that I use every day. I ve mentioned my Nest and a few of my favorite capture tools , but not much else. I checked my pockets to see what I had that I never left home without I found my trusty Gerber Artifact 1 and thought it worth telling folks about. The Artifact is a small multi-tool with only one moving part (a small X-Acto blade). It fits nicely on a keychain or a lanyard, and provides an extremely portable crowbar, flat and phillips screwdrivers, a bottle opener and a sharp blade. I have a Gerber Diesel , and I love it. It s too big to comfortably carry in my pocket, though, so I end up using a belt pouch for it, which feels ridiculous. Thus, it usually only comes out of the drawer when I already expect to require its tools. The Artifact is always in my pocket, and comes out frequently: it s perfect for opening boxes and bottles, tightening miscellaneous screws, and prying open things that my fingernails just can t (or shouldn t) handle. The Artifact has replaced the Utili-Key for me. I love that I don t have to unfold anything for it to be immediately useful. There s a version of it called the Shard , too, which lacks the utility blade and is 100% TSA-happy. The Artifact runs about $12 US, the Shard about $7. If you re looking for a compact, multi-purpose tool 2 and are sick of the pocket-knife-bulge in your pants 3 , I highly recommend this one. All Amazon links are affiliate links, just for the record. I made it through an entire post about tools without saying tool and laughing like Beavis. I also wrote bulge in your pants without blinking an eye. Maturity, plain and simple.",
"keywords": ["amazon","beavis","multi","tools","amazon","artifact","beavis","diesel","gerber","maturity","shard","utili","affiliate","blade","blinking","bottle","bottles","boxes","bulge","called","capture","carry","checked","comes","comfortably","compact","crowbar","drawer","entire","expect","favorite","feels","fingernails","folks","found","handle","happy","highly","keychain","knife","lacks","lanyard","laughing","links","looking","mentioned","miscellaneous","moving","multi","nicely","objects","opener","opening","pants","phillips","pocket","pockets","portable","pouch","provides","prying","realized","recommend","record","replaced","ridiculous","saying","screwdrivers","screws","sharp","shouldn","simple","small","software","telling","thought","through","tightening","tools","trusty","unfold","useful","using","usually","utility","version","worth","wrote"]
},{
"title": "Mikes on Mics episode 45, procrastination",
"url": "/2012/12/07/mikes-on-mics-episode-45-procrastination/",
"tags": ["interview","podcast"],
"date": "Dec 7th, 2012",
"ts": "1354899600",
"summary": "It was a pleasure joining Michael Schechter and Mike Vardy on Mikes on Mics this week. The conversation centered around procrastination and its potential benefits. A tequila, whisky and microbrew-driven conversation that led to some interesting revelations.",
"keywords": ["drink","michael","microbrewery","recreation","schechter","vardy","check","decibels","episode","michael","mikes","schechter","vardy","benefits","centered","conversation","driven","interesting","joining","microbrew","network","potential","procrastination","revelations","tequila","whisky"]
},{
"title": "Memories: photo, video and text journaling",
"url": "/2012/12/07/memories-photo-video-and-text-journaling/",
"tags": ["macappstore","macos"],
"date": "Dec 7th, 2012",
"ts": "1354892580",
"summary": "I tested out a journaling app called Memories today, and thought it was worth a mention. If you re looking for a great-looking journaling app that also offers encryption for your personal thoughts, Memories is probably worth a taking a peek at. It won t replace Day One for me, personally, but it provides many of the same features for desktop journaling. It lacks Markdown support and iOS companion apps right now, but it does have good rich text support for those who want a more colorful journal. It can include the weather conditions, current location and mood in each entry, as well as photos and videos (and has recording abilities built in). There s a CLI (command line interface) planned for the future, so it may be Slogger-compatible (and otherwise scriptable) at some point. Memories is $8.99 US in the Mac App Store .",
"keywords": ["apple","command","interface","iphone","itunes","macintosh","markdown","store","markdown","memories","slogger","store","abilities","built","called","colorful","command","companion","compatible","conditions","desktop","encryption","entry","features","great","interface","journal","journaling","lacks","location","looking","mention","offers","personal","personally","photos","planned","point","provides","recording","replace","right","scriptable","support","taking","tested","thought","thoughts","today","videos","weather","worth"]
},{
"title": "Systematic #21, Howard Buddin",
"url": "/2012/12/04/systematic-21-howard-buddin/",
"tags": ["podcast","systematic"],
"date": "Dec 4th, 2012",
"ts": "1354679760",
"summary": "I finally got to hear from a guest who knows their stuff when it comes to the human mind. Howard Buddin joined me on Systematic this week to talk about memory, the brain and, of course, some top picks of the week (which happen to be geared toward the research community). It was a great conversation. I had to edit a few minutes out just for time, but Howard has promised to come back and continue the conversation so we can cover all of the things I wish we had time to cover in this episode. Check it out at 5by5.",
"keywords": ["apple","howard","merlin","podcast","states","studios","twitter","united","buddin","check","howard","systematic","brain","comes","community","continue","conversation","cover","episode","finally","geared","great","guest","happen","human","joined","knows","memory","minutes","picks","promised","research","stuff","toward"]
},{
"title": "On releasing and marketing your new app",
"url": "/2012/12/02/on-releasing-and-marketing-your-new-app/",
"tags": ["marketing"],
"date": "Dec 2nd, 2012",
"ts": "1354466640",
"summary": "I ve realized that my experience as a blogger for larger organizations and someone who has successfully marketed their own app I have some knowledge that not every developer is privvy to. I think it s a good time to share what I ve learned things I take for granted but that could be very helpful to others just getting started. The following is geared toward independent developers looking to release a Mac or iOS app on a budget. Grass roots marketing for indie devs. The most obvious step is the most important. If your app isn t based on a great idea or isn t fully executed with all the necessary polish, none of this will do you any good. Get opinions from people willing to offer them, and if you can t get good feedback, find some more testers. This is of utmost importance. Once you have a polished app that is ready to roll, the next step is getting the press that will put you on everybody s radar. Press will make or break your app. Even if you re releasing on the App Stores with their built-in marketing mechanisms you ll fall to the bottom of the pile nearly immediately. Much like Google, if you re not near the top, no one is going to see you. There s very little incentive to dig. Thus, the most important step (in my opinion) is getting the app in front of the people who have the voice to tell others about it. Pick the most relevant blogs for personalized contact. For a Mac or iPhone app, those are going to include Lifehacker, TUAW, MacStories and similar. Search those blogs for someone who s covered similar apps in the past and address your contact to them. Blogs often provide a means of contact for individual bloggers. Use that. Don t try to be sneaky and track down personal emails if they re not openly provided. If you can t find an individual s direct contact, use the tip line for the blog. If you do that, you can address the note to a single blogger or make it more general and hope that they see it. That may take some thought and research as to the most effective method for any given group of bloggers. Mention previous articles if it makes sense: As someone who has covered [ ] in the past, you may be interested in a new app I ve created . Press releases can be effective, but not nearly as much as getting a personalized email in front of the right person. Keep in mind that you re one of a multitude they re going to hear from that day. A proper subject line and opening sentence is going to be vital to have your communique read. That being",
"keywords": ["burroughs","facebook","google","iphone","macstories","network","social","twitter","william","affiliate","assuming","beyond","bloggers","blogs","burroughs","check","clearly","contacting","covering","disposable","erica","facebook","google","grass","heroes","hiphoprisy","lifehacker","macstories","mention","nonetheless","prmac","pitch","press","promotions","roundup","sadun","sande","search","seriously","steve","stores","tuesdays","tweets","twitter","william","words","account","accounts","across","address","advice","affiliate","ahead","announcements","another","articles","average","backfire","based","bases","becomes","benefits","beyond","blogger","bloggers","blogosphere","blogs","boilerplate","boosts","bottom","break","broader","budget","built","called","certainly","chance","check","cheesy","clear","closing","codes","communique","company","concentrates","confident","consider","contact","contacting","contacts","contests","conversations","coolest","copywriting","count","couple","cover","coverage","covered","created","credibility","customers","deals","decide","decided","dedicated","deeper","depends","desperate","developer","developers","direct","discount","doesn","doing","domain","easier","effective","email","emails","embargoes","embed","enough","everybody","executed","experience","extra","feedback","fickle","flailed","follower","found","front","fully","geared","general","generally","getting","giveaways","gives","going","granted","great","grouchy","group","guarantee","guaranteed","guidelines","handle","happen","happening","haven","helpful","homepage","honestly","hotmail","iphone","importance","important","impress","incentive","independent","indie","individual","insult","interested","jumpstart","knowledge","larger","learned","letters","liberally","likeliness","likely","links","little","looking","lowered","major","makes","marketed","marketing","mechanisms","media","mention","mentioned","mentions","method","multitude","naturally","nearly","necessary","obvious","occasional","offer","often","opening","openly","opinions","organic","organically","organization","organizations","others","outlets","outrageous","pages","paragraphs","passed"]
},{
"title": "Markdownify extension for PopClip",
"url": "/2012/11/28/markdownify-extension-for-popclip/",
"tags": ["popclip"],
"date": "Nov 28th, 2012",
"ts": "1354131180",
"summary": "I m starting a collection of PopClip extensions. I m playing with a few right now, but the repository currently consists of a lame one plugin. However, it s a pretty handy one. It uses html2text by Aaron Swartz to convert selected HTML to Markdown. Installation instructions (very simple) and more description are available in the readme in the GitHub repo . As I add to it I ll post more updates.",
"keywords": ["aaron","formats","github","javascript","languages","markdown","markup","popclip","swartz","aaron","github","however","installation","markdown","popclip","swartz","available","collection","consists","convert","description","extensions","handy","instructions","playing","plugin","readme","repository","right","selected","simple","starting","updates"]
},{
"title": "Systematic #20 with David Wain",
"url": "/2012/11/27/systematic-20-with-david-wain/",
"tags": ["podcast","systematic"],
"date": "Nov 27th, 2012",
"ts": "1354036800",
"summary": "The latest Systematic is up, and I m very honored to have David Wain as a guest. His body of work as a writer, director and actor is immense, and he s been a part of some of my favorite sketch comedy groups from Stella to The State, movies and currently writes for and occasionally appears in Children s Hospital. We talk about productivity, memory and, of course, an appropriate selection of Top Picks for the week. Listen in!",
"keywords": ["comedy","david","ellie","kemper","sketch","stella","television","children","david","hospital","listen","picks","stella","systematic","actor","appears","comedy","director","favorite","groups","guest","honored","immense","latest","memory","movies","occasionally","productivity","selection","sketch","writer","writes"]
},{
"title": "Generational #11",
"url": "/2012/11/27/generational-11/",
"tags": ["generational","interview","podcast"],
"date": "Nov 27th, 2012",
"ts": "1354029000",
"summary": "I m quite late on linking this, but I had a great time talking mind mapping and brainstorming with Gabe Weatherhead over on Generational . It covers some areas I ve never talked about in-depth elsewhere, so if you re curious, head on over and check it out .",
"keywords": ["document","format","portable","generational","weatherhead","areas","brainstorming","check","covers","curious","depth","elsewhere","great","linking","mapping","talked","talking"]
},{
"title": "Web excursions: November 26, 2012",
"url": "/2012/11/26/web-excursions-november-26-2012/",
"tags": ["bookmarks","fountain","launchbar","scripting","sublimetext","webdesign"],
"date": "Nov 26th, 2012",
"ts": "1353967800",
"summary": "Links of interest from November 19, 2012 through November 26, 2012: Fountain for Sublime Text 2 Sublime Text 2 support for the Fountain screenwriting language. Coming along nicely. Fountain for Sublime Text - Dan Sturm Dan Sturm s mod of @poritsky s Fountain package for Sublime (above). Notesdeck for Dropbox, Evernote and Simplenote This looks pretty amazing, though I haven t tried it yet. iOS version available as well. Update: testing right now, I ll let you know. A script for quickly adding reminders to the Reminders app in Mountain Lion I was playing with my own LaunchBar script for Reminders.app when I found this one. It s pretty awesome. Improved version of JavaScript fix for the iOS viewport scaling bug Works like a champ. If you re doing responsive design, this is handy. The zoom bug was fixed in iOS 6, but you ll need to deal with iOS 5 (and below) users for a while.",
"keywords": ["dropbox","evernote","javascript","launchbar","reminders","simplenote","sublimetext","coming","dropbox","evernote","fountain","improved","javascript","launchbar","links","mountain","notesdeck","reminders","simplenote","sturm","sublime","works","above","adding","amazing","available","awesome","below","champ","design","doing","fixed","found","handy","haven","interest","language","looks","nicely","package","playing","poritsky","quickly","reminders","responsive","right","scaling","screenwriting","script","support","testing","through","tried","users","version","viewport","while"]
},{
"title": "Pixa giveaway winners",
"url": "/2012/11/26/pixa-giveaway-winners/",
"tags": ["giveaway","macos"],
"date": "Nov 26th, 2012",
"ts": "1353954900",
"summary": "The giveaway robot has picked two winners for the Pixa giveaway! Names are linked to the comments that were selected to avoid any confusion. Emails have already been sent, if your comment is listed below and you haven t heard from me (and you ve checked your spam folder), please let me know . Congrats to John and bkKim, enjoy your free copies of Pixa. Everyone else, you should check it out anyway !",
"keywords": ["abuse","address","comment","email","twitter","congrats","emails","everyone","names","anyway","avoid","below","bkkim","check","checked","comment","comments","confusion","copies","enjoy","folder","giveaway","haven","heard","linked","listed","picked","robot","selected","winners"]
},{
"title": "A warning: Simplenote, nvALT and deleted notes",
"url": "/2012/11/23/a-warning-simplenote-nvalt-and-deleted-notes/",
"tags": ["nvalt","simplenote"],
"date": "Nov 23rd, 2012",
"ts": "1353687180",
"summary": "Update: Simplenote has announced that there was an issue on their end this morning, and that it has been corrected. While there are still issues with nvALT s implementation lagging behind Simplenote s API (which have been getting more frequent lately), the rampant deletion of notes in nvALT should be over now.",
"keywords": ["automattic","dipterologiae","iphone","italicae","mullenweg","prodromus","simperium","simplenote","wordpress","simplenote","thanks","while","action","announced","behind","corrected","deletion","frequent","getting","implementation","issues","lagging","morning","notes","nvalt","rampant"]
},{
"title": "Pixa giveaway, get it while it's hot",
"url": "/2012/11/21/pixa-giveaway-get-it-while-its-hot/",
"tags": ["giveaway","macos"],
"date": "Nov 21st, 2012",
"ts": "1353529140",
"summary": "Pixa is an awesome new Mac app for organizing images and graphics. I m personally using it to index and browse my (rather large) collection of icons and UI elements. It recently became available in the Mac App Store, and Shiny Frog has provided a couple of free promo codes for you. Details at the end of the post! Pixa gives you projects, folders and and icon view of folder contents. It has Quick Look support, sharing options, format conversions and more. It also has Live Folders, which will track folders of images on your drive and sync them automatically. Not unimportantly, it has a gorgeous interface. I mentioned Pixa on an episode of Systematic a little while ago, and it made my Picks of the week list. Have a shot at one of the promo codes by leaving a comment below. Two winners will be randomly selected on Monday, November 26th at 12pm CST. Open to everyone except Canadians. You know what you did 1 . I love you. It s just your legal restrictions on raffles and giveaways that get me.",
"keywords": ["apple","folder","macintosh","quick","store","studios","canadians","check","details","folders","monday","picks","quick","shiny","store","systematic","automatically","available","awesome","became","below","browse","codes","collection","comment","contents","conversions","couple","drive","elements","episode","everyone","except","folder","folders","format","giveaways","gives","gorgeous","graphics","icons","images","index","interface","leaving","legal","little","mentioned","options","organizing","personally","projects","promo","raffles","randomly","rather","recently","restrictions","selected","sharing","support","track","unimportantly","using","website","while","winners"]
},{
"title": "Systematic #19 with Josh Helfferich",
"url": "/2012/11/20/systematic-19-with-josh-helfferich/",
"tags": ["podcast","systematic"],
"date": "Nov 20th, 2012",
"ts": "1353470400",
"summary": "Josh Helfferich , previously of TUAW and now directing music videos in LA, joined me on Systematic this week to talk about technological advancements in long distance relationships, how much we both dislike Windows and possibly find a wrinkle in time. This was a really fun one to record. I hadn t talked with Josh before (despite having been writers on the same relatively small staff for a year), but I wasn t surprised to find out we had a lot in common. Nerdwise at least. The show is up on 5by5 , be sure to check it out. I know from the number of anxious emails I got today 1 that everyone was worried that Systematic wouldn t be published on its scheduled day of the week, but fear not. The number is zero, which is ok. The day was stressful enough anyway. I skimmed through over 500 angry emails today regarding the atrocity that we took live last night . How dare we? I need sleep.",
"keywords": ["apple","microsoft","music","studios","television","video","windows","helfferich","nerdwise","systematic","windows","advancements","angry","anxious","anyway","atrocity","before","check","common","directing","dislike","distance","emails","enough","everyone","having","joined","music","night","possibly","previously","published","record","relationships","relatively","scheduled","skimmed","sleep","small","staff","stressful","surprised","talked","technological","through","today","videos","worried","wouldn","wrinkle","writers"]
},{
"title": "Slogger tags and other developing stories",
"url": "/2012/11/19/slogger-tags-and-other-developing-stories/",
"tags": ["markdownediting","nvalt","slogger","tagging"],
"date": "Nov 19th, 2012",
"ts": "1353362400",
"summary": "First, Slogger now has the native tagging I mentioned previously. Here s how I chose to implement it (though this is up for discussion): At the point where it s just about to generate the entry, it scans the entire post for #tags. It collects any it finds into an array, leaving the original tags in the post. It ignores #77 type tags, commonly seen in the Github logger as issue references. Tags are then added as native tags. They ll include any tags you put in Tweets or posts or post descriptions as well. The nice thing about this method is it doesn t require any of the plugins to change, works with any new plugins automatically, and allows you to add tags the same way that Day One does when you enter a post on iOS. The downside is that with some plugins (Twitter especially), if you use a lot of hashtags in posts you ll end up with a lot of tags in Day One that might not really mean much as far as sorting or organization. If I add conversation support to TwitterLogger, that will get even worse. I can easily limit the tag search to just the last line (where Slogger plugins put default tags), but for now I like being able to add arbitrary tags anywhere in the post. We ll see if it gets out of hand. I also added an App.net linkifier, so that usernames and urls get appropriate Markdown for linking. I added some timezone fixes to a few plugins, as well. App.net and some others should now set the timestamp on posts to your local time, not GMT. If you re using git, you can update with a . If you downloaded and installed the zip file: Download the latest version Copy and to a new folder, just to make sure they don t get deleted. Overwrite your current files. You don t want to replace the whole folder, just the files inside it. If you ve moved plugins around, be sure to check and make sure the right ones are enabled/disabled before running it again. Your configuration will stay intact. I also updated nvWikiLink to be more forgiving when finding existing files. Some longer titles especially ones with punctuation were not being found and it was creating a new note every time. This should fix that, at the risk of linking similarly named notes accidentally. Let me know how it goes. I also (finally) made some updates to nvALT. Minor, but we re about one bugfix away from releasing 2.2. I may put another beta version out before then. If you re running the beta , you ll get a notification of that automatically. If you want it right",
"keywords": ["cycle","github","markdown","release","software","taskpaper","twitter","xcode","download","first","github","markdown","markdownediting","minor","overwrite","slogger","taskpaper","tweets","twitter","twitterlogger","xcode","accidentally","added","again","allows","almost","another","anywhere","arbitrary","array","automatically","before","bugfix","change","changes","check","chose","collects","commit","commonly","configuration","contributed","conversation","crash","creating","default","deleted","descriptions","disabled","discussion","doesn","downloaded","downside","easily","enabled","enter","entire","entirely","entry","especially","files","finally","finding","finds","fixes","folder","forgiving","found","getting","hashtags","haven","history","ignores","import","including","inside","installed","intact","latest","leaving","limit","linkifier","linking","local","logger","longer","mentioned","method","moved","named","native","notes","notification","nvalt","nvwikilink","organization","original","others","plugins","point","posted","posts","previewing","previously","punctuation","recently","references","releasing","replace","right","running","scans","search","sorting","support","tagging","timestamp","timezone","titles","updated","updates","usernames","using","version","where","whole","works","worse"]
},{
"title": "Web excursions: November 19, 2012",
"url": "/2012/11/19/web-excursions-november-19-2012/",
"tags": ["bookmarks","github","launchd"],
"date": "Nov 19th, 2012",
"ts": "1353348000",
"summary": "Schedule jobs using launchd A great overview of , the system I use for all of my task scheduling (and what drives Slogger s automation). It s built into OS X, and if you hack around at all you should definitely familiarize yourself with this tool Dark Sky Alfred Extension I m definitely converting this for LaunchBar. I think I ll add a weather logger to Slogger, too, though probably with a more complete weather report and graphics why am I brainstorming in a blog post? bl.ocks.org An awesome way to view HTML/JS gists as rendered web pages. A few git tips you didn t know about This post is a couple of years old, but all good tips. I m constantly amazed at how many things git can do that I don t know about. Write your blog posts like good rock songs Chris nails the core requirements for a technical blog post. With Rock and Roll, no less.",
"keywords": ["dropbox","growl","launchbar","launchd","shareware","alfred","chris","extension","launchbar","links","schedule","slogger","write","amazed","automation","awesome","brainstorming","built","constantly","converting","couple","definitely","drives","familiarize","gists","graphics","great","interest","launchd","logger","nails","overview","pages","posts","rendered","report","scheduling","songs","system","technical","think","using","weather","years"]
},{
"title": "Jekyll plugin for quick \"donate\" buttons",
"url": "/2012/11/19/jekyll-plugin-for-quick-donate-buttons/",
"tags": ["jekyll","plugin"],
"date": "Nov 19th, 2012",
"ts": "1353333600",
"summary": "I m still working on the Jekyll version of this site. It s coming along 1 . Along the way I wanted a better-looking donation button, so I wrote a quick plugin to handle a Liquid tag: Nifty CSS animation and everything. The text that shows up in the popup can be customized in your config, and you can pass custom strings when using the tag in a post. It currently creates markup for a PayPal link and required hidden fields, but it could be easily modified to work with another system. I m not going to write a lot about this because it pertains only to Jekyll/Octopress users, and will only be of interest to a few of them. All of the details are in the repo . Of course, the HTML and CSS 2 are in the repo, too, if you just want to see that. 50%. I keep hating the design and then CSS distracts me from finishing all the plugins I want to write. Inspiration and starting point for the popover came from Codrops .",
"keywords": ["formats","github","jekyll","jquery","paypal","tooltip","codrops","github","inspiration","jekyll","liquid","nifty","octopress","paypal","animation","another","because","button","coming","config","creates","custom","customized","design","details","distracts","donation","easily","everything","fields","finishing","going","handle","hating","hidden","interest","looking","markup","modified","pertains","plugin","plugins","point","popover","popup","quick","required","shebang","shows","starting","strings","system","users","using","version","wanted","whole","working","write","wrote"]
},{
"title": "How to summon a nerd",
"url": "/2012/11/18/how-to-summon-a-nerd/",
"tags": ["iphone","video"],
"date": "Nov 18th, 2012",
"ts": "1353257520",
"summary": "I did this last night, mostly as a joke. It s a riff on CoughButton that just triggers some AppleScript to play a bell and make my PowerMate flash. It s accessible from any web-enabled device on my network, so my wife can pick up her iPhone and summon me from anywhere in the house. It s installable on the home screen, so I m just two taps away at any given moment. I m not going to release the code for this as the setup gets technical and will be different for everybody, so it would be impossible to provide any support for (and likely impossible for anyone else to get working). It was fun, though, and I thought I d share a video of it in action.",
"keywords": ["apple","applescript","handhelds","iphone","smartphones","store","applescript","coughbutton","powermate","accessible","action","anyone","anywhere","device","different","enabled","everybody","flash","going","house","iphone","impossible","installable","likely","mostly","network","night","release","screen","setup","share","summon","support","technical","thought","triggers","video","working"]
},{
"title": "Day One tags, Slogger lags",
"url": "/2012/11/17/day-one-tags-slogger-lags/",
"tags": ["dayone","slogger","tagging"],
"date": "Nov 17th, 2012",
"ts": "1353192060",
"summary": "Day One recently got real tagging in the iOS apps, and it will be on the Mac version soon, as well. Slogger has been dutifully saving tags for you all this time, but I got it wrong. I used @tags and not the #tags that the developers eventually settled on. I should have known Twitter would win in the end 1 . I ve updated the repository so that all of the plugins now create #tags by default. However, this won t help current users. Because tags are customizable, once they re stored in the configuration they are no longer affected by plugin changes. If you want to switch your tagging over to hashtags, do a search and replace on and replace all of the @ with # on your tag settings. Take note, though, and see if there are any @ symbols in your feed urls or your Flickr ID before you do a wild replace all. Also note that Day One iOS is not automatically importing hashtags added to notes on other platforms. You can do an import from the iOS app under Settings and pull in existing tags, but new Slogger entries won t show up as tagged. At least not yet. This update is to start preparing for the future. The new tags in Day One are stored, like everything else, as elements in the XML file for the entry. The schema is simple and I ll eventually be able to have Slogger add the real tags itself, and not even worry about sticking anything inline. That will happen soon, but I m waiting to see a few things on the Mac side before I make any drastic changes. I m also planning to whip up a utility that will let you enter your tags from Slogger and will do a mass search through your Journal entries and add matching tag elements for posts containing those @tags in the body. I ll plan to release that in tandem with the main tagging update, so you ll be covered forward and backward. Paul and Ben made the right choice. Hashtags are the standard now, I m just old fashioned and view these tags more as contexts, which I ve always used @ for. But once you start sticking Tweets into your journal and filling it up with usernames, that doesn t make sense for tagging anymore. #tags on Twitter are tags, and that s become a widely accepted standard. Oh, well.",
"keywords": ["facebook","flickr","twitter","because","flickr","hashtags","however","journal","settings","slogger","slogging","tweets","twitter","accepted","added","affected","anymore","automatically","backward","before","changes","choice","configuration","containing","contexts","covered","create","customizable","default","developers","doesn","drastic","dutifully","elements","enter","entries","entry","eventually","everything","fashioned","filling","happen","hashtags","import","importing","inline","itself","journal","longer","matching","notes","planning","platforms","plugin","plugins","posts","preparing","recently","release","replace","repository","right","saving","schema","search","sense","settings","settled","simple","standard","sticking","stored","switch","symbols","tagged","tagging","tandem","through","under","updated","usernames","users","utility","version","waiting","widely","worry","wrong"]
},{
"title": "Next Actions CLI updated, time to meet the parents",
"url": "/2012/11/17/next-actions-cli-updated-time-to-meet-the-parents/",
"tags": ["productivity","taskpaper","terminal"],
"date": "Nov 17th, 2012",
"ts": "1353178980",
"summary": "I just updated my trusty 1 script a little bit. Nothing major: some more colorful output and graceful error handling and cache updating when folders it s recorded go missing. In the process, though, I realized how much I ve come to love this little guy. I won t rehash it too much, you can read more about what it does on the GitHub Page . Given that it s been a whole year, though, and we re still dating seriously, I thought I d reintroduce it. In short, it lets me add one-off tasks to the inbox folder of a TaskPaper file in any project folder from the command line. It tags new tasks as @na until you review them, and if run without arguments it will show all the @na tasks in the folder. I don t need TaskPaper to be open, I don t have to hit any hotkeys, and I can just get a thought or bug issue off my mind without ever stopping typing. It can search for your tasks recursively in the current folder, and it keeps track of what it finds. If I ever used it in ~/Dropbox/Code/marked, it will give me some semi-fuzzy matching from then on out. From anywhere on the system I can type and it will show me the current next actions for that project. My favorite part today, though, is that I can run it as an extension to my prompt command, meaning that every time I into a folder with a Taskpaper file in it, it will show me my tasks tagged right before my prompt. Just friendly reminders when I go back to a project after being elsewhere. Here s what I get when switching my local nvALT repo: I wrote this a long time ago, but it s one of the few scripts that I still use daily after a year. If you work on the command line at all, you might be interested in checking it out . stands for Next Action. I don t know if that s familiar to everyone or not, but I ve always taken it for granted. So, no, it s not that NA .",
"keywords": ["command","folder","github","interface","taskpaper","action","dropbox","github","nothing","taskpaper","taskpaper","actions","anywhere","arguments","before","cache","checking","colorful","command","daily","dating","elsewhere","error","everyone","extension","familiar","favorite","finds","folder","folders","friendly","fuzzy","graceful","granted","handling","hotkeys","inbox","interested","keeps","little","local","major","marked","matching","meaning","missing","nvalt","output","process","project","prompt","realized","recorded","recursively","rehash","reintroduce","reminders","right","script","scripts","search","seriously","short","stands","stopping","switching","system","tagged","taken","tasks","thought","today","track","trusty","typing","updated","updating","whole","wrote"]
},{
"title": "Emmet for Cheaters",
"url": "/2012/11/16/emmet-for-cheaters/",
"tags": ["cheaters","javascript","webdesign"],
"date": "Nov 16th, 2012",
"ts": "1353121140",
"summary": "Ok, first, if you ever work with HTML or CSS and you haven t seen Emmet yet, take a minute and check it out . I ll wait. Ok, so you know that it s the next incarnation of Zen Coding, with even more awesome packed in. The traversal options for shortcut code are about as good as I could imagine them getting. Plus, the JavaScript version they have running on the website is insane. The actual cheat sheet on the docs site is generated dynamically from arrays and it can create demo code as it goes crazy. Also note that all of the demo videos are actually interactive editors using CodeMirror and a ton of awesome JavaScript. Anyway, that awesome cheat sheet made me jealous, so I created one for Cheaters from it. If you haven t seen Cheaters, it s my cheat sheet system for all of the code craziness I have to keep track of. There s a GitHub page for it with instructions for creating the popup cheat sheet system, and I put up a demo that includes Emmet as a preview. As always, if you create any cheat sheets you think would be handy for others, please contribute to the collection. Thanks to everyone who s pitched in so far!",
"keywords": ["cascading","cheatsheet","coding","github","javascript","programming","sheets","style","anyway","cheaters","codemirror","coding","emmet","github","javascript","thanks","arrays","awesome","cheat","check","collection","contribute","craziness","crazy","create","created","creating","dynamically","editors","everyone","first","generated","getting","handy","haven","imagine","incarnation","includes","insane","instructions","interactive","jealous","minute","options","others","packed","pitched","popup","preview","running","sheet","sheets","shortcut","system","think","track","traversal","using","version","videos","website"]
},{
"title": "ProductiveMacs rules the productivity roost, again",
"url": "/2012/11/16/productivemacs-rules-the-productivity-roost-again/",
"tags": ["deals","macos"],
"date": "Nov 16th, 2012",
"ts": "1353092760",
"summary": "It s not the first time there s been a great offering from ProductiveMacs , but the current bundle is awesome. It ll set you back a mere $30, and includes multiple apps that cost that much on their own (and are worth more). TextExpander (if you don t have it, the bundle is worth it right there) Path Finder (funny, I just started using PF again this week) TaskPaper ( Love it ) Concealer Trickster (and the forthcoming upgrade is going to be sweet, especially for nerds) DesktopShelves Optimal Layout DiskAid iDocument Go. Get it. Support some devs and get some awesome apps .",
"keywords": ["camerabag","dropzone","finder","howbert","iphone","textexpander","concealer","desktopshelves","diskaid","finder","layout","optimal","productivemacs","support","taskpaper","textexpander","trickster","again","awesome","bundle","especially","first","forthcoming","funny","going","great","idocument","includes","multiple","nerds","offering","right","started","upgrade","using","worth"]
},{
"title": "Web excursions: November 16, 2012",
"url": "/2012/11/16/web-excursions-november-16-2012/",
"tags": ["bookmarks","evernote","markdown"],
"date": "Nov 16th, 2012",
"ts": "1353076680",
"summary": "Links of interest from November 8, 2012 through November 16, 2012: Evernote 5 for Mac is Here I ve shied away from Evernote for a while, but this update is beautiful, easy to use and most importantly it s been blazing fast in my initial forages. Texts Rich Editor for Plain Text Interesting. Haven t driven it very hard yet, but it s a pretty slick Rich Editor for Plain Text . Similar to the formatting ideas in FoldingText, but lighter weight. Edit as rich text, store as Markdown. I ll do a better review when I have more time to play (I mean write). skuroda/FindKeyConflicts If you, like me, have a habit of installing Sublime Text 2 packages and forgetting about them, you ve probably run into cases where keybindings were being clobbered and you couldn t figure out where the conflict was. Here you go. Google Analytics Logger for Slogger A Google Analytics plugin for Slogger by Hilton Lipschitz. Takes a bit of setup, but it s worth it. I hope to eventually have this fully merged in as an optional plugin in the default distribution. Pinpockit Pocket dressed up as Pinterest using the new Pocket API. Nice.",
"keywords": ["analytics","engines","evernote","google","interface","markdown","programming","search","searching","analytics","editor","evernote","findkeyconflicts","foldingtext","google","haven","hilton","interesting","links","lipschitz","logger","markdown","pinpockit","pinterest","pocket","similar","slogger","sublime","takes","texts","beautiful","blazing","clobbered","conflict","couldn","default","distribution","dressed","driven","eventually","figure","forages","forgetting","formatting","fully","habit","ideas","importantly","initial","installing","interest","keybindings","lighter","merged","optional","packages","plugin","setup","shied","skuroda","slick","store","through","using","weight","where","while","worth","write"]
},{
"title": "Systematic #18 with Chris Blanchard",
"url": "/2012/11/13/systematic-18-with-chris-blanchard/",
"tags": ["podcast","systematic"],
"date": "Nov 13th, 2012",
"ts": "1352859000",
"summary": "I m a little late posting this, but hey, it s been a very busy day. I decided to cast the Systematic net a little wider this week, stepping out of straight tech and into organic farming. It s about as far from the typical tech job as you can imagine: all mud and sweat, and only the occasional smartphone. My guest Chris Blanchard of Flying Rutabaga Works brings GTD and tech to other farmers. It s awesome. It was a great conversation. I really enjoyed the dive into hearing the same old concepts applied in a way I hadn t previously considered. Have a listen!",
"keywords": ["agriculture","associations","bhutan","business","farming","india","organic","sustainable","blanchard","chris","flying","rutabaga","systematic","works","applied","awesome","brings","concepts","considered","conversation","decided","enjoyed","farmers","farming","great","guest","hearing","imagine","listen","little","occasional","organic","posting","previously","smartphone","stepping","straight","sweat","typical","wider"]
},{
"title": "Ask the nerds: NerdQuery",
"url": "/2012/11/11/ask-the-nerds-nerdquery/",
"tags": ["search"],
"date": "Nov 11th, 2012",
"ts": "1352663760",
"summary": "I m honored to be included in a selective search engine called NerdQuery , put together by Gabe Weatherhead ( MacDrifter ) and designed by Erik Hess ( @themindfulbit ) of high90 . With a custom-built index honed for accurate searches, NerdQuery scans across a few of the nerdiest sites to find the post you re looking for: BrettTerpstra.com Clark s Tech Blog Dr. Bunsen Dr. Drang Macdrifter Veritrope Better Mess Simplicity is Bliss Next time you think someone might have already solved the problem you need an answer to, check out NerdQuery first. It s especially handy for those posts you know you saw but didn t need at the time, only to lose track of when you get around to putting it to use. You can try it out right now at Nerdquery.com , and see Gabe s post for more information and background.",
"keywords": ["communities","engine","google","networking","online","search","social","twitter","weatherhead","bliss","brettterpstra","bunsen","clark","drang","macdrifter","macdrifter","nerdquery","nerdquery","simplicity","veritrope","weatherhead","accurate","across","answer","background","built","called","check","custom","designed","engine","especially","first","handy","honed","honored","included","index","information","looking","nerdiest","posts","problem","putting","right","scans","search","searches","selective","sites","solved","themindfulbit","think","together","track"]
},{
"title": "App Review: BTT Remote",
"url": "/2012/11/11/app-review-btt-remote/",
"tags": ["appreview","iphone","utility"],
"date": "Nov 11th, 2012",
"ts": "1352639220",
"summary": "One of my all-time favorite utilities on the Mac is BetterTouchTool , an app that expands the capabilities of your trackpad, Magic Mouse and/or keyboard with a wide variety of configurable gestures and actions. Andreas Hegenberg has just released a companion iPhone app called BTT Remote ($1.99) that makes your iPhone part of the fun, too. Any of the actions you can configure on your multi-touch device can be triggered via menu items you add to BTT Remote using the same preferences panel the BetterTouchTool uses. Need one to launch iTunes while you re in your living room trying to get to movies from your Apple TV? 5 seconds and you have a button on your phone to do it. Much like EventScripts , but with more options and features. With a built-in file browser and launcher, you can also open arbitrary apps and scripts that you haven t set up actions for as well. When you re at your computer, BTT Remote is still handy. You can use your iPhone as a trackpad, and you can access the menubar of the foreground application and trigger any item. BetterTouchTool also just added the ability to trigger arbitrary menu bar items as well, so there s very little left that you can t do with it. BTT Remote requires BetterTouchTool (free) and is available on the iTunes App Store for US $1.99. Check out the BTT Remote homepage for more information.",
"keywords": ["apple","appstore","eventscripts","iphone","itunes","macintosh","magic","mouse","andreas","apple","bettertouchtool","check","eventscripts","hegenberg","magic","mouse","remote","store","ability","access","actions","added","arbitrary","available","browser","built","button","called","capabilities","companion","computer","configurable","configure","device","expands","favorite","features","foreground","gestures","handy","haven","homepage","iphone","itunes","information","items","keyboard","launch","launcher","little","living","makes","menubar","movies","multi","options","panel","phone","preferences","released","requires","scripts","seconds","touch","trackpad","trigger","triggered","trying","using","utilities","variety","while"]
},{
"title": "Quick Review: Pro HDR",
"url": "/2012/11/10/quick-review-pro-hdr/",
"tags": ["appreview","iphone","photography"],
"date": "Nov 10th, 2012",
"ts": "1352565300",
"summary": "This is going to be quick. I plan to make Pro HDR a pick of the week on Systematic, so I ll elaborate more then, but I thought it was worth a pointer for anyone who hasn t seen it yet. HDR is a set of methods for handling a broader range of exposures in a photographic image, usually achieved by taking multiple exposures and compositing the results. Apple s iOS camera app has this capability built in, taking two exposures of an image and auto-detecting appropriate exposure levels. Pro HDR ($1.99) takes this a step further and provides manual controls and instant compositing in the app, along with brightness/contrast and saturation/tint settings. It also provides a set of Instagram-ish filters, if you so desire. The results are exponentially better than the default app. While it has an auto mode, Pro HDR excels in the granular control provided by the manual mode. You get two squares that you can drag to the lightest and darkest points in the image, and when you move one it previews the exposure you ll get for that spot. Then you just have to hold the camera still for long enough to take the two shots. On my iPhone 5 that s about 3 seconds long enough to shake and cause blur in the composite, but if you ground or mount the phone that s easy to avoid. The results are excellent, and within seconds I have a photo ready to share. I tested by turning the lights off in my office and pointing it at the window during sunrise. I was able to create an image that showed all of the trees outdoors while still picking up the details of the mess strewn around my workspace: Later today I will be cleaning my office. Check out Pro HDR on the iTunes App Store (US $1.99).",
"keywords": ["apple","camera","dynamic","imaging","instagram","iphone","range","store","apple","check","instagram","later","store","systematic","while","achieved","anyone","avoid","brightness","broader","built","camera","capability","cause","cleaning","composite","compositing","contrast","control","controls","create","darkest","default","details","detecting","elaborate","enough","excellent","excels","exponentially","exposure","exposures","filters","going","granular","ground","handling","iphone","itunes","image","instant","levels","lightest","lights","manual","methods","mount","multiple","office","outdoors","phone","photo","photographic","picking","pointer","pointing","points","previews","provides","quick","range","ready","results","saturation","seconds","settings","shake","share","shots","showed","squares","strewn","sunrise","takes","taking","tested","thought","today","trees","turning","usually","while","window","within","workspace","worth"]
},{
"title": "Web excursions: November 8, 2012",
"url": "/2012/11/08/web-excursions-november-8-2012/",
"tags": ["backup","bookmarks","keyboard","sublimetext"],
"date": "Nov 8th, 2012",
"ts": "1352401920",
"summary": "Links of interest from November 1, 2012 through November 8, 2012: Arq Adds Support for Amazon Glacier Arq adds support for the cheaper-than-S3 Amazon Glacier service. Lower cost of entry, but you pay if you need to restore. I use Arq on my Macbook Air and have done a full restore I can vouch that it s a very effective system. Shortcat - Keyboard productivity app for Mac OS X Super awesome. Keyboard shortcuts for any menu item in any Mac app with proper Accessibility settings (in beta). Via @batoprosic . Introducing the New Pocket API for Developers and Publishers New API and drop-in SDKs for Pocket. Have fun. Themes for Web Developer s Toys A new resource being built to house themes for web development tools, including the Chrome web inspector and some great themes for Sublime Text 2 . MenuAndDockless 2.0 I m really, really intrigued by this, but still hesitant to run SIMBL plugins. Can anyone persuade me?",
"keywords": ["interface","javascript","macbook","programming","safari","sublime","accessibility","amazon","chrome","developer","developers","glacier","introducing","keyboard","links","lower","macbook","menuanddockless","pocket","publishers","simbl","shortcat","sublime","super","support","themes","anyone","awesome","batoprosic","built","cheaper","development","effective","entry","great","hesitant","house","including","inspector","interest","intrigued","persuade","plugins","productivity","proper","resource","restore","service","settings","shortcuts","support","system","themes","through","tools","vouch"]
},{
"title": "Systematic #17 with Kristian Carter",
"url": "/2012/11/06/systematic-17/",
"tags": ["podcast","systematic"],
"date": "Nov 6th, 2012",
"ts": "1352227860",
"summary": "Systematic episode 17 is live. I was joined by Kristian Carter , a freelance technologist and copywriter out of London, U.K. It was a fun chat about iPad minis, social networking and a tangent that ends up comparing P90X to a religion. Or maybe a cult. Entirely my fault.",
"keywords": ["advertising","copywriting","creative","director","london","marketing","public","relations","carter","entirely","kristian","london","systematic","thanks","comparing","copywriter","episode","fault","freelance","joined","listening","maybe","minis","networking","religion","social","tangent","technologist"]
},{
"title": "A couple of new TextExpander snippets",
"url": "/2012/11/04/a-couple-of-new-textexpander-snippets/",
"tags": ["snippet","textexpander","tools"],
"date": "Nov 4th, 2012",
"ts": "1352065440",
"summary": "I added a couple of simple TextExpander snippets to the Tools set . The first pair grabs the current (foreground) url from Chrome or Safari and inserts it, the second pair does the same but shortens with Bit.ly. Note that in order to use the bit.ly snippets, you need to create two additional snippets in a personal folder. Create a new group if you don t have one for personal snippets, then add snippets for Bit.ly username and Bit.ly API key. The abbreviations should be (username) and (API key). You can find your API key at http://bit.ly/a/yourapikey . The bit.ly snippets will pick up your username and API key based on the abbreviations, so make sure they re correct. Then just put your username and key into the appropriate snippets as plain text and let the Tools snippets do the rest! If you are subscribed to the Tools url, your set should update with the new snippets automatically ([[PREFIX]]curl, surl, curb and surb). If you downloaded or don t have the tools yet, grab them here . And, of course, if you don t have TextExpander yet, you really should .",
"keywords": ["abbreviation","dropbox","howbert","safari","snippets","textexpander","chrome","create","prefix","safari","textexpander","tools","abbreviations","added","automatically","based","couple","create","downloaded","first","folder","foreground","grabs","group","inserts","personal","second","shortens","simple","snippets","subscribed","tools","username"]
},{
"title": "Web excursions: October 31, 2012",
"url": "/2012/10/31/web-excursions-october-31-2012/",
"tags": ["bookmarks"],
"date": "Oct 31st, 2012",
"ts": "1351716480",
"summary": "Links of interest from October 22, 2012 through October 31, 2012: Zombie Detector A fun one for tonight. Tried it out, works quite well with a .99 in-app purchase of more zombie faces. PopClippins Markdown extensions for PopClip . Exactly what I intended to do when I mentioned it on Systematic :). EDGE Another live-update app suggested by Namit Chadha on Twitter. Live, as-you-type preview of Sass and LESS changes. Mac app, currently in private beta. Just got a test copy, so look forward to more information. Yeoman - Modern workflows for modern webapps Via Federico Weber on App.net, Yeoman is an awesome web development tool. Also, amazing ANSI install logo on the command line.",
"keywords": ["communities","interface","network","online","programming","social","twitter","yeoman","another","chadha","detector","federico","links","markdown","modern","namit","popclip","popclippins","systematic","tried","twitter","weber","yeoman","zombie","amazing","awesome","changes","command","development","extensions","faces","information","install","intended","interest","mentioned","modern","preview","private","suggested","through","tonight","webapps","workflows","works","zombie"]
},{
"title": "Systematic #16 with David Sparks",
"url": "/2012/10/30/systematic-16-with-david-sparks/",
"tags": ["podcast","systematic"],
"date": "Oct 30th, 2012",
"ts": "1351626420",
"summary": "David Sparks was kind enough to fill in on short notice for today s episode, and we had a great talk about time management, stress (or lack of), Markdown note-taking and more. The top three picks for the week were, as always, a blast and I think everyone will find something useful in there. Thanks for listening! The latest episode is up on 5by5 .",
"keywords": ["apple","business","markdown","podcast","programs","studios","television","david","markdown","sparks","thanks","blast","enough","episode","everyone","great","latest","listening","management","picks","short","stress","taking","think","today","useful"]
},{
"title": "Coughbutton 1.3 (with 100% more Skype)",
"url": "/2012/10/23/coughbutton-1-3-with-100-more-skype/",
"tags": ["podcast","scripting"],
"date": "Oct 23rd, 2012",
"ts": "1351046940",
"summary": "Coughbutton , my podcaster s iPhone-based cough button for your Mac, has been upgraded to 1.3 and undergone a major switcharoo. It now works with Skype (and, by default, only with Skype), which is all I really needed anyway. I found (during the podcast I recorded last night ) that with the separate channel that Skype uses, MuteMyMic was failing on some USB microphones within Skype. Directly muting Skype also has the benefit that I can send ON/OFF commands instead of just toggling and hoping everything stays in sync. More reliable, more practical and made with real sugar. Coughbutton 1.3 on Github.",
"keywords": ["github","handhelds","iphone","podcast","skype","smartphones","coughbutton","directly","github","mutemymic","skype","anyway","based","benefit","button","channel","commands","cough","default","everything","failing","found","hoping","iphone","major","microphones","muting","needed","night","podcast","podcaster","practical","recorded","reliable","separate","stays","sugar","switcharoo","toggling","undergone","upgraded","within","works"]
},{
"title": "Systematic #15, Dave Caolo",
"url": "/2012/10/23/systematic-15-dave-caolo/",
"tags": ["podcast","systematic"],
"date": "Oct 23rd, 2012",
"ts": "1351020240",
"summary": "I seriously enjoyed talking with Dave Caolo of TUAW , 52 Tiger and the Home Work podcast this week on Systematic . So much so, in fact, that I had to edit out almost 40 extra minutes. I only cut out parts where we discussed the drinking habits of various nationalities and other things that might just be better not put on the air. Hopefully I didn t break any continuity. The music discussions, as you might expect if you know Dave, were enlightening. The whole thing was fun. Check it out .",
"keywords": ["apple","homework","iphone","itunes","podcast","caolo","check","hopefully","systematic","tiger","almost","break","continuity","discussed","discussions","drinking","enjoyed","enlightening","expect","extra","habits","minutes","music","nationalities","parts","podcast","seriously","talking","various","where","whole"]
},{
"title": "WordPress to Jekyll: converting gallery shortcodes",
"url": "/2012/10/22/wordpress-to-jekyll-converting-gallery-shortcodes/",
"tags": ["jekyll","octopress","scripting"],
"date": "Oct 22nd, 2012",
"ts": "1350925320",
"summary": "As I move along with my Jekyll / Octopress transition, I m working to make the move as clean as possible. I m importing my WordPress database rather than starting fresh, and I ll be sharing tidbits of discoveries as I go. These posts will only be of interest to people making similar transitions, but they ll also be serving as notes for myself and Google search results for people up against the same conundrums. I have heavily extended the Octopress Rakefile, and built an almost entirely-new WordPress import module. The importer now converts my Download Monitor shortcodes to actual download links, respecting the format parameters and including descriptions, versions and titles. generates an .htaccess file with redirects from my old permalink structure for every post it imports. replaces shortcodes from my gist plugin with Octopress formatting replaces and tags, maintaining classes, alt and title attributes and alignment settings replaces YouTube shortcodes with YouTube embed code updates multiple formats of code blocks to standard fenced code with language specifier where it finds one replaces video and audio shortcodes with Octopress format and HTML5 embed, respectively. strips out some extra markup I used to compensate for elements of my WordPress theme gathers slug, redirect alias, tags, categories and a custom series plugin data as YAML front matter locates WordPress gallery shortcodes and replaces them with all of the included attachments as an unordered list of thumbnails linked to their full size images It s that last item that I ll share today. The input is any content that includes code (with optional extra parameters). The output is Markdown, with some extra Kramdown syntax. I think it might also work with Maruku , but you may have to adjust depending on your chosen Jekyll Markdown interpreter. Basically, if it detects codes in the post, it runs a query for all attachment posts with the current post as the parent. It passes those to a function that replaces the single code with a full Markdown list of the images, using WordPress automatically generated thumbnails as the visible image, and linking them to the full-size upload. If the 150x150 thumbnail doesn t exist, it uses sips to create it. If you want to alter the thumbnail process, see the sips commands in the function. This snippet is added as part of the WordPress module in . I ve rebuilt it completely in a new module. Because so much of the code is specific to",
"keywords": ["element","github","markdown","octopress","thumbnail","wordpress","youtube","because","download","google","jekyll","kramdown","markdown","maruku","monitor","octopress","rakefile","wordpress","youtube","added","adjust","against","alias","alignment","almost","alter","attachment","attachments","attributes","audio","automatically","blocks","built","categories","chosen","classes","clean","codes","commands","compensate","completely","content","conundrums","converts","create","custom","database","depending","descriptions","detects","discoveries","doesn","download","elements","embed","entire","entirely","exist","extended","extra","fenced","finds","format","formats","formatting","fresh","front","function","gallery","gathers","generated","generates","heavily","htaccess","image","images","import","importer","importing","imports","included","includes","including","incorporation","input","interest","interpreter","language","linked","linking","links","locates","maintaining","making","markup","module","multiple","myself","notes","optional","output","parameters","parent","passes","people","permalink","plugin","plugins","possible","posts","process","query","rather","rebuilt","redirect","redirects","replacer","replaces","respecting","respectively","results","search","series","serving","settings","share","sharing","shortcodes","similar","single","snippet","specific","specifier","standard","starting","strips","structure","syntax","theme","think","thumbnail","thumbnails","tidbits","title","titles","today","transition","transitions","unordered","updates","upload","useful","using","versions","video","visible","where","working"]
},{
"title": "Turn your iPhone into a cough button",
"url": "/2012/10/21/turn-your-iphone-into-a-cough-button/",
"tags": ["iphone","scripting"],
"date": "Oct 21st, 2012",
"ts": "1350840120",
"summary": "Update: These are the notes for the original version, which worked by sending the toggle command to MuteMyMic. Coughbutton has been revised to work with On/Off commands for Skype directly, no longer toggling system mute. This is more useful to me, and hopefully to others. The Github link is the same, and there s a post with revised information . I went down a deep rabbit hole on Saturday. It was painful because it should have been a 30-minute project, but I lost three hours of weekend. Maybe more, I lost track. I m posting the solution so that at least one other person can help me divide up the time it will take to make the investment pay off. I wanted a cough button for my USB microphone to avoid some editing when screencasting and podcasting. Michael Schechter has been down this road , too. Basically, I found that the mute button on my Yeti had the potential for bumping and creating click noises when used during recording. Michael s solution of hooking up MuteMyMic was great, but using my Magic Trackpad with BetterTouchTool had its own issues. Namely, a swipe gesture wasn t reliable enough. When you have to cough or sneeze, you don t have time to position your hand correctly and ensure that the gesture is triggered. Same with tap gestures, but with the added problem of resonating noise if your mic is in any way connected to your desk. I went looking for an external input solution. My rarely-used sustain pedal for my keyboard turned out to be broken, as did my old PowerMate. I have an extra Magic Trackpad around that I considered turning into a foot pedal, but that presented its own issues (mainly that I couldn t click it reliably on carpet). I eventually turned to the last piece of hardware I had handy: my iPhone. It didn t take long to adapt my old HomeControl project to call an AppleScript that ran . 30 minutes, case closed. The problem turned out to be that the AppleScript command only looked like it was working. The slider went to zero, but the mic never cut off. A bit of searching indicated that this is a widespread issue on all Macs. The only solution is to switch the input to the built-in line input and have the volume on that set to 0 in preferences. There s no way to do that via scripting, other than UI scripting with System Events. I refused to accept that. I toyed with various Keyboard Maestro possibilities, and eventually broke down and wrote an AudioToolkit command line tool that would handle it. Then I went to trigger that from",
"keywords": ["applescript","coughbutton","github","iphone","magic","skype","trackpad","applescript","audiotoolkit","bettertouchtool","bollocks","coughbutton","coughbutton","download","events","github","hammer","homecontrol","homescreen","installation","keyboard","leave","maestro","magic","maybe","michael","mobile","mutemymic","namely","point","powermate","press","safari","saturday","schechter","sites","skype","system","trackpad","unzip","usage","accept","acquiesced","adapt","added","address","apache","avoid","barefoot","because","between","black","bottom","broke","broken","built","bumping","button","carpet","changing","click","cloning","closed","color","command","commands","connected","considered","correctly","cough","couldn","creates","creating","decent","directly","directory","divide","double","download","editing","enabled","enough","eventually","execute","external","extra","feature","fiddling","folder","found","friendly","functions","gesture","gestures","great","handle","handy","hardware","heading","hooking","hopefully","hours","iphone","indicated","information","input","installed","investment","issues","jquery","keyboard","keypress","keystroke","launch","lightly","little","local","logged","longer","looked","looking","mainly","makes","master","mattered","meaning","microphone","minute","minutes","mobile","modified","morning","movie","muted","needs","noise","noises","notes","original","others","painful","pedal","people","perfectly","person","piece","plugin","podcasting","position","possibilities","posting","potential","preference","preferences","presented","press","problem","project","rabbit","rarely","ready","recommend","recording","refused","release","reliable","reliably","remote","repository","resonating","returning","running","screen","screencasting","script","scripting","searching","sending","server","session","setting","silent","simple","simulated","slider","small","sneeze","solution","sustain","swipe","switch","system","toggle","toggling","touching","toyed","track","trigger","triggered","turned","turning","tweaks","unmute","unmuted","unsuitable","updating","useful"]
},{
"title": "nvNotes gets a bit of Dropbox, on sale this weekend",
"url": "/2012/10/20/nvnotes-gets-dropbox-on-sale-this-weekend/",
"tags": ["iphone","notes"],
"date": "Oct 20th, 2012",
"ts": "1350738000",
"summary": "I mentioned nvNotes back in September. People seemed to dig the idea (Notational Velocity for iPhone), but there was one big thing missing: Dropbox sync. Well, it s moved one step closer: it now saves your notes to a Dropbox folder. It doesn t read them back or pick up new notes yet, but we re moving in the right direction. When nvNotes gets two-way sync (which I m told is currently being worked on), it will become a viable contender for my iOS note-taking preference. I may never actually settle on one, but I love watching the field expand. Good news, too: nvNotes is on sale this weekend for $0.99. What better time to pick up yet another notes app and take it for a spin ? Get it on sale and benefit when the full sync is introduced. Important tip: it s not immediately obvious, but to end editing a note and get back to the search/notes list, you just swipe to the right. It works really well, but if you don t know it s there you re stuck!",
"keywords": ["apple","dropbox","iphone","notational","notetaking","smartphone","velocity","dropbox","important","notational","people","velocity","another","benefit","closer","contender","direction","doesn","editing","expand","field","folder","iphone","introduced","mentioned","missing","moved","moving","notes","nvnotes","obvious","preference","right","saves","search","seemed","stuck","swipe","taking","viable","watching","weekend","worked","works"]
},{
"title": "Web excursions: October 18, 2012",
"url": "/2012/10/18/web-excursions-october-18-2012/",
"tags": ["bookmarks"],
"date": "Oct 18th, 2012",
"ts": "1350565200",
"summary": "rvl.io: Presentations Made Beautiful Oh, wow. wow, wow, wow. I spent years looking for a solid HTML presentation solution, and reveal.js is tops in my book. This is a Keynote-ish online editor to create reveal.js decks without HTML coding (or just paste HTML into the source panel). Amazing work. Send SMS to Messages and run commands with AppleScript - Mac OS X Hints There just are not enough hours in a day even if you don t sleep to explore all of the tinkering possibilities. This is intriguing, though I can do the same with IFTTT, but now we can cut out the middleman. Deployd An API builder for web and mobile apps. and I haven t tried this out yet, but it s free and if it does what it says on the box I ll be a happy camper. Could someone please add some hours to the day for me? Word Cloud Generator A word cloud generator written in JavaScript. Faster than Wordle, and very slick. Honorable mention: Drew s Script-O-Rama Ok, there are some shady popups and some nasty design going on here, but seriously, full scripts and transcripts for my favorite movies in plain text?",
"keywords": ["applescript","cloud","ifttt","javascript","wordle","amazing","applescript","beautiful","cloud","deployd","faster","generator","hints","honorable","ifttt","javascript","keynote","links","messages","presentations","script","wordle","builder","camper","cloud","coding","commands","create","decks","design","editor","enough","explore","favorite","generator","going","happy","haven","hours","interest","intriguing","looking","mention","middleman","mobile","movies","nasty","online","panel","paste","popups","possibilities","presentation","reveal","scripts","seriously","shady","sleep","slick","solid","solution","source","spent","tinkering","transcripts","tried","written","years"]
},{
"title": "Markdown link format conversion on iOS",
"url": "/2012/10/17/markdown-link-format-conversion-on-ios/",
"tags": ["markdown","scripting","texteditor"],
"date": "Oct 17th, 2012",
"ts": "1350498780",
"summary": "I was chatting with Gabe Weatherhead yesterday about turning SearchLink into a Python script that could then run on Pythonista . That would allow you to copy text from an iOS editor, open Pythonista and run the script, then go back to your editor and paste with your links converted. I m not sure it s going to be possible, yet, because I don t know how iOS and Pythonista handle network connections from scripts. I have a lot to learn. That being said, it made me start thinking about turning some of my other Markdown Services into scripts I could run on my iPad and iPhone. I searched for a decent Ruby equivalent to Pythonista, but thus far haven t found anything workable. So, Python it is. I started the experiment with an existing Python script by Seth Brown called formd . It s what I ve been using lately to convert inline Markdown links to references, and vice versa. I made some adjustments to the script to work with Pythonista, and made a version that takes clipboard input, runs the flip routine on it (flips link format depending existing links detected) and puts it back on the clipboard. Here s a gist of my revised script . If you have Pythonista , you can just paste it into a new script, copy some Markdown to your clipboard and run it. The content of your clipboard should have its link format switched between inline and reference. I ll be trudging through converting a few more of my more useful Ruby scripts to Python now. I m excited about the possibilities of bringing some added convenience to iOS Markdown writing, I just have to figure out what all the limitations are going to be. Time will tell.",
"keywords": ["iphone","locator","markdown","python","pythonista","resource","brown","markdown","python","pythonista","searchlink","services","weatherhead","added","adjustments","allow","because","between","bringing","called","chatting","clipboard","connections","content","convenience","convert","converted","converting","decent","depending","detected","editor","excited","experiment","figure","flips","format","formd","found","going","handle","haven","iphone","inline","input","learn","limitations","links","network","paste","possibilities","possible","references","routine","script","scripts","searched","started","switched","takes","thinking","through","trudging","turning","useful","using","versa","version","workable","writing","yesterday"]
},{
"title": "FoldingText lives!",
"url": "/2012/10/16/foldingtext-lives/",
"tags": ["markdown","texteditor"],
"date": "Oct 16th, 2012",
"ts": "1350412020",
"summary": "Nerds ahoy! This is just a quick post 1 to help spread the news that FoldingText is officially live on the Mac App Store . I ve mentioned FoldingText a few times around the web, including a pick of the week on Systematic . It s a very cool, super-nerdy, Markdown-friendly text editor, todo manager, productivity tool I m not sure there s a genre you can easily peg it into. It s extremely flexible and, well powerful 2 . See the homepage for a few details, be sure to check out the advanced help files in the help menu, and don t miss this video ! Because I m already well over my quota of two posts per week. More powerful than you can possibly imagine . Unless you have a really, really good imagination. I wouldn t put it past you.",
"keywords": ["editor","editors","keyboard","markdown","multimarkdown","shortcut","store","windows","because","foldingtext","markdown","nerds","store","systematic","advanced","check","details","easily","editor","files","flexible","friendly","genre","homepage","imagination","imagine","including","manager","mentioned","nerdy","officially","possibly","posts","powerful","productivity","quick","quota","spread","super","times","video","wouldn"]
},{
"title": "Systematic Episode 14 with Christina Warren",
"url": "/2012/10/16/systematic-episode-14-with-christina-warren/",
"tags": ["podcast","systematic"],
"date": "Oct 16th, 2012",
"ts": "1350407280",
"summary": "I had the pleasure of hosting Christina Warren for this week s episode of Systematic . We chatted about blogging, the future of film and television and, of course, Halloween costumes. Have a listen and, as always, feedback is welcome! Hit me on Twitter , App.net or drop me a line .",
"keywords": ["christina","communities","facebook","interface","network","online","programming","social","twitter","warren","christina","halloween","systematic","twitter","warren","blogging","chatted","costumes","episode","feedback","hosting","listen","television","welcome"]
},{
"title": "SearchLink: automated Markdown linking improved",
"url": "/2012/10/16/searchlink-automated-markdown-linking-improved/",
"tags": ["markdown","searchlink","service"],
"date": "Oct 16th, 2012",
"ts": "1350403800",
"summary": "SearchLink is a System Service for OS X that handles searching multiple sources and automatically generating Markdown links for text. It allows you to just write, marking things to link as you go. When you re done, you run it on the document and if your queries were good have your links generated automatically without ever opening a browser. This is similar to the Auto-link web search service in the Markdown Service Tools . The difference is that you can now mark links and specify how they should be searched for, as well as provide alternate query terms for linked text. We ll get into in a second. The portion is just that: the text that will be visible and linked in the output. , if it exists, will be used as the search query instead of the link text. You can also leave the text to link portion empty and the title of the search result found with the optional search text will be inserted, e.g. produces . Software !mas : search Mac App Store !masd : search Mac App Store, return seller URL !itu : search iTunes App Store !itud : search iTunes App Store, return seller URL !s : software search using Google General !g : first Google result Terminology !wiki : Wikipedia link (Wikipedia API) !def : Dictionary link/fallback to Wikipedia (DDG API) Music !isong : iTunes song link !iart : iTunes artist link !ialb : iTunes album link !lsong : Last.fm song link !lart : Last.fm artist link Site search any !address recognized as a url (no protocol required) will become a site-specific Google search for the link text (or specified search terms). e.g. The list may grow as I need it to, but it covers my bases for now. Note that it uses reference style linking by default. Duplicate results are culled and their marker repeated as needed, and it will begin numbering after the highest numbered reference located in the passed text. If you run it with only one link in the selection, it will automatically switch to inline linking. See the configuration below if you want to always force inline linking. Dependency: this whole system relies on JSON responses, and Ruby needs the json gem to run this. From the Terminal, run and in most cases you ll be good to go. If you re running a Ruby environment manager (rvm, rbenv) make sure you re installing the gem in the system Ruby. The service will always use . Download the zip file at the end of this post and double click it to extract the file. Place that file in",
"keywords": ["black","damned","google","itunes","motorcycle","rebel","store","vicious","wikipedia","automator","available","changelog","configuration","dependency","dictionary","donate","download","duplicate","examples","general","github","google","installation","markdown","music","published","searchlink","service","services","software","store","system","terminal","terminology","tools","under","updated","usage","wikipedia","above","address","affiliate","album","allows","alternate","appreciated","arguments","artist","assign","automatically","available","bases","because","begin","below","block","bottom","browser","click","clicking","configuration","containing","contextual","control","covers","culled","default","denoted","depending","difference","document","double","easiest","editor","empty","enter","environment","errors","exclamation","exists","extra","extract","fallback","familiar","first","followed","force","format","found","generated","generating","greatly","handles","highest","howto","itunes","information","inline","inserted","install","installing","isong","keyboard","leave","leaving","likely","linked","linking","links","located","lsong","manager","marker","marking","multiple","necessary","needed","needs","numbered","numbering","opening","optional","options","output","outputs","passed","pattern","portion","prefer","problems","produces","protocol","queries","query","quotes","rbenv","recognized","relies","rendered","repeated","required","responses","results","return","right","running","sample","search","searched","searches","searching","second","seems","selection","seller","service","shady","shortcut","similar","software","solve","source","sources","specific","specify","style","support","switch","system","terms","title","types","under","updates","using","variable","various","versions","visible","while","whole","write"]
},{
"title": "Cleartones Organic drawing winners",
"url": "/2012/10/13/cleartones-organic-drawing-winners/",
"tags": ["giveaway"],
"date": "Oct 13th, 2012",
"ts": "1350142200",
"summary": "Below are the winners of the Cleartones Organic giveaway . If your name is listed and the linked comment is yours, you should be hearing from both me and the developer with notification and a download link (respectively). If you don t, let me know . It appears the magical sweepstakes robot may have picked one winner whose comment was actually from a different type of robot. If that turns out to be the case, a new random winner will be picked from the remainder of the entries and he/she notified shortly. Thanks to everyone who entered, and if you weren t lucky enough to win this time, consider picking up a set of the ringtones and supporting the creator s efforts!",
"keywords": ["activism","audio","facebook","format","peace","ringtone","below","carolyn","cleartones","lukens","organic","thanks","apkawel","appears","comment","consider","creator","developer","different","download","efforts","enough","entered","entries","everyone","giveaway","hearing","justin","linked","listed","lucky","magical","notification","notified","picked","picking","random","respectively","ringtones","robot","shortly","supporting","sweepstakes","turns","weren","whose","winner","winners"]
},{
"title": "Mac OS X Screencasts makes Hazel easy for everyone",
"url": "/2012/10/12/mac-os-x-screencasts-makes-hazel-easy-for-everyone/",
"tags": ["hazel","productivity"],
"date": "Oct 12th, 2012",
"ts": "1350052320",
"summary": "Hazel is a great tool for automation on your Mac. It lets you trigger actions based on various filesystem activity, conditions and regularly scheduled events. It can clean up your downloads, upload your files to servers when they show up in a folder and tons more. Andreas Zeitler from Mac OS X Screencasts has released a 1-hour Hazel tutorial video and accompanying PDF. Two years in the making, it covers everything from basic installation to advanced scripting workflows. Given the vast amount of information included, 10 is a bargain. If you re interested in learning more about this awesome automation application, pick up a copy .",
"keywords": ["apple","applescript","hazel","macintosh","operating","system","tutorials","andreas","hazel","screencasts","zeitler","actions","activity","advanced","amount","automation","awesome","bargain","based","basic","clean","conditions","covers","downloads","events","everything","files","filesystem","folder","great","included","information","installation","interested","learning","making","regularly","released","scheduled","scripting","servers","trigger","tutorial","upload","various","video","workflows","years"]
},{
"title": "World (ringtone) peace: Cleartones Organic giveaway",
"url": "/2012/10/09/world-ringtone-peace-cleartones-organic-giveaway/",
"tags": ["giveaway"],
"date": "Oct 9th, 2012",
"ts": "1349816160",
"summary": "You hate obnoxious ringtones, right? I think we all do, yet they seem so pervasive out there in the real world. Sound and music designer Hugo Verweij offers an option for relief with Cleartones , and has recently released Cleartones Organic: Created by recording acoustic, percussive instruments like Tibetan bells, glockenspiel, woodblock, chimes, marimba, vibraphone, even an Indonesian gamelan. I ve listened to them all, and there s not one that would make me want to punch somebody in a grocery checkout line. To put that better, they re all very pleasant and there s a variety of options ranging from peaceful chimes to more insistent, percussive sounds. I think there s a place for this in the phone-wielding masses a counter-attack on the cacophony of everyday life. 50 tones for ten bucks, sold in sets of ringtones and notifications. You can buy both sets (100 tones) for $17 US. Next time you decide to go for a unique ringtone or notification sound, do the world a solid and pony up for some of these . You can listen to previews on the site. Hugo has also provided five packs (US $17/ea value) of Cleartones Organic to give away to my readers. To enter, just leave a comment on this post. The drawing is completely random, and duplicate entries will be discarded. Open to everyone except (with apologies) our Canadian friends it s legal, not any lack of love. Winners will be drawn at 12pm CST on Friday, October 12th. Leave a comment and be entered in the drawing for a complete set of Cleartones Organic ringtones.",
"keywords": ["cellular","communications","consumer","electronics","friday","itunes","phones","ringtone","shopping","wireless","canadian","cleartones","created","friday","indonesian","leave","organic","sound","tibetan","verweij","winners","acoustic","apologies","attack","bells","bucks","cacophony","checkout","chimes","comment","completely","decide","designer","discarded","drawing","duplicate","enter","entered","entries","everyday","everyone","except","friends","gamelan","glockenspiel","grocery","insistent","instruments","leave","legal","listen","listened","marimba","masses","music","notification","notifications","obnoxious","offers","options","packs","peaceful","percussive","pervasive","phone","pleasant","previews","punch","random","ranging","readers","recently","recording","released","relief","right","ringtone","ringtones","solid","somebody","sound","sounds","think","tones","unique","value","variety","vibraphone","wielding","woodblock","world"]
},{
"title": "Systematic #13 with Todd Mundt",
"url": "/2012/10/09/systematic-13-with-todd-mundt/",
"tags": ["podcast","systematic"],
"date": "Oct 9th, 2012",
"ts": "1349802840",
"summary": "Todd Mundt , editorial director of digital services at NPR, joined me for Systematic Episode 13. We had a lively discussion about memory, interests vs. skills, note-taking, and the usual excellent picks-of-the-week. A big thanks to Todd for taking the time, it was a great episode and I hope you enjoy listening to it as much as I did recording it!",
"keywords": ["editing","facebook","mundt","programs","episode","mundt","systematic","digital","director","discussion","editorial","enjoy","episode","excellent","great","interests","joined","listening","lively","memory","picks","recording","services","skills","taking","thanks"]
},{
"title": "Web excursions: October 6, 2012",
"url": "/2012/10/06/web-excursions-october-6-2012/",
"tags": ["applescript","bookmarks","webdesign"],
"date": "Oct 6th, 2012",
"ts": "1349535960",
"summary": "5 HTML5 APIs You Didn t Know Existed I didn t know, and now that I do, I m just a little bit happier. dotfiles/bin/pinboardhtml A (better) script for grabbing Pinboard links to a local bookmark file. AppleScript Library - Brati s Lover You know how you always tell yourself you ll get all of your reusable code into a library and save yourself hours of heartache? AppleScript away 12 Incredible CodePen.IO Demos These really are incredible. CSS/Canvas experiments found by David Walsh on CodePen.IO. nostalgiaz/bootstrap-toggle-buttons Very nice iOS-style toggle buttons for Twitter Bootstrap.",
"keywords": ["apple","applescript","bootstrap","pinboard","twitter","applescript","bootstrap","brati","canvas","codepen","david","demos","existed","incredible","library","links","lover","pinboard","twitter","walsh","bookmark","bootstrap","buttons","dotfiles","experiments","found","grabbing","happier","heartache","hours","incredible","interest","library","links","little","local","nostalgiaz","pinboard","reusable","script","style","toggle"]
},{
"title": "Systematic #12 with Ashley Esqueda, plus Read & Trust October issue",
"url": "/2012/10/02/systematic-12-with-ashley-esqueda-plus-read-trust-october-issue/",
"tags": ["podcast","readandtrust","systematic"],
"date": "Oct 2nd, 2012",
"ts": "1349208660",
"summary": "I m pleased to announce that Systematic Episode 12 is up and out. My guest this week was the illustrious Ashley Esqueda of Techfoolery, Geek Evolution and more red carpet reporting appearances than I can list. We talk about reporting tech, women in tech and some awesome picks-of-the-week. I m also excited to announce that the October issue of Read Trust magazine is available with work from myself, David Chartier, Brett Kelly and Matt Alexander. It s a great issue, have a look!",
"keywords": ["alexander","apple","merlin","people","podcast","studios","twitter","alexander","ashley","brett","chartier","check","david","episode","esqueda","evolution","kelly","systematic","techfoolery","announce","appearances","available","awesome","carpet","excited","great","guest","illustrious","magazine","myself","picks","pleased","reporting","women"]
},{
"title": "60 Mountain Lion tips on the iBookstore now",
"url": "/2012/10/01/60-mountain-lion-tips-on-the-ibookstore-now/",
"tags": ["writing"],
"date": "Oct 1st, 2012",
"ts": "1349105940",
"summary": "Ever since doing a Macworld talk showcasing rapid-fire Mac tips with David Sparks and Merlin Mann, David and I have been working on a book of tips, complete with screencasts and detailed explanations. Today I m happy to present 60 Mountain Lion Tips . The tips range from the simple but not-so-obvious up to advanced Terminal tricks. I believe there s something there for everyone. At $7, you don t have too much to lose, and there s actually a good number of tips that aren t Mountain Lion-specific. With over 50 screencasts, it s a hefty download, but the interactivity that iBooks allowed us to create makes for a very fun experience. The book is also available as a PDF for those who don t have access to iBooks. 60 Mountain Lion Tips is being released as part of David s awesome Field Guide series. Check out the iBook / PDF , and visit http://60tips.com for more info!",
"keywords": ["apple","cougar","ibook","macintosh","macworld","merlin","check","david","field","guide","macworld","merlin","mountain","sparks","terminal","today","access","advanced","allowed","available","awesome","believe","blast","collaborations","create","detailed","doing","download","everyone","experience","explanations","happy","hefty","ibook","ibooks","interactivity","looking","makes","obvious","project","range","rapid","released","screencasts","series","showcasing","simple","since","specific","tricks","visit","working"]
},{
"title": "External linking for nvALT notes 2: nvWikiLinker",
"url": "/2012/09/29/external-linking-for-nvalt-notes-2-nvwikilinker/",
"tags": ["nvalt","productivity","scripting","service"],
"date": "Sep 29th, 2012",
"ts": "1348941540",
"summary": "Continuing yesterday s foray into linking nvALT notes to any application, here s the universal script that makes any text linkable to nvALT without extra urls. It s best run as a Service, and one is included in the download. If you add a hotkey to it in System Preferences, you ll be able to select text you ve written in any app, hit your hotkey and open a related note. If it s the first time you ve used it on that text, it will create the initial note for you. It works using wiki-style linking, both with and style, where the beginning of each word is capitalized and there are no spaces. If a square bracket link exists in the text, it takes priority over any WikiWords found, and only one note can be linked with the selected text (the first title it finds is what it will link to). When you run the Service/script, it looks for the wiki words in the text passed to it (as a script you want to pass the input to STDIN the Service does this automatically with any selection). If one is found, it checks your notes folder for the closest matching note with a fairly low threshold. If nothing (almost) perfect is found (there s a little leeway), it will create a new note based on the wiki word and add the entire selected text to it. Once you ve created the note for the text, you can run the service on any selection that contains that wiki word and the original note will be opened. Say, in a mind map you had a topic node that was just [[Project X research]]. Selecting that text and running the Service would create a new note called Project X research and open it in nvALT. You d add your notes for that node to nvALT and then go back to your mind map. Next time you select that text and run it, your notes pop back up. These are the notes for Project X. My ProjectXResearch has shown that there is no basis for the claim that [any particular nationality, socio-economic or social behavior group] do it better. If you select that text for the first time and run the Service, the Project X Research note will be created with the text in it. Next time you run it, it will open the original note and you can add/edit the contents. From that point on, you just have to select the word ProjectXResearch, and you can use that link again in any other application. For both the script and the Service, there is only one line to edit. It s right after the intro credits, and simply points to your notes folder where you keep plain text versions of your nvALT notes (not database",
"keywords": ["github","hyperlink","launchbar","wikipedia","acorn","alfred","configuration","continuing","download","examples","exhibit","github","launchbar","personally","preferences","project","projectxresearch","research","stdin","selecting","service","services","support","system","wikiwords","accessible","adjust","again","almost","automatically","based","basis","because","beginning","behavior","block","bracket","bunch","called","capitalized","characters","checks","chokes","claim","cleanup","click","closest","commands","contains","contents","control","create","created","creating","credits","curious","database","detect","detects","doesn","download","easily","economic","editor","enough","entire","exist","exists","explored","extra","fairly","figure","files","finds","finished","first","folder","foray","found","fully","group","handy","happened","happy","haven","header","hotkey","however","humorous","improve","included","including","initial","input","install","intro","issues","larger","leeway","linkable","linked","linking","links","little","looks","makes","matching","minutes","modified","myself","nationality","notes","nothing","nvalt","occupy","opened","original","particular","passed","point","points","polish","possibilities","possible","priority","psychological","rather","reads","regex","related","report","research","resisted","right","running","scare","script","selected","selection","service","shown","simply","social","socio","spaces","square","storage","style","system","takes","think","threshold","title","topic","universal","using","versions","where","words","workflow","works","written","yesterday"]
},{
"title": "External linking for nvALT notes: Part 1",
"url": "/2012/09/28/external-linking-for-nvalt-notes-part-1/",
"tags": ["mindmapping","notes","nvalt","productivity"],
"date": "Sep 28th, 2012",
"ts": "1348869000",
"summary": "I devised a couple of strategies for attaching my notes to other places on my system where url links were ugly or inconvenient. It turned out to be a system that s pretty effective in a lot of applications even ones that provide a linking system to begin with. The basic idea is that you can use like you would inside of nvALT, or (camelcased words with no spaces) anywhere you can put text, then you run a script or Service (I have both for you, in part 2) with that text selected and it will open the related note. If you put the action on a hotkey, you can just select the text and press your shortcut to jump straight to the note. That s tomorrow, though. This first one I m sharing is specifically for Mindjet MindManager, though, and it uses real urls. This is where I started, before I got the idea to reference and create notes with wiki links. This script goes through all selected nodes in a MindManager mind map, taking their title text and creating a note named for it, then adding the link to that note as a hyperlink on the node. Now you can just click the little rocket next to the node it to open the note in nvALT 1 . Notes are tagged based on the map s main topic title for fast searching for an entire project s notes. This screenshot might help it make more sense. Yes, MindManager has built-in support for notes, and on occasions when you re sharing them with others it s preferable to use the internal ones. When I m brainstorming, though, having my notes available outside of a single application and universally accessible is more useful. Look at me feeling obligated to explain myself. Run this script from anywhere, as long as MindManager is open and has at least one topic selected. There are a few settings you can adjust at the top of the script. I don t know how many nerdy MindManager users there are for this, but if you have any questions, let me know. At the rate of interest this is likely to have, it ll be easier to assist one on one than try to explain everything at this point. Stay tuned for part 2, wherein I provide you with something more universally useful. I went down a deep, deep rabbit hole trying to make it possible for the notes to link back to the topic on the map. MindManager can do this internally, but exposes no url scheme for it. I built a background applet with a mmgo: url scheme, even got it working, but there are too many problems with it to share. Some insanity is best kept to one s self.",
"keywords": ["freemind","hyperlink","locator","mindjet","mindmanager","resource","mindmanager","mindjet","notes","service","accessible","action","adding","adjust","anywhere","applet","applications","assist","attaching","available","background","based","basic","before","begin","brainstorming","built","camelcased","click","couple","create","creating","devised","easier","effective","entire","everything","explain","exposes","feeling","first","having","hotkey","hyperlink","inconvenient","insanity","inside","interest","internal","internally","likely","linking","links","little","myself","named","nerdy","nodes","notes","nvalt","obligated","others","outside","places","point","possible","preferable","press","problems","project","questions","rabbit","related","rocket","scheme","screenshot","script","searching","selected","sense","settings","share","sharing","shortcut","single","spaces","specifically","started","straight","strategies","support","system","tagged","taking","through","title","tomorrow","topic","trying","tuned","turned","universally","useful","users","where","wherein","words","working"]
},{
"title": "Quick Tip: images in nvALT",
"url": "/2012/09/27/quick-tip-images-in-nvalt/",
"tags": ["nvalt","productivity","quicktip"],
"date": "Sep 27th, 2012",
"ts": "1348750800",
"summary": "You can add images to nvALT notes with standard Markdown syntax (). If you use images in nvALT, here are three tips to make life easier. URLs to online images work as long as you re connected to the net and the image still exists on the server, but both of those requirements can be a pain. Storing local images is handy, but there are some caveats (and workarounds). Because nvALT s preview is fed from the editor and not a file, it has no base reference for relative paths. That means you have to enter long (absolute) urls for local images when placing a tag in your note. Here are a few solutions. First, in nvALT 2.2b , if you drag an image into the editor it will create an inline link for you automatically. This is great for one-off images. If you re using a lot of images in a single note and they re all located in a certain directory, you can use a little metadata header to set a base url, then just use the filename of the image in the note (without the path or protocol). To do this, add a line at the very top of the note (no newlines before it, and 1 newline after it): That will add a tag to the output, and the line won t show up in the preview. If you process a full document export of the note using MultiMarkdown, the base tag will persist. That will break the images if you post it online, so you ll need to adjust it based on the new location (or just remove it). Saving from the preview window will strip it, so it s not an issue for nvALT export. Lastly, if you use images across all your notes and you store them in the same folder (or subfolders of a single folder), you can add a permanent base url to your template. Look in for a file called template.html 1 . If that file is edited, it will replace what nvALT uses for the display preview. Add the following right before the closing tag: with your base path. If you use subfolders, you just need to include the relative path in your image tags. For example, if I had a base folder of , and I had a folder inside of it called , I could then use the following in any note: If the images are all stored in the base folder, just use the image name in the tag. The nice thing about the last solution is that if you move the image folder or need to relocate your whole notes collection, you can just change the one line in the template and all of your inline images will still be connected. And if you take a note elsewhere, you have a relative image path to make setting up a folder structure for it easy",
"keywords": ["computer","directory","folder","management","multimarkdown","shareware","structure","windows","applications","because","contents","first","lastly","markdown","multimarkdown","resources","saving","storing","support","absolute","across","adjust","automatically","based","before","break","bundle","called","caveats","certain","change","closing","collection","connected","create","directory","display","document","easier","edited","editor","elsewhere","enter","example","exists","export","filename","folder","folders","great","handy","having","header","image","images","inline","inside","installed","little","local","located","location","metadata","newline","newlines","notes","nvalt","online","output","paths","permanent","persist","placing","preview","process","protocol","relative","relocate","remove","replace","right","search","server","setting","single","solution","solutions","standard","store","stored","strip","structure","subfolders","syntax","template","templates","using","whole","window","workarounds","written"]
},{
"title": "GitHub tip: easily sync your master to GitHub Pages",
"url": "/2012/09/26/github-tip-easily-sync-your-master-to-github-pages/",
"tags": ["github","quicktip"],
"date": "Sep 26th, 2012",
"ts": "1348702500",
"summary": "On the occasion that you re working on a web-related project using GitHub, you may want to simply mirror your demo pages or entire branch over to the Github Pages for your project to make them web-accessible. An example case for this would be the development of a JavaScript tool that includes an examples/ section. It would be most convenient to just let people browse that as a webpage from GitHub, keeping it up to date every time the branch changes. GitHub Pages make it possible to serve web content from a branch of your repository, and the automatic page generator is very nice. To make it work in the example above, though, an update to both the base repository and the website requires at least: While workflows vary (and some of those commands can be shortened), most require a similar procedure. That s a lot of work. Guess what? Thanks to a tip from denbuzze on Stack Overflow I found a way to keep in sync with that s so simple you ll forget it s even happening. In your local clone of your GitHub repository, add these two lines to , in the [remote origin ] section: Now, when you push to GitHub (), your branch is mirrored and everything in your repository is viewable at . That s pretty sweet.",
"keywords": ["clone","configuration","github","javascript","management","overflow","repository","stack","tools","workflow","github","github","guess","javascript","overflow","pages","stack","thanks","while","above","accessible","automatic","branch","browse","changes","clone","commands","content","convenient","denbuzze","development","entire","everything","example","examples","forget","found","generator","happening","includes","keeping","local","mirror","mirrored","origin","pages","people","possible","procedure","project","related","remote","repository","requires","section","serve","shortened","similar","simple","simply","using","viewable","webpage","website","workflows","working"]
},{
"title": "PNG to JPEG and how I loathe ImageMagick options",
"url": "/2012/09/26/png-to-jpeg-and-how-i-loathe-imagemagick-options/",
"tags": ["imagemagick"],
"date": "Sep 26th, 2012",
"ts": "1348686000",
"summary": "It s frustrating how long it takes me to figure out how to do something in ImageMagick 1 . I know full well it can do it, but the options are a maze that feels like I ll have to get a post-graduate degree to understand. The PNG/JPEG below were converted from the System Preferences 1024px icon on the command line resized with (a default utility on OS X) and converted to matted JPEG with ImageMagick s 2 . Note that the drop shadow survived. Also note the the command isn t ridiculously long. Much shorter, in fact, than the many I tried before that one. Nope, that s not all: a note from Aaron McLeod about Ruby library imagesorcery just made my day. Maybe my week. I d link it for you, but the easiest way to install it is with homebrew (). And cleverly extracted using the simple command . How, you ask?",
"keywords": ["format","graphic","graphics","imagemagick","interchange","network","portable","preferences","system","aaron","imagemagick","maybe","mcleod","preferences","system","another","before","below","cleverly","color","command","converted","converting","decent","default","degree","easier","easiest","extracted","feels","figure","frustrating","graduate","homebrew","image","install","library","matted","options","posting","prefer","public","resized","ridiculously","search","shadow","shorter","simple","sorcery","substituting","survived","takes","transparency","tried","understand","using","utility","varying"]
},{
"title": "Markdown Linking Services with the Google API",
"url": "/2012/09/26/markdown-linking-services-with-the-google-api/",
"tags": ["markdownservices","service"],
"date": "Sep 26th, 2012",
"ts": "1348662060",
"summary": "I no longer have any faith that any API will stick around all that long. Search APIs are becoming fewer and fewer. Google 1 still offers the Ajax Search API, but it s not convenient to use with System Services and such because it requires non-default libraries to work in Ruby and other scripting languages. It s easy in PHP, though. It s not my favorite language to use for local scripting, but it was the easiest solution to the problem. I think Took me a couple of tries, but I got a Bash script working (calling PHP because PHP isn t available as an interpreter in Automator) that you can use as a Lucky Link service that takes input on STDIN and returns a Markdown Link with the passed text. Perfect for System Services. I put together a 3-pack: Lucky Link, Wikipedia Link and Link Blog Post. The Link Blog Post Service requires editing to set the blog to search. Just put your site URL into the $site variable and you re good to go. I m revising the Blogsmith Bundle 2 search features (which are currently broken) with this, which should revive the most useful parts of the bundle. I m also porting it to Sublime Text 2, but progress has been slow. I ll get there. Google Lucky Link Services v1.1 Download Google Lucky Link Services v1.1 Lucky linking System Services that return Markdown links. Published 09/26/12. Updated 09/26/12. Changelog Donate More info Your support is greatly appreciated! Or me on GitHub! Gabe won t be happy about this. Link created with the Lucky Link service. It took less than two seconds and got it right on the first try.",
"keywords": ["caldav","google","interface","programming","sublime","automator","blogsmith","bundle","changelog","donate","download","github","google","lucky","markdown","published","stdin","search","service","services","sublime","system","updated","wikipedia","appreciated","available","basic","because","becoming","broken","bundle","calling","convenient","couple","created","default","download","easiest","editing","faith","favorite","features","fewer","first","followed","greatly","happy","input","interpreter","language","languages","libraries","linking","links","local","longer","offers","parts","passed","porting","problem","requires","return","returns","revising","revive","right","script","scripting","search","seconds","service","services","solution","stick","support","takes","think","together","tries","useful","variable","version","wikipedia","working"]
},{
"title": "Systematic Episode 11 with Stephen Hackett",
"url": "/2012/09/25/systematic-episode-11-with-stephen-hackett/",
"tags": ["podcast","systematic"],
"date": "Sep 25th, 2012",
"ts": "1348619820",
"summary": "Despite having a horrible time with Skype last night while talking to Stephen Hackett , I managed to pull together a podcast from the good parts. 3-4 second delays when talking lead to really uncomfortable responses If you happen to listen to the first part, don t get mad that I completely messed up on his url in the intro. I do my best to make up for it later on. Stephen is a hardware guy, and he knows his stuff. It was a great conversation, hope you enjoy listening .",
"keywords": ["itunes","podcast","skype","hackett","skype","stephen","completely","conversation","delays","enjoy","first","great","happen","hardware","having","horrible","intro","knows","later","listen","listening","managed","messed","night","parts","podcast","responses","second","stuff","talking","together","uncomfortable","while"]
},{
"title": "Marked featured on the Treehouse Show",
"url": "/2012/09/25/marked-featured-on-the-treehouse-show/",
"tags": ["marked"],
"date": "Sep 25th, 2012",
"ts": "1348573260",
"summary": "Since I don t have a blog specifically for Marked , I ll mention this here: a big thanks to the Treehouse guys for mentioning Marked on the Treehouse show . If you re interested, the review is three minutes and 35 seconds in .",
"keywords": ["design","development","homeowners","hosting","treehouse","twitter","youtube","marked","since","treehouse","interested","mention","mentioning","minutes","seconds","specifically","thanks"]
},{
"title": "Mac app review: Slicy",
"url": "/2012/09/24/mac-app-review-slicy/",
"tags": ["appdesign","appreview","design","macos","webdesign"],
"date": "Sep 24th, 2012",
"ts": "1348493400",
"summary": "Slicy from Macrabbit. I ve mentioned it before (more often back when it was Layercake), but it s worth a more meaningful mention. If you create graphics in Photoshop for web or app UI and you don t use it yet, read on. Slicy lets you use some basic naming conventions to tag layers and groups. When you save the PSD file, you can just drag it onto Slicy and it will create (or slice ) all of the individual pieces out of your file and save them as ready-to-use web/UI graphics. It can even do automatic up/downscaling of @2x graphics , smoothly converting shape layers and styles between normal and Retina versions. Before I go too far, I want to mention that Gus Mueller recently added a similar feature to Acorn . If you re using Acorn, be sure to check that out (it s called Smart Export). Back to Slicy. You can set the format of the output files by giving layers names such as mainimage.png (to create a PNG file). Add @2x before the extension and Slicy will output a half-scale image named without the @2x in addition to the full-size export. If you name a layer group in this fashion, it will flatten the group and export it. You can add a mask to the layer folder and it will be applied to the exported image. Add a subgroup called @slices and fill it with shape layers named for their exported versions and, yep, Slicy will export multiple files from the group based on the shapes in the @slices folder. Aside from the amazing time savings you ll get from the slicing tools, one of the best features of Slicy is that it will watch files it s previously exported and automatically update the exported files when the source file changes. I added a keyword panel to Marked for the next version. I redesigned it completely yesterday, and built the whole thing in a PSD with Slicy tags. With the file watcher active, I could compile the app, see how things looked, make adjustments in Photoshop and hit save. Compile the app again and everything s updated. It s as close as you ll ever get to being able to edit graphic elements in an app live. For web design, if you use something like LiveReload ( review ) or CodeKit , you can have your web page refresh every time Slicy updates your images. Save a Photoshop file, Slicy picks it up and updates the assets, LiveReload or CodeKit picks up those changes and boom, instant preview of web graphics as you design them 1 . So, there it is. A rambling review of an app that made me very happy today. I don t often offer endorsements",
"keywords": ["acorn","adobe","graphics","interface","markdown","network","photoshop","portable","slicy","acorn","aside","before","check","codekit","export","layercake","livereload","macrabbit","markdown","marked","mueller","photoshop","retina","slicy","smart","spotlight","active","added","adjustments","again","amazing","applied","assets","automatic","automatically","based","basic","before","between","built","called","capabilities","changes","check","close","completely","conventions","converting","create","depends","design","detects","downscaling","drive","elements","endorsements","everything","export","exported","extension","fashion","feature","features","files","flatten","folder","format","giving","graphic","graphics","group","groups","happy","heavily","image","images","individual","instant","keyword","layer","layers","linked","looked","mainimage","meaningful","mention","mentioned","multiple","named","names","naming","normal","offer","often","output","panel","performance","picks","pieces","preview","previously","rambling","ready","recently","redesigned","refresh","savings","scale","shape","shapes","similar","slice","slices","slicing","smoothly","source","speed","styles","subgroup","today","tools","updated","updates","using","version","versions","watch","watcher","watches","watching","whole","works","worth","yesterday"]
},{
"title": "Search your Pinboard bookmarks with Launchbar",
"url": "/2012/09/23/search-your-pinboard-bookmarks-with-launchbar/",
"tags": ["bookmarking","launchbar","pinboard"],
"date": "Sep 23rd, 2012",
"ts": "1348446360",
"summary": "This script is based on my Pinboard mirroring script that I use to keep Spotlight-searchable, OpenMeta-tagged copies of my Pinboard bookmarks locally. It s a good system, but I was thinking that a direct bookmark file search in Launchbar would be exponentially faster than Spotlight on the occasions that I remembered any part of the title. I dumped my entire Pinboard bookmark collection to a simple bookmark file and indexed it as a subgroup in Launchbar. I m sure this would work fine with some other launchers as well, but it s a 5-minute script any porting will have to be up to those who need it. Any description on the bookmark gets stripped of newlines and put into the title attribute, but this isn t indexed by Launchbar. I just figured, since it s there Tags are included in the text of the bookmark as @tags to make it possible search by tag groups in Launchbar. It works reasonably well. If you know what you re looking for, this is the fastest way I ve found to get there. You can edit the config in the script below and run it once to build the bookmark file. Open up Launchbar and hit I to get to the Index window. Hit the plus sign at the bottom to add a new Bookmark group and select Custom Bookmark file. Then point it to the file that the script created and you should have a fully searchable index in a few seconds. Then you can just run the script occasionally to overwrite the file with changes and additions. It s not advanced no delta checking or throttling, so use with loving care.",
"keywords": ["bookmark","delicious","launchbar","manager","pinboard","bookmark","custom","index","launchbar","openmeta","pinboard","spotlight","additions","advanced","attribute","based","below","bookmark","bookmarks","bottom","build","changes","checking","collection","config","copies","created","delta","description","direct","dumped","entire","exponentially","faster","fastest","figured","found","fully","group","groups","included","index","indexed","launchers","locally","looking","loving","minute","mirroring","newlines","occasionally","overwrite","point","porting","possible","reasonably","remembered","script","search","searchable","seconds","simple","since","stripped","subgroup","system","tagged","thinking","throttling","title","window","works"]
},{
"title": "All the news that's fit to Slog",
"url": "/2012/09/23/all-the-news-thats-fit-to-slog/",
"tags": ["slogger"],
"date": "Sep 23rd, 2012",
"ts": "1348408800",
"summary": "This is a Slogger update. A Slate. See what I did there? There have been a lot of updates to Slogger since I last mentioned it here. The support from users has been awesome, and there are new plugins popping up pretty regularly (as well as bugfixes). App.net is logged now. There s a fully-fledged Github logger that replaces and improves on the previous Gist logger. You can log RSS feeds as digest posts, Last.fm logging grabs everything you listened to, your GoodReads books and reviews are included the list goes on. The most recent addition is another option for storage. I love Day One and have no intention of walking away from it, but I wanted the option to save entries to Markdown files with linked images. It s really the gateway to making a modular system for adding more and more options for interfacing with other apps. Evernote and VoodooPad are on my list. However, with the Markdown export I implemented, you ll always be able to import these updates into whatever you like 1 . Markdown export is currently triggered when the storage option in slogger_config is not icloud and the path doesn t end with Journal.dayone . Everything else is automatic, as long as the path you list exists. The entries and photos folders will be created automatically if needed. Entries will be made in plain old Markdown instead of Day One s XML format. You can run both Day One and Markdown export by using two configuration files and the -c CONFIGFILE option to specify when running the secondary configuration. Just copy slogger_config and edit the storage: line. It will, inconveniently, have to poll all of the plugins twice, but I may fix that in the future. You can dates worth of images together using wildcards and preview full timespans with Marked . If you want to see all of the updates for today, for example, you d run . Then you can open 2012-09-23-archive.md in Marked (or another previewer) and browse the day all at once. The same could be done for a week, a month, etc. You can add them to nvALT for browsing, but you d have to create a root folder (which would be your Slogger path) and then an entries folder inside of it (where you d point nvALT). The journal entries would then be mixed in with your other notes, but images would work in the preview and nvALT would constantly be updated. There are currently no OpenMeta tags applied, which would be a good thing to script in if you went the nvALT route, as OpenMeta tags are mapped to nvALT tags automatically and",
"keywords": ["applescript","evernote","github","goodreads","markdown","voodoopad","applescript","configfile","enabling","entries","evernote","everything","github","goodreads","however","journal","markdown","marked","openmeta","slate","slogger","thanks","voodoopad","adding","again","allow","another","applied","apply","archive","automatic","automatically","awesome","benefits","books","browse","browsing","bugfixes","collections","comfy","command","config","configuration","constantly","convert","create","created","dates","dayone","digest","directly","doesn","downloads","entries","everyone","everything","example","exists","export","feeds","files","fledged","folder","folders","format","friendly","fully","gateway","grabs","icloud","images","implemented","import","improves","included","inconveniently","inside","intention","interfacing","journal","linked","listened","logged","logger","logging","longevity","making","mapped","meantime","mentioned","mixed","modular","needed","notes","nvalt","options","photos","pitching","plugins","point","popping","portability","possibilities","posts","preview","previewer","recent","regularly","replaces","reviews","route","running","scanning","script","searching","secondary","separation","since","slogger","specify","storage","support","system","timespans","today","together","triggered","twice","updated","updates","users","using","walking","wanted","whatever","where","wildcards","worth"]
},{
"title": "Planter: Tree planting for your filesystem",
"url": "/2012/09/22/planter-tree-planting-for-your-filesystem/",
"tags": ["scripting"],
"date": "Sep 22nd, 2012",
"ts": "1348339920",
"summary": "I wrote a script this morning called Planter. It plants directory trees. I made a logo for it not because it s an official project or deserving of the extra effort, but because I had Photoshop open anyway. Planter takes in simple, indented text files to define the structure of the directory tree it s going to create. You pass it something like: You can nest directories as deeply as you like. You can pass the indented list to it on STDIN (piping from another command), or run alone and it will open up your default editor and let you define the list on the fly. You can also use templates Create and add text files named [template].tpl , where [template] is the short name you ll call it with. Say I have ~/.planter/client.tpl , I can just run and it will read that template in and create the directory structure in whatever directory I m in when I run it. You can also use a very basic template variable system to add variable content. In your template, use where X is an integer. The number corresponds to the arguments passed on the command line after the template name, so is replaced with the first argument: Nifty. Here s the script. It may evolve a bit from here, but it does everything I needed it to right now. Hope it s useful for you, too. Feel free to fork the gist and play with it.",
"keywords": ["clients","command","directory","folder","interface","structure","textmate","create","creates","nifty","photo","photoshop","planter","stdin","alone","another","anyway","argument","arguments","basic","because","called","client","command","content","corresponds","create","creates","credit","deeply","default","define","deserving","directories","directory","editor","effort","everything","evolve","extra","files","first","going","indented","integer","morning","named","needed","official","passed","piping","planter","plants","project","replaced","right","script","short","simphonic","simple","structure","system","takes","template","templates","trees","useful","variable","whatever","where","wrote"]
},{
"title": "In-place CSS cursor changes",
"url": "/2012/09/21/in-place-css-cursor-changes/",
"tags": ["javascript","webdesign"],
"date": "Sep 21st, 2012",
"ts": "1348220460",
"summary": "As part of a feature I m working on for Marked, I wanted to have the mouse cursor change while the Command key is held down. Using JavaScript to set the CSS for the cursor turned out to be no good as it wouldn t update until the mouse was moved. In this case that wasn t very helpful. Turns out, though, that changing a body class via JavaScript mixed with a couple lines of CSS does update the cursor without it moving (despite what Google kept telling me). Doubt it s really news, but it took me a while to get it working. I figured I d put it out there You don t have to use this with keyup/down. It could be used with an ajax complete event, a timer whatever you fancy. You can also limit the effect to hovering over certain elements just using the CSS (in this case, something like ). Click on the Result tab below and follow the instructions for a demo, or visit the JSFiddle directly .",
"keywords": ["cascading","cursors","formats","google","javascript","sheets","style","click","command","doubt","google","jsfiddle","javascript","marked","turns","using","below","certain","change","changing","class","couple","cursor","directly","elements","fancy","feature","figured","helpful","hovering","instructions","keyup","limit","mixed","mouse","moved","moving","telling","timer","turned","using","visit","wanted","whatever","while","working","wouldn"]
},{
"title": "Systematic Episode 10 with Shawn Blanc",
"url": "/2012/09/18/systematic-episode-10-with-shawn-blanc/",
"tags": ["podcast","systematic"],
"date": "Sep 18th, 2012",
"ts": "1348001340",
"summary": "I had to shuffle some schedules around and ended up with a blank spot for this week. Blogger, father and black belt Shawn Blanc was gracious enough to take the spot on short notice, and I think the episode turned out great. You can listen in as we discuss black belt time management, proud fatherhood, sleep schedules and drool over our favorite apps and sites for the week.",
"keywords": ["black","business","friday","karate","martial","podcast","sports","studios","blanc","blogger","listen","shawn","black","blank","drool","ended","enough","episode","father","fatherhood","favorite","gracious","great","listen","management","podcast","proud","schedules","short","shuffle","sites","sleep","subscribe","think","turned"]
},{
"title": "Web excursions: September 17, 2012",
"url": "/2012/09/17/web-excursions-september-17-2012/",
"tags": ["bookmarks"],
"date": "Sep 17th, 2012",
"ts": "1347886320",
"summary": "Links of interest from September 13, 2012 through September 17, 2012: Launchpad Manager - Keep your Launchpad organised! A tool to add some missing functionality to Launchpad in Lion and Mountain Lion. Primarily for faster management and organization. Also see Launchpad Cleaner (free). Alfred Extension TaskPaper Extended Notes This is awesome (and gives me lots of ideas). It allows you to link notes quickly and easily from TaskPaper tasks via tags, and open them in your preferred application. It allows for notes and outline types, and you can run it with or without Alfred (I m triggering from FastScripts right now). Create Custom jQuery Builds This is kinda big for people who love jQuery but want to cut down on bloat. Batch Resizing Using Command Line and ImageMagick Smashing Magazine offers a handy way to use Python and ImageMagick to create multiple sizes from a batch of images. Multi Monitor Wallpaper It s not the most beautiful app, and it s missing a couple of features I d love to see, but this is ber-handy for making continuous wallpapers across multiple displays from a single image.",
"keywords": ["command","fastscripts","imagemagick","interface","jquery","languages","programming","python","taskpaper","alfred","batch","builds","cleaner","command","create","custom","extended","extension","fastscripts","imagemagick","launchpad","links","magazine","manager","monitor","mountain","multi","notes","primarily","python","resizing","smashing","taskpaper","using","wallpaper","across","allows","awesome","batch","beautiful","bloat","continuous","couple","create","displays","easily","faster","features","functionality","gives","handy","ideas","image","images","interest","jquery","kinda","making","management","missing","multiple","notes","offers","organised","organization","outline","people","preferred","quickly","right","single","sizes","tasks","through","triggering","types","wallpapers"]
},{
"title": "Easy command line Github Flavored Markdown",
"url": "/2012/09/16/easy-command-line-github-flavored-markdown/",
"tags": ["github","markdown","scripting"],
"date": "Sep 16th, 2012",
"ts": "1347811800",
"summary": "I wrote a quick wrapper script for converting local Markdown files or raw text to HTML using Github Flavored Markdown. It uses the Github API, so there are no local dependencies (other than the gem, see below). It just requires an Internet connection. Syntax highlighting and Github stylesheets are included in the output. Any syntax recognized by Github is converted, including line breaks and fenced code. To run it, you first need to make sure you have the gem. To install it, use (you might need , depending on your setup). Once that s installed, just save the script as in your path and make it executable (). I m using the gfm mode of the API, which includes a feature that converts @mentions into Github addresses. To disable these extras, change line 45 to . To pipe input, just use a Unix pipe after any command that creates output on STDOUT, e.g.: There s one optional argument, -c , which will automatically copy the output to the clipboard using . This is just for my own convenience, you can always pipe the output to yourself. If you include this argument along with a filename, make sure the -c comes before the filename on the command line (). Unless -c is used, output is always to STDOUT, meaning you can easily redirect it to a file with . I like to use it with a utility called that outputs the result directly to my browser (). I built this just for testing Marked s output against Github output, but it s universally useful so I thought I d share. Download the script here or skip straight to the raw version and save from there.",
"keywords": ["filename","github","interface","output","pipeline","programming","standard","streams","download","flavored","github","installation","internet","markdown","marked","stdin","stdout","syntax","usage","addresses","against","argument","automatically","before","below","breaks","browser","built","called","change","clipboard","comes","command","convenience","converted","converting","converts","creates","dependencies","depending","directly","disable","easily","executable","extras","feature","fenced","filename","files","first","flavor","highlighting","included","includes","including","input","install","installed","local","meaning","mentions","optional","output","outputs","piped","providing","quick","recognized","redirect","requires","script","setup","share","straight","stylesheets","syntax","testing","thought","universally","useful","using","utility","version","wrapper","wrote"]
},{
"title": "Matrix(ish): a bash script with no practical application",
"url": "/2012/09/15/matrixish-a-bash-script-with-no-practical-application/",
"tags": ["scripting","terminal"],
"date": "Sep 15th, 2012",
"ts": "1347737700",
"summary": "Ok, just for (nerd) fun, here s a Bash shell script that will output a Matrix-ish display in Terminal. I have no idea if it works outside of BSD on OS X, but it has a chance. There s a much better version of this effect written in C called cmatrix that you can install via Homebrew . That being said, I wanted to mess around with this in Bash anyway. Don t ask me why. The script basically just takes an array of characters and an array of colors, randomly picking a combination of the two to stick in any character position. It uses cursor movements to randomly skip overwriting characters along the way, providing an illusion that characters are changing on the screen in random positions, rather than line by line. The script takes two optional arguments. The first one is the spacing of the output. The higher the number, the more spaced out the characters are. The second argument is the scroll speed. Leaving that blank or setting it to will result in no scrolling, things just change on the screen. The scrolling can add some interest to the effect, so experiment with it. The arguments must be used in order, if there s only one argument it s assumed to be the spacing. The defaults (no arguments) are 100 (spacing) and 0 (no scroll). Here s the script, just grab the raw version and save it in your path as and run on it to make it executable. Then try running , , etc. to get a feel for it. Hit Ctrl-C to stop the script (screen will be cleaned up automatically). There s a list of colors above that line that you can use in the array. Use as many or as few as you like (at least one) and those colors will be randomly picked from when display characters. Here s the script, have fun ( raw version ).",
"keywords": ["argument","operating","script","shell","systems","colors","homebrew","leaving","matrix","terminal","above","anyway","argument","arguments","array","assumed","automatically","below","blank","called","chance","change","changing","character","characters","cleaned","cmatrix","colors","combination","comment","cursor","customized","defaults","display","executable","experiment","extra","first","higher","illusion","install","interest","looks","modified","movements","nifty","optional","output","outside","overwriting","picked","picking","position","positions","providing","random","randomly","rather","running","screen","script","scroll","scrolling","second","setting","shell","spaced","spacing","speed","stick","takes","version","wanted","works","written"]
},{
"title": "Vacuuming your Mail.app index still works wonders",
"url": "/2012/09/15/vacuuming-your-mail-app-index-still-works-wonders/",
"tags": ["macos","optimization"],
"date": "Sep 15th, 2012",
"ts": "1347720420",
"summary": "There was a tip on Hawk Wings long ago which showed how to speed up Apple s Mail.app by vacuuming the SQLite3 index. I hadn t tried it since Snow Leopard, but I was having some serious issues with the time it took to open a Mail folder on my Air, so I thought I d give it a shot. The same trick still works, you just have to modify the path. The new command (in Mountain Lion, and probably Lion) is: Give it a shot and see if performance improves. If it does, you can automate this with a bash function or AppleScript. Here s a handy AppleScript from Hawk Wings modified to work with the new path: Open AppleScript Editor, paste that in and save it as a scpt file in ~/Library/Scripts/ ( ~ is your home folder, create the Scripts folder if it s not there 1 ). Run it using the script menu (if you have it enabled in AppleScript Editor preferences) or directly from AppleScript Editor. You could also have it run automatically in the middle of the night using a scheduler like Lingon and to run the AppleScript file. You usually won t see a huge difference in the database size, but you ll definitely notice the improvement in Mail s performance. If you can t find your ~/Library folder while you re in the Save dialog, use G to open the Go to folder dialog and enter ~/Library and hit enter. It will take you to the (hidden) Library folder where you can look for the Scripts folder, creating it with N if it doesn t exist.",
"keywords": ["apple","applescript","cougar","directory","leopard","macintosh","mountain","sqlite","apple","applescript","editor","leopard","library","lingon","mountain","sqlite","scripts","wings","automate","automatically","command","create","creating","database","definitely","dialog","difference","directly","doesn","enabled","enter","exist","folder","function","handy","having","hidden","improvement","improves","index","issues","middle","modified","modify","night","paste","performance","preferences","scheduler","script","serious","showed","since","speed","thought","trick","tried","using","usually","vacuuming","where","while","works"]
},{
"title": "Systematic Episode 9 with Gabe Weatherhead",
"url": "/2012/09/11/systematic-episode-9-with-gabe-weatherhead/",
"tags": ["podcast","systematic"],
"date": "Sep 11th, 2012",
"ts": "1347379200",
"summary": "Systematic Episode 9 was just posted. Gabe Weatherhead ( @macdrifter ) just went up. I talked with Gabe about static blogging, using our own blogs as a personal reference library and lots of Markdown talk. The top app picks for the week were fun, and if you re any sort of nerd you ll probably find something you like in there! As always, feedback is welcome. I m also making a point of answering listener questions during the shows, so if you have something you d like to listen to me and a guest expound on, let me know . Your reviews on iTunes are always appreciated, too. I ve booked the show into November, but if you have any guest suggestions I m always looking. There are some fantastic guests coming up, stay tuned!",
"keywords": ["communities","itunes","library","markdown","online","podcast","twitter","weatherhead","episode","markdown","systematic","weatherhead","answering","appreciated","blogging","blogs","booked","coming","expound","fantastic","feedback","guest","guests","itunes","library","listen","listener","looking","macdrifter","making","personal","picks","point","posted","questions","reviews","shows","static","suggestions","talked","tuned","using","welcome"]
},{
"title": "nvALT 101",
"url": "/2012/09/07/nvalt-101/",
"tags": ["bookmarks","nvalt"],
"date": "Sep 7th, 2012",
"ts": "1347033720",
"summary": "A great post from Michael Schechter titled Plain Text Primer: nvALT 101 is up and worthy of a pointer from here. It s the missing manual that we ve never gotten around to writing for nvALT . If you re new to nvALT or want to know how to make the most of it, this is a great place to start.",
"keywords": ["drafts","evernote","iphone","literature","locator","michael","plaintext","resource","schechter","michael","primer","schechter","gotten","great","manual","missing","nvalt","pointer","titled","worthy","writing"]
},{
"title": "nvNotes drawing winners!",
"url": "/2012/09/06/nvnotes-drawing-winners/",
"tags": ["giveaway"],
"date": "Sep 6th, 2012",
"ts": "1346953380",
"summary": "Here are the winners of the nvNotes drawing ! Names are linked to comments so you can confirm that you are (or are not) a winner. Codes have already been mailed to the addresses left with each chosen comment, so if yours is listed and you haven t heard from me, please contact me . As always, thanks for reading. If you didn t win and want to try out nvNotes anyway, it s still US$1.99 on iTunes !",
"keywords": ["android","apple","handhelds","iphone","itunes","smartphones","codes","hjalte","martin","matthew","mstrup","names","poulsen","addresses","anyway","chosen","comment","comments","confirm","contact","drawing","haven","heard","itunes","linked","listed","mailed","nvnotes","reading","thanks","winner","winners"]
},{
"title": "Web excursions: September 5, 2012",
"url": "/2012/09/05/web-excursions-september-5-2012/",
"tags": ["bookmarks","htmlslides","sleep"],
"date": "Sep 5th, 2012",
"ts": "1346853600",
"summary": "Links of interest from August 29, 2012 through September 5, 2012: Migrating to Obj-C Literals - Jeremy W. Sherman A cool script for that if nothing else demonstrates the ability of this command line tool to make sweeping substitutions across a codebase. hakimel/reveal.js Holy cow, this is the HTML slide presentation app I ve been looking for. Now to write a Sublime package to generate slideshows from pure Markdown files OtherBrowser - elastic threads I use (the apparently unmaintained) Choosy for this, but Elastic Threads offers up a simple solution for sending urls between Chrome and Safari easily. As an added benefit, it registers url handlers that you can use to open urls in specific browsers from the command line and other scripts. You Can t Do Your Job if You Don t Sleep I dislike sleeping. I like sleep, I just don t like sleeping. And I dislike studies that tell me how bad that is for me. Nonetheless, bookmarked. Turn URLs and Webpages Into PDFs In Your Dropbox This is fun. Federico is such a nerd.",
"keywords": ["command","design","development","dropbox","interface","locator","markdown","resource","safari","choosy","chrome","dropbox","elastic","federico","jeremy","links","literals","markdown","migrating","nonetheless","otherbrowser","safari","sherman","sleep","sublime","threads","webpages","ability","across","added","apparently","benefit","between","bookmarked","browsers","codebase","command","demonstrates","dislike","easily","elastic","files","hakimel","handlers","interest","looking","nothing","offers","package","presentation","registers","reveal","script","scripts","sending","simple","sleep","sleeping","slide","slideshows","solution","specific","studies","substitutions","sweeping","threads","through","unmaintained","write"]
},{
"title": "Systematic Episode 8 with Brett Kelly",
"url": "/2012/09/04/systematic-episode-8-with-brett-kelly/",
"tags": ["podcast","systematic"],
"date": "Sep 4th, 2012",
"ts": "1346782320",
"summary": "I got a chance to chat with Brett Kelly for this episode. We talked about Evernote, and Omnifocus, and some discussion about spousal approval of our musical tastes. We kept it to an hour, so good on us. Check it out at 5by5 , and be sure to subscribe in your favorite podcast app if you dig it.",
"keywords": ["directories","evernote","omnifocus","podcast","programs","studios","television","brett","check","evernote","kelly","omnifocus","approval","chance","discussion","episode","favorite","musical","podcast","spousal","subscribe","talked","tastes"]
},{
"title": "A few gems for Mail.app, 50% off",
"url": "/2012/09/04/a-few-gems-for-mail-app-50-off/",
"tags": ["deals"],
"date": "Sep 4th, 2012",
"ts": "1346778000",
"summary": "The Back to Mail promotion running right now has some great plugins for Mail.app users. I always come back to Apple Mail after trying the other (admittedly great) apps on the market. The two reasons for that are overall system integration (AppleScript, mostly) and the plugins that are available. Pretty much every plugin I ve used and loved is on sale for 50% off, thanks to this promo. Letter Opener Pro (process winmail.dat files) Signature Profiler (maintain multiple signatures) MailTags, MailActOn and Perspectives (I wouldn t want to live without InDev s stuff) ForgetMeNot (attachment reminder) Take Control of Apple Mail (book) EagleFiler (archive Mail messages, plus a crapload of other info management features) Attachment Tamer (fixes a bunch of annoyances with Apple Mail attachments) SpamSieve (the best local solution to spam) MailHub (easy manipulation of messages for filing and deleting) DockStar (multiple Dock icon badges for different inboxes) If you use Mail.app, check out the Back to Mail promo . You can pick just the apps you want, every one of them half price.",
"keywords": ["alpha","apple","applescript","college","email","encapsulation","engineering","format","neutral","spamsieve","transport","apple","applescript","attachment","control","dockstar","eaglefiler","forgetmenot","indev","letter","mailacton","mailhub","mailtags","opener","perspectives","profiler","signature","spamsieve","tamer","admittedly","annoyances","archive","attachment","attachments","available","badges","bunch","check","crapload","deleting","different","features","files","filing","fixes","great","inboxes","integration","local","loved","maintain","management","manipulation","market","messages","mostly","multiple","overall","plugin","plugins","price","process","promo","promotion","reasons","reminder","right","running","signatures","solution","stuff","system","thanks","trying","users","winmail","wouldn"]
},{
"title": "The Read and Trust Magazine",
"url": "/2012/09/04/the-read-and-trust-magazine/",
"tags": ["readandtrust","writing"],
"date": "Sep 4th, 2012",
"ts": "1346764500",
"summary": "You can now subscribe to a monthly PDF magazine featuring the amazing writers in the Read Trust network. If you re a reader and you enjoy excellent writing from top-notch thinkers and authors, you want this. Pick up an issue or a monthly subscription to the Read Trust magazine. That link is my affiliate link, and helps support writers like me who contribute to the newsletter. The contributor list includes a wide array of writers more talented than I, and all of them deserve your support in continuing to provide superb reading material! Be sure to click on the Bundle Giveaway link on the subscription page for a chance to win a load of prizes (over $100 worth), including a copy of Paperless by David Sparks, Marked (by me) and a plethora of other apps, books and tools.",
"keywords": ["author","business","directories","model","organizations","resources","states","subscription","united","writer","writers","bundle","david","giveaway","marked","paperless","sparks","affiliate","amazing","array","authors","books","chance","click","continuing","contribute","contributor","deserve","enjoy","excellent","featuring","helps","includes","including","magazine","monthly","network","newsletter","notch","plethora","prizes","reader","reading","subscribe","subscription","superb","support","talented","thinkers","tools","worth","writers","writing"]
},{
"title": "Win a free copy of nvNotes: iPhone note-taking app",
"url": "/2012/09/03/win-a-free-copy-of-nvnotes-iphone-note-taking-app/",
"tags": ["giveaway"],
"date": "Sep 3rd, 2012",
"ts": "1346698800",
"summary": "nvNotes is a relatively new app for iPhone that emulates the note-taking style of Notational Velocity (and nvALT). With the omnibox search you can quickly find all related notes or start a new one immediately, and it makes taking notes a breeze and finding them simple. nvNotes also works with GTD , allowing you to include @contexts in your notes and sorting them by context for an easy and flexible organization system. You can even specify a badge context such as @today to have currently available task notes add a badge to your homescreen icon. There s a url scheme available, so you can quickly launch nvNotes from apps like Launch Center Pro , too. Right now nvNotes only supports iCloud sync with other iOS devices, which limits its utility a little bit. A full Dropbox sync would definitely be handy for syncing with a Notational Velocity/nvALT notes collection, and I believe such a solution is in the works. As a standalone note-taking solution, though, nvNotes is pretty great. The developer of nvNotes has generously offered up five copies (US $1.99 value) of nvNotes to my readers. If you want a shot at a free promo code just leave a comment on this post. The drawing is completely random, and duplicate entries will be discarded. Open to everyone except (with apologies) our Canadian friends, whose laws surrounding such things make my head hurt. Winners will be drawn at 12pm CST on Thursday, September 6th. Leave a comment and be entered in the drawing for a copy, and go check nvNotes out on iTunes . Also see it on the iTextEditors chart for more info and comparison.",
"keywords": ["apple","dropbox","icloud","iphone","itunes","notational","notetaking","velocity","canadian","center","dropbox","launch","leave","notational","right","thursday","velocity","winners","allowing","apologies","available","badge","believe","breeze","chart","check","collection","comment","comparison","completely","context","contexts","copies","definitely","developer","devices","discarded","drawing","duplicate","emulates","entered","entries","everyone","except","finding","flexible","friends","generously","great","handy","homescreen","icloud","iphone","itexteditors","itunes","launch","leave","limits","little","makes","notes","nvalt","nvnotes","offered","omnibox","organization","promo","quickly","random","readers","related","relatively","scheme","search","simple","solution","sorting","specify","standalone","style","supports","surrounding","syncing","system","taking","today","utility","value","whose","works"]
},{
"title": "FioWriter brings Mac editing shortcuts to your iPad",
"url": "/2012/09/03/fiowriter-brings-mac-editing-shortcuts-to-your-ipad/",
"tags": ["texteditor"],
"date": "Sep 3rd, 2012",
"ts": "1346676000",
"summary": "I just added FioWriter to iTextEditors today. It s a pretty great idea for an iPad text editor: it adds Command and Option keys to the keyboard, so anyone who s used to standard OS X text editing operations can use it in a very familiar way. FioWriter supports 30-some commands, including Ctrl-A, F, B, N, P and E (beginning of line, forward, backward, next line, previous line and end of line). Command-arrow keys all work, as well as Command-C, X and V for copy, cut and paste operations. You can select and navigate words and lines using the keys you re already used to. You can also quickly go to line, insert punctuation from an extra keyboard row and get definitions using the built-in dictionary. It has no Markdown-specific features, but it s surprisingly easy to use if you re already used to editing on a Mac. If that sounds appealing, check it out on the iTunes App Store , and see it in comparison to other editors on the iTextEditors chart .",
"keywords": ["arrow","editor","editors","markdown","shareware","windows","command","fiowriter","markdown","store","added","anyone","appealing","arrow","backward","beginning","built","chart","check","commands","comparison","definitions","dictionary","editing","editor","editors","extra","familiar","features","great","itexteditors","itunes","including","keyboard","navigate","operations","paste","punctuation","quickly","sounds","specific","standard","supports","surprisingly","today","using","words"]
},{
"title": "Web excursions: August 29, 2012",
"url": "/2012/08/29/web-excursions-august-29-2012/",
"tags": ["bookmarks","markdown","sublimetext","voodoopad"],
"date": "Aug 29th, 2012",
"ts": "1346252580",
"summary": "Links of interest from August 25, 2012 through August 29, 2012: Making a Sublime Text Plugin: Markdown Reference Viewer Gabe over at Macdrifter offers not only a very cool plugin for Markdown writing, but plenty of details on the process of creating it, too. Octomars Via Daniel Jalkut , a method for blogging to OctoPress from MarsEdit. 1Password Logins in OmniFocus Some very productive possibilities here. Thanks for sharing, David! The Shape of Everything: VoodooPad Navigation Plugins Gus revamped my old VoodooPad date navigation plugins for JSTalk (Lua doesn t work in VP 5). Day One Using Hazel To Correct Misnamed Locations A tip for correcting journal entry location stamps using Hazel. (Updated Ruby version here ). Cloud Mate This may actually end up being really handy as I use iCloud more. It s a handy Finder-esque interface for iCloud that allows you to drag files from any iCloud app in and out. Needs a bit of UI polish, but if you want to quickly access iCloud docs without launching apps, it s a gem.",
"keywords": ["apple","icloud","iphone","markdown","sublimetext","voodoopad","cloud","daniel","david","everything","finder","hazel","jstalk","jalkut","links","locations","logins","macdrifter","making","markdown","marsedit","misnamed","navigation","needs","octopress","octomars","omnifocus","password","plugin","plugins","shape","sublime","thanks","updated","using","viewer","voodoopad","access","allows","blogging","correcting","creating","details","doesn","entry","esque","files","handy","icloud","interest","interface","journal","launching","location","method","navigation","offers","plenty","plugin","plugins","polish","possibilities","process","productive","quickly","revamped","sharing","stamps","through","using","version","writing"]
},{
"title": "Systematic Episode 7 with Michael Schechter",
"url": "/2012/08/28/systematic-episode-7-with-michael-schechter/",
"tags": ["podcast","systematic"],
"date": "Aug 28th, 2012",
"ts": "1346192640",
"summary": "I didn t sleep much this week, and I thought that I was going to do a horrible job of talking with Michael Schechter for today s episode of Systematic. Somehow, he made it work, and we had a great conversation about ADHD, Tesla, Apple Twitter and more ADHD.",
"keywords": ["apple","deficit","disorder","health","hyperactivity","teenagers","twitter","apple","enjoy","michael","schechter","somehow","systematic","tesla","twitter","conversation","conversations","couple","episode","going","great","horrible","meandering","nerds","sleep","talking","thought","today"]
},{
"title": "Textastic for iPhone winners",
"url": "/2012/08/27/textastic-for-iphone-winners/",
"tags": ["giveaway"],
"date": "Aug 27th, 2012",
"ts": "1346096040",
"summary": "If you re on the list and you haven t seen the email from me, let me know. Have fun with Textastic! If you didn t win, you should grab it while it s still on sale (50% 0ff).",
"keywords": ["android","apple","handhelds","iphone","jamie","samsung","smartphone","catchpole","christopher","jamie","textastic","wessel","afternoon","comments","confirmation","drawing","email","folks","haven","iphone","links","lucky","promo","pulled","received","while","winners"]
},{
"title": "TextDown: Markdown editor for Chrome",
"url": "/2012/08/26/textdown-markdown-editor-for-chrome/",
"tags": ["chrome","markdown","plugin"],
"date": "Aug 26th, 2012",
"ts": "1345991640",
"summary": "If you re a Chrome user, you ve probably found that you can do a lot more than just browse the web within the application. Now you can edit Markdown, too. Enter TextDown , by Joao Colombo. It features a live preview pane that can be resized and hidden. It does some autopairing, has bold and italics shortcut keys and can solve math equations inline. It can open online files and work with, save, export HTML (with custom templates) and print local files. It s not perfect (the autopairing expecially needs more polishing), but it s a pretty cool trick for Chrome. Adding the extension also gives you an addition to the right click menu that lets you save Markdown links and images when copying. Nifty. If you re a Chrome user, check it out . The source is available on Github .",
"keywords": ["chrome","clients","colombo","github","google","keyboard","markdown","shortcut","adding","chrome","colombo","enter","github","markdown","nifty","textdown","autopairing","available","browse","check","click","copying","custom","equations","expecially","export","extension","features","files","found","gives","hidden","images","inline","italics","links","local","needs","online","polishing","preview","print","resized","right","shortcut","solve","source","templates","trick","within"]
},{
"title": "Web excursions: August 25, 2012",
"url": "/2012/08/25/web-excursions-august-25-2012/",
"tags": ["bookmarks","markdown"],
"date": "Aug 25th, 2012",
"ts": "1345906800",
"summary": "Links of interest from August 21, 2012 through August 25, 2012: VoodooPad: Static Publishing Coming in the next release, Gus Mueller s own static blogging engine for VoodooPad. Tweet Archivist - Analyze, Archive, Save and Export Twitter Searches This seems like it could be fun for analyzing Twitter data. I ve played around with it a bit and found some interesting results mostly, though it just gave me ideas for projects of my own 4bit. Terminal Color Scheme Designer Great interactive theme designer (via One Thing Well , as is often the case). You can convert the .Xresources files it creates to iTerm 2 presets using a script like this . BigVideo.js - The jQuery Plugin for Big Background Video Oh man, that s pretty cool. Scary like a potential tag on steroids, but very cool. TodoMVC Are you (like me) trying to figure out which JavaScript MVC framework to really start diving into? This is a great way to compare them: the same small todo app built in every library from Vanilla JS to Backbone and KnockoutJS. The world of Markdown editing is getting crazy, and by that I mean it s like a 3-day long New Years Eve party where every hour is midnight. Well, kinda. The upcoming version 3.0 of Ulysses is going to put a new spin on plain text editing and the recent betas of FoldingText are a spectacular nerdfest. I ve linked them before, but they re really worth checking out. I ll gush more about FoldingText soon.",
"keywords": ["github","javascript","knockoutjs","markdown","mueller","twitter","voodoopad","analyze","archive","archivist","backbone","background","bigvideo","color","coming","designer","export","foldingtext","great","javascript","knockoutjs","links","markdown","mueller","plugin","publishing","scary","scheme","searches","static","terminal","todomvc","twitter","ulysses","vanilla","video","voodoopad","xresources","years","analyzing","before","betas","blogging","bonus","built","checking","compare","convert","crazy","creates","designer","diving","editing","engine","figure","files","found","framework","getting","going","great","iterm","ideas","interactive","interest","interesting","jquery","kinda","library","linked","midnight","mostly","nerdfest","often","party","played","potential","presets","projects","recent","release","results","round","script","seems","small","spectacular","static","steroids","theme","through","trying","upcoming","using","version","where","world","worth"]
},{
"title": "Slogger 2 is up, wanna pitch in?",
"url": "/2012/08/24/slogger-2-is-up-wanna-pitch-in/",
"tags": ["logging","slogger"],
"date": "Aug 24th, 2012",
"ts": "1345828440",
"summary": "I ve posted Slogger 2 to Github. It s not finished, polished or perfect in any way, but I m low on time and wanted to at least make it available if anyone wants to pitch in. If you have no idea what Slogger is or why anyone in their right mind would name something that, here s the origin story . The current download version is stable and works fine for me. It should be usable immediately. If you ve been running the original Slogger, you ll want to start fresh (back up your folder and replace it with the new one). There s not an easy upgrade path and the config file needs to regenerate with a new format. The biggest change aside from bugfixes is that it s now plugin-based. You can add and remove services by moving plugins between folders ( and ). You can also create your own plugins using the file as a base, and copying what you want from the base plugins. An excellent resource has been pulled together by rreeger that lists a bunch of available RSS feeds for various services that you can use with the RSS Feeds plugin or for building your own plugins. Build lots of plugins, and submit them for inclusion. I d love it. I m unhappy with the architecture of the system right now, but there s no chance I ll have time to revamp in the near future. If anyone wants to help me figure out the inheritance issues involved with reading a folder of plugins and building a unified configuration object, feel free to revamp the core and submit pull requests. So, in short, it s working and it s pretty cool, but it s not finished. I m even less likely than before to offer a lot of support, so if you re nervous about trying it out, I d recommend against it. If you re comfortable on the command line, have at it. If you know a bit of Ruby, pitch in. Slogger 2 is on Github. Please post issues there and not in the comments here. If you do, you re fired.",
"keywords": ["github","plugin","wordpress","build","feeds","github","slogger","against","anyone","architecture","aside","available","based","before","between","biggest","bugfixes","building","bunch","chance","change","comfortable","command","comments","config","configuration","copying","create","download","excellent","feeds","figure","finished","fired","folder","folders","format","fresh","inclusion","inheritance","involved","issues","likely","lists","moving","needs","nervous","object","offer","origin","original","pitch","plugin","plugins","polished","posted","pulled","reading","recommend","regenerate","remove","replace","requests","resource","revamp","right","rreeger","running","services","short","stable","story","support","system","together","trying","unhappy","unified","upgrade","usable","using","various","version","wanted","wants","working","works"]
},{
"title": "Drafts 2.0 and Drafts for iPad",
"url": "/2012/08/23/drafts-2-0-and-drafts-for-ipad/",
"tags": ["iphone","texteditor"],
"date": "Aug 23rd, 2012",
"ts": "1345744200",
"summary": "I mentioned this was coming on the last episode of Systematic : Drafts 2.0 and Drafts for iPad are out. If you re looking for a solid and elegant solution for inputing notes, tweets, emails, markdown text or just about anything you can type on your iOS device, this one is perfect. A summary: Drafts makes it easy to enter text quickly. It pops up ready to go, just open it and start typing. There are dozens of options for where your text goes when you have time or need to dump it: Evernote, OmniFocus, Twitter, Markdown- Email and more apps than I cal list without making a horribly long sentence out of this. It stores your drafts in chronological order and makes it easy to keep multiple notes and quickly disperse them. There s a new link detection feature for highlighting and linking phone numbers and addresses, in addition to a redesigned UI with new interface features. For some of us, the most exciting feature may very well be the ability to append to a Dropbox file. Well, that excites me, anyway. It can also sync across platforms via Simperium, now.",
"keywords": ["dropbox","itunes","markdown","omnifocus","simperium","twitter","drafts","dropbox","email","evernote","markdown","omnifocus","simperium","systematic","twitter","ability","across","addresses","anyway","append","chronological","coming","detection","device","disperse","dozens","drafts","elegant","emails","enter","episode","excites","exciting","feature","features","highlighting","horribly","itunes","inputing","interface","linking","looking","makes","making","markdown","mentioned","multiple","notes","numbers","options","phone","platforms","quickly","ready","redesigned","sentence","solid","solution","stores","summary","tweets","typing","where"]
},{
"title": "Textastic for iPhone is out, win a free copy",
"url": "/2012/08/23/textastic-for-iphone-is-out-win-a-free-copy/",
"tags": ["giveaway","iphone","texteditor"],
"date": "Aug 23rd, 2012",
"ts": "1345728900",
"summary": "I reviewed Textastic recently , and had a lot of good things to say about it. Textastic for iPhone is now available as a separate application, and it boasts all of the features of the iPad version. If you want to edit code/Markdown on the go, this is an amazing app. I happen to have five copies to give away, thanks to Alexander Blach, developer of Textastic. If you d like a chance at a copy ($9.99 value), just leave a comment on this post . I ll be drawing winners on Monday, August 27th at noon. The selection process is completely random, so any comment will get you entered. Multiple comments from the same author will be automatically culled to a single entry, so no point in cheating. If you re anxious, or you enter and don t win, Textastic is still on sale at $4.99 US for the next week or so (50% off). Unfortunately I must exclude Canadian residents from the drawing. It s not personal.",
"keywords": ["android","apple","google","handhelds","iphone","samsung","smartphone","alexander","blach","canadian","markdown","monday","multiple","textastic","unfortunately","amazing","anxious","author","automatically","available","boasts","chance","cheating","comment","comments","completely","copies","culled","developer","drawing","enter","entered","entry","features","happen","iphone","leave","personal","point","process","random","recently","residents","reviewed","selection","separate","single","thanks","value","version","winners"]
},{
"title": "An open response",
"url": "/2012/08/22/an-open-respons/",
"tags": ["productivity","writing"],
"date": "Aug 22nd, 2012",
"ts": "1345658400",
"summary": "George Entenman recently wrote a blog post where he expressed confusion over some of the things I talk about, build, or endorse. I wanted to take a moment to respond as I m sure he s not alone in this. It s ok, I m constantly confused. It s what drives me to look for and create solutions. I m getting confused because I can t tell what all these apps are for or how exactly they differ. I don t want to use more apps than necessary. As I say often, I m a fan of the right tool for the job, even if that means using more tools than I d hoped would be necessary. That s not to say that I don t appreciate a good multi-function tool, but you ll find that most of the tools I espouse do One Thing Well 1 . My only requirements for any tool are that its data be compatible with my other tools (usually plain text) and that I can search it (usually with Spotlight) along with everything else. In fact, by the time this post is done I ll probably have introduced a dozen more apps to the mix. They work together for me, personally, but I point them out not with the expectation that you ll adopt every one, but to provide options for honing your own workflow and organization setup. To directly answer the statement, though, I accept that I tend to gloss over the use cases when presenting new tools. I (usually errantly) expect everyone to just see the practical uses and possibilities without my having to detail them. That s not always fair, and I accept it as constructive criticism even if it wasn t meant as criticism at all. I want to search through my documents the way nvALT does. But I don t want to use a monolithic database to store them. Most worthwhile search tool are going to create a database index of your files and their content. You can (and I often do) use tools like , and on the command line to find what you re looking for. Something like Spotlight, though, functions as that monolithic database while still keeping all of your text free to roam around. Almost all of the tools I use store plain text files or have the ability to export them easily. Apps like Found and Spotlight make it possible to search quickly (relatively, in Spotlight s case) through all of these files. Where Spotlight fails, tools like nvALT provide a way to search a specific type of information. I usually know what bucket to look in, and can pick the best search tool for that type of data. It doesn t make sense to me to store, for example, Day One type journal entries in with",
"keywords": ["command","interface","javascript","markdown","multimarkdown","spotlight","ascii","almost","anyone","brett","byword","collapsing","composer","discount","entenman","expert","first","foldingtext","found","george","gruber","guide","hopefully","javascript","lastly","markdown","marked","moving","multimarkdown","notational","openmeta","personally","python","response","since","software","spotlight","terpstra","trademark","turning","users","velocity","where","ability","above","accept","access","accessible","across","added","addressed","adopt","advanced","allowing","allows","alone","amazing","another","answer","anyone","apply","appreciate","approach","arises","attach","attachments","automatically","automation","available","avoid","baffle","barely","based","bathes","because","behind","binary","blogging","blogs","bonus","bucket","build","calendar","capability","certain","closer","collapsable","collapsed","collapsing","collection","comes","coming","command","compatible","complex","confused","confusion","constantly","constructive","consuming","content","convention","conventions","conversion","conversions","convert","converting","covered","create","creating","criticism","cross","daily","database","dates","decide","detail","dictate","differ","differently","digit","digress","directly","display","documents","doesn","doing","dozen","drives","easier","easily","editing","editor","editors","efficiently","elegant","endorse","engine","enhance","entries","errantly","especially","espouse","eventually","everyone","everything","example","exist","expansion","expect","expectation","explaining","export","exports","expressed","extensions","external","extract","fails","familiar","favorite","feature","features","filename","files","first","followed","format","formats","friends","function","functions","george","getting","giant","gloss","going","great","guarantee","harder","having","headers","headline","honing","hoped","imagine","improve","improvements","including","index","indexed","individual","information","intimately","introduced","journal","keeping","kramdown","landing","later","leave","level","lightning","likes","links","little"]
},{
"title": "Lucky Duck",
"url": "/2012/08/22/lucky-duck/",
"tags": ["markdownservices","scripting","service"],
"date": "Aug 22nd, 2012",
"ts": "1345634460",
"summary": "I ll admit I m a bit perturbed by the disappearance of all of the decent web search APIs (Yahoo, Google, Live.net, Bing went paid ). Google Ajax Search is still active, I think, but I don t like working with it from the desktop. So I m back to scraping, though this is some pretty light scraping. As a result of constantly disappearing APIs, my auto-linking tools keep breaking. So I built yet another, for however long it will last. I m using the backslash feature on DuckDuckGo to do this. That feature lets you start any query with a " and will automatically redirect to the first result. So I m taking the redirect page in as a variable and scraping it for the target link. I ve updated the Markdown Service Tools Auto-link Web Search Service to use this. This service lets you select text, search the web and replace it with a Markdown link to the first result. You can download the updated version on the project page . Here s the code. It s as simple as can be, and you re free to modify it and change the output format (or whatever you like):",
"keywords": ["duckduckgo","engine","google","search","yahoo","duckduckgo","google","markdown","search","service","tools","yahoo","active","admit","another","automatically","backslash","breaking","built","change","constantly","decent","desktop","disappearance","disappearing","download","feature","first","format","however","light","linking","modify","output","perturbed","project","query","redirect","replace","scraping","search","service","simple","taking","target","think","tools","updated","using","variable","version","whatever","working"]
},{
"title": "Systematic Episode 6 with Merlin Mann",
"url": "/2012/08/21/systematic-episode-6-with-merlin-mann/",
"tags": ["podcast","systematic"],
"date": "Aug 21st, 2012",
"ts": "1345577520",
"summary": "I had the pleasure of hosting Merlin Mann 1 for episode #6 of Systematic . Advance warning, it s longer than an hour. You ll live though, and it s my sincerest hope that you have a good time doing it. Good advice, good tips and good quotes ( I bought this domain name, and I was lucky to get it. Or unlucky. Or drunk. ). I d love to hear what you think, so hit me up on Twitter or send me some ideas and suggestions . Thanks to everyone who s been in touch already! I m pretty sure there aren t many people who would both listen to my show and not at least know of Merlin. However, I have been surprised many times to find that personalities I think of as ubiquitous in the tech world not being known by people in the tech world. It s a big world, I guess. Here s a link , just in case.",
"keywords": ["allen","communities","david","getting","merlin","networking","online","social","twitter","wikipedia","however","merlin","systematic","thanks","twitter","advice","bought","doing","domain","drunk","episode","everyone","guess","hosting","ideas","listen","longer","lucky","people","personalities","quotes","sincerest","suggestions","surprised","think","times","touch","ubiquitous","unlucky","warning","world"]
},{
"title": "Quick Tip: Trackpad rule of thumb",
"url": "/2012/08/18/quick-tip-trackpad-rule-of-thumb/",
"tags": ["macos","quicktip"],
"date": "Aug 18th, 2012",
"ts": "1345324500",
"summary": "This tip is not highly technical, but may be of use to you if you use a trackpad on your Mac, be it laptop or Magic Trackpad. It came up while talking to Rabbi Eric Linder about workflows a seemingly mundane problem, but it struck a chord with me because I had the same issue when I first got my Magic Trackpad. The problem is that if you click and drag something, you quickly run out of space on the trackpad, and letting go to reposition your fingers means dropping your file. The solution is simple: begin the drag by clicking the file or object with your thumb (position the cursor then press down with your thumb), and then use your fingers to move it. As long as you don t lift your thumb up, the dragged items won t drop. You can also use multi-touch gestures while holding items under your thumb, swiping between spaces, hiding and showing the desktop, etc. Once this action begins, your thumb no longer registers (try picking up with your thumb, swiping with your fingers and then sliding your thumb aorund nothing). Yoink , which I reviewed on TUAW 1 a while ago fills in some blanks when dealing with more complex drags or where you want to gather multiple files from separate drags. This tip covers the main bases, though. It was actually a comment on the review that made me realize this was possible. It didn t dampen my enthusiasm for Yoink, but it made me much less disappointed in my Magic Trackpad s default behavior.",
"keywords": ["macintosh","magictrackpad","multi","touch","touchpad","linder","magic","rabbi","trackpad","yoink","action","aorund","bases","because","begin","begins","behavior","between","blanks","chord","click","clicking","comment","complex","covers","cursor","dampen","dealing","default","desktop","disappointed","dragged","drags","dropping","enthusiasm","files","fills","fingers","first","gather","gestures","hiding","highly","holding","items","laptop","letting","longer","multi","multiple","mundane","nothing","object","picking","position","possible","press","problem","quickly","realize","registers","reposition","reviewed","seemingly","separate","showing","simple","sliding","solution","space","spaces","struck","swiping","talking","technical","thumb","touch","trackpad","under","where","while","workflows"]
},{
"title": "Web excursions: August 17, 2012",
"url": "/2012/08/17/web-excursions-august-17-2012/",
"tags": ["bookmarks"],
"date": "Aug 17th, 2012",
"ts": "1345238280",
"summary": "Links of interest from August 12, 2012 through August 17, 2012: Command Line Tutorials - Sed Awk Because it s never too late to learn the classics. Like my great grandfather always said, string manipulation on the command line is an essential skill for anyone tooling around in the shell. Blogging from stdin I ve been working along the same lines as Dr. Drang, but also trying to port as much functionality as I can from the Blogsmith Bundle to more universally accessible utilities. My next step is a static site, though, so the actual posting utilities are going to get a lot simpler for me. EventScripts Already having fun with this as a replacement for my old HomeControl script. The iOS companion is free. CSS Style Guides A great collection of CSS styleguides by Chris Coyier. Path Completion (bash) The FIGNORE tip in here is, for me, awesome. Thanks Allan.",
"keywords": ["cascading","chris","command","coyier","formats","guide","interface","sheets","standard","streams","style","allan","because","blogging","blogsmith","bundle","chris","command","coyier","drang","eventscripts","fignore","guides","homecontrol","links","style","thanks","tutorials","accessible","anyone","awesome","classics","collection","command","companion","essential","functionality","going","grandfather","great","having","interest","learn","manipulation","posting","replacement","script","shell","simpler","skill","static","stdin","string","styleguides","through","tooling","trying","universally","utilities","working"]
},{
"title": "On App.net",
"url": "/2012/08/17/on-app-net/",
"tags": ["social","twitter"],
"date": "Aug 17th, 2012",
"ts": "1345224720",
"summary": "Twitter was a great idea. It wasn t alone, but it s the only micro-blogging platform that stood the test of time. I knew them all, thanks to an old app I wrote called MoodBlast. If you ve never heard of it, you re probably in good company. Suffice to say that it was a way to post to Plurk, Pownce, Facebook, Twitter and others in one stroke. Only two of the nine services it worked with survived in any meaningful manner. I contend that If it weren t for Twitter s API both early on and the more developed versions that followed it never would have gained the initial traction it needed. Third-party developers made Twitter. Now it s packed with mundane, moronic and even violent users that Twitter plans to use to pay its bills. Those of us who saw a meaningful form of information dispersal are being asked, indirectly, to move on. Enter App.net . It s a ballsy startup well-timed and with the potential to offer a landing spot for those of us who just don t want to be a part of what Twitter has made evident it wants to become. I m a financial backer of App.net now, and I have hopes for their future. I don t know where it will be in a year, but I m willing to find out. App.net is attracting the developers that Twitter built its micro-blogging empire on. The developers whose initial excitement and continued support made it a household name and part of the tech vocabulary 1 . I hope that such a foundation is sufficient to provide a service with enough adoption to replace the resource that Twitter has become for me (and for many of us). The Twittersphere is by far my most valuable source of information and knowledge (or at least links to knowledge). I m fine with losing Twitter, but I don t want to lose that resource. App.net won t kill Twitter. The masses of users who create the trending topics that make me sad every time I dare to peek will continue to generate profit for them. In the way that Pinboard killed Delicious for me, I think that App.net will fill a void for those of us who use these services differently from the general public. Maybe it will be more, but if the Twitter users I trust and depend on as information sources make the switch, it will be all I need. If you re already part of the App.net crowd, I m (as usual) ttscoff over there. I haven t begun using it in earnest as of this moment, but intend to move as much conversation there as possible over the coming months. We ll see how it turns out. A better name has to be found.",
"keywords": ["facebook","interface","microblogging","network","plurk","pownce","programming","social","twitter","appdotnetted","delicious","enter","facebook","maybe","moodblast","pinboard","plurk","pownce","suffice","third","twitter","twittersphere","adoption","alone","asked","attracting","backer","ballsy","begun","bills","blogging","built","called","coming","company","compete","contend","continue","continued","conversation","create","crowd","depend","developed","developers","differently","dispersal","earnest","empire","enough","evident","excitement","financial","followed","found","foundation","gained","general","going","great","haven","heard","hopes","household","indirectly","information","initial","killed","knowledge","landing","links","losing","masses","meaningful","micro","moronic","mundane","needed","offer","others","packed","party","plans","platform","possible","potential","profit","public","replace","resource","service","services","source","sources","startup","stood","stroke","support","survived","switch","thanks","think","timed","topics","traction","trending","ttscoff","turns","tweeted","users","using","valuable","vernacular","versions","violent","vocabulary","wants","weren","where","whose","willing","worked","wrote"]
},{
"title": "Systematic #5",
"url": "/2012/08/14/systematic-5/",
"tags": ["podcast"],
"date": "Aug 14th, 2012",
"ts": "1344973560",
"summary": "Wherein I discuss an array of topics with Joe Workman . We mull over work and relaxation, web development, movies and go into too much technical detail on a few subjects. It was great talking to Joe, we seem to have a lot in common. For example, we both chase squirrels down rabbit holes in efforts to save humanity from droll tasks. Check out the latest Systematic at 5by5 .",
"keywords": ["design","development","frameworks","podcast","programming","studios","check","systematic","wherein","workman","array","chase","common","detail","development","droll","efforts","example","great","holes","humanity","latest","movies","rabbit","relaxation","squirrels","subjects","talking","tasks","technical","topics"]
},{
"title": "TextMate 2 bares its code",
"url": "/2012/08/09/textmate-2-bares-its-code/",
"tags": ["textmate"],
"date": "Aug 9th, 2012",
"ts": "1344536460",
"summary": "So, yeah, TextMate 2 is Open Source (GPL 3). I have no idea what this ultimately means or indicates. I stopped following the list a while back, just because it was overload at the time, so I don t know if there s a backstory I missed. I m just putting it out there because I feel like it needs a mention. But there s no comment or speculation coming from this blog.",
"keywords": ["languages","programming","source","sublime","textmate","twitter","source","textmate","backstory","because","coming","comment","indicates","mention","missed","needs","overload","putting","speculation","stopped","while"]
},{
"title": "New TextExpander tools for bitly and CloudApp",
"url": "/2012/08/09/new-textexpander-tools-for-bitly-and-cloudapp/",
"tags": ["snippet","textexpander","tools"],
"date": "Aug 9th, 2012",
"ts": "1344517260",
"summary": "I added a couple of new snippets to the Tools section of the TextExpander tools this morning. One expands bit.ly urls, and one grabs the direct link to a Cloud.app upload. There s more information on the tools at the project page , and you can download or update the Tools group from the te-snippets page . You do, of course, need TextExpander to make use of these.",
"keywords": ["apple","cloudapp","dropbox","howbert","iphone","locator","resource","textexpander","cloud","cloudapp","expand","textexpander","tools","added","clipboard","commands","couple","default","direct","download","expands","grabs","group","information","morning","preferred","prefix","project","section","snippets","tools","upload"]
},{
"title": "Web excursions: August 7, 2012",
"url": "/2012/08/08/web-excursions-august-7-2012/",
"tags": ["bookmarks"],
"date": "Aug 8th, 2012",
"ts": "1344459300",
"summary": "Links of interest from July 28, 2012 through August 7, 2012: mperham/lunchy I should just start a weekly One Thing Well column and repost some of the amazing things Jack finds. This utility for simplifying the command has already saved me 15 minutes, and I only found it 20 minutes ago. Standard and retina display sprites with compass If you re using Compass/Sass, it s time to figure this out. Fiddle Sticks I have always admitted to fiddling incessantly, and have considered it a worthwhile trait. Nice to see someone stand up for the fiddlers in a more eloquent fashion. Thanks Gabe. Archy - Bringing Google Drive to the humans Wow. This is what the Google Drive app should have been. Wonder if they ll buy these guys, too",
"keywords": ["bowed","drive","fiddle","fiddling","google","music","stringed","strings","violin","archy","bringing","compass","drive","fiddle","google","links","standard","sticks","thanks","wonder","admitted","amazing","column","command","compass","considered","display","eloquent","fashion","fiddlers","fiddling","figure","finds","found","humans","incessantly","interest","lunchy","minutes","mperham","repost","retina","saved","simplifying","sprites","stand","through","trait","using","utility","weekly","worthwhile"]
},{
"title": "Systematic Episode 4 with the Day One crew",
"url": "/2012/08/07/systematic-episode-4-with-the-day-one-crew/",
"tags": ["podcast","systematic"],
"date": "Aug 7th, 2012",
"ts": "1344372840",
"summary": "I got to talk with Paul and Ben creators, designers and developers of Day One for this episode of Systematic . We talked about Day One, of course, and about design motivation, creativity in coding and how working within confines is a freeing experience.",
"keywords": ["business","creativity","systematic","coding","confines","creativity","creators","design","designers","developers","episode","experience","freeing","motivation","talked","within","working"]
},{
"title": "You won Day One",
"url": "/2012/08/06/you-won-day-one/",
"tags": ["giveaway","macos"],
"date": "Aug 6th, 2012",
"ts": "1344312180",
"summary": "Over 250 entries showed up for the Day One giveaway . Thanks to everyone who entered, below are the names of the lucky 10 winners (with links to the original comment to confirm that it is or is not you 1 ). I contacted the winners this afternoon and sent out promo codes. I ve heard back from most of you, but if you re on this list and haven t seen the email with your codes, let me know . Also, I promise to stop putting YOU WON in the subject lines to help avoid getting tossed into the spam folder 2 . A GMail filter takes all comment notification emails from that post and adds a unique label A smart folder is set up in Mail.app that shows all of these emails I select all and run the PickWinners script Asks me for the Application name Asks me to paste the available codes, 1 (bundle or code) per line Parses out the name, comment id, IP address and email address from each comment Removes duplicate emails and repeat IPs Passes the complete list, App name and codes to an embedded Ruby script Counts codes and generates 10 random, non-repeating numbers between 1 and the number of codes in the list Sorts the array based on a random seed Grabs the elements from the array at the indexes of the generated random numbers Creates a Mailto: link with the name, email, subject and body containing the app name, congratulations message and promo code. Opens the links in the default Mail application Stores a copy of the links as an HTML file as a backup Lastly, since he won, I will respond to Hawken Rives questions from his comment: I try to avoid syntax unique to just one flavor of Markdown, and 90% adhere to Gruber s original Markdown spec. I make exceptions for tables and fenced code blocks, but not much else at least in cases where I want the document to be readily usable in the future. The fact of the matter, though, is that these plain text formats are so easily parseable in any language that even making up your own syntax (within reason) would give you future-proof documents. Random. Entirely. See above. I am a product of my environment (and several chemical imbalances). In this circumstance, that s more useful in cases like Jean and Thomas than with Faraz Yashar or Hawken Rives. There may be more than one Brett Terpstra in the world (there are), but I don t believe you ll ever find another Aditi Azizi Czarnomski Terpstra (best wife in the world). From now on,",
"keywords": ["address","email","frost","james","markdown","aditi","almohsen","azizi","brett","counts","creates","czarnomski","entirely","faraz","frost","gmail","grabs","gruber","hawken","hemant","james","jangid","lastly","mailto","markdown","michl","opens","parses","passes","pickwinners","plattner","random","removes","rives","sorts","stores","terpstra","thanks","thomas","yashar","above","address","adhere","afternoon","another","array","available","avoid","backup","based","believe","below","between","blocks","bundle","check","chemical","circumstance","codes","comment","confirm","congratulations","contacted","containing","default","determines","document","documents","double","duplicate","easily","elements","email","emails","embedded","entered","entries","environment","everyone","exceptions","explanations","fenced","filter","flavor","folder","formats","generated","generates","getting","giveaway","haven","heard","imbalances","indexes","label","language","links","lucky","magical","making","message","missed","names","notification","numbers","original","parseable","paste","product","promise","promo","proof","putting","questions","random","readily","repeat","repeating","respond","robot","script","selected","several","showed","shows","since","smart","sweepstakes","syntax","tables","takes","tossed","unique","usable","useful","where","windows","winners","within","wondering","world"]
},{
"title": "KINDER SURPRISE: EXCLUSIVE UNBOXING VIDEO",
"url": "/2012/08/05/kinder-surprise-exclusive-unboxing-video/",
"tags": ["humor","personal"],
"date": "Aug 5th, 2012",
"ts": "1344184500",
"summary": "That s right, brettterpstra.com got its hands on a Kinder Surprise . Illegal to sell in the US, this Italian technology is difficult to procure. Our UK connections smuggled the confection back for us, and we re bringing you the exclusive unboxing. This is what happens when nerds have a date night that doesn t involve movies. Aditi isn t a computer nerd. She s a nerd, but she nerds out on animals and books more than her iPhone. While looking for a project we could spend some time together on, I showed her an iPhone unboxing video. I personally think unboxing videos are ridiculous. It only took Aditi a few minutes of watching painful details of electronics packaging and accessories to agree. Our friends Joe and Lizz brought us Kinder Surprises back from their trip to Europe. We decided to unbox one. There are surprises in the video for more than just kinders. Aditi stars as the nerdy unboxer, I run A/V. Made on an iPad using iMovie and iStopMotion .",
"keywords": ["aditi","chocolate","collecting","imovie","iphone","kinder","recreation","surprise","wheels","aditi","europe","illegal","italian","kinder","surprise","surprises","while","accessories","agree","animals","books","brettterpstra","bringing","brought","computer","confection","connections","decided","details","difficult","doesn","electronics","exclusive","friends","hands","happens","imovie","iphone","istopmotion","involve","kinders","looking","minutes","movies","nerds","nerdy","night","packaging","painful","personally","project","ridiculous","right","showed","smuggled","spend","stars","surprises","technology","think","together","unbox","unboxer","unboxing","using","video","videos","watching"]
},{
"title": "Quick Tip: Checking for modifier keys in shell scripts",
"url": "/2012/08/05/quick-tip-checking-for-modifier-keys-in-shell-scripts/",
"tags": ["quicktip","scripting","shell"],
"date": "Aug 5th, 2012",
"ts": "1344179040",
"summary": "Yesterday I found a handy little command line utility for checking whether a modifier key is held down. It s great for scripting of all kinds. The solution came from this post on the Apple Mailing List: The code compiles into a little utility called . Here s a version compiled on Mountain Lion that you can download if you don t have the developer tools installed: keys.zip . If you do have or and the Carbon framework available, run this to compile: Move the resulting file into and make sure that s in your path. Now, from a shell script (or with AppleScript s command), you can run something like to see if the Option key is held down at the time. If you put a before it in a shell script, you can press a modifier key at runtime and change the behavior accordingly. As an example, here s the AppleScript for launching your Dock apps from the other day, with the ability to exclude certain apps if the Option key is held down:",
"keywords": ["apple","applescript","console","cougar","development","macintosh","script","shell","apple","applescript","carbon","mailing","mountain","yesterday","ability","available","before","behavior","called","certain","change","checking","command","compiled","compiles","developer","download","example","found","framework","great","handy","installed","kinds","launching","little","modifier","press","resulting","runtime","script","scripting","shell","solution","tools","utility","version"]
},{
"title": "Social Logging by any other name would have a better name",
"url": "/2012/08/04/social-logging-by-any-other-name-would-have-a-better-name/",
"tags": ["logging","slogger"],
"date": "Aug 4th, 2012",
"ts": "1344116700",
"summary": "I m prepping for a very busy week next week, and I won t be able to put any more time into this project for a bit. I wanted to share it, though, so I present to you in a beta state Slogger. Yes. Slogger. Slogger is short for Social Logger. It s a horrible name. Horrible. This is by design. I don t want you to like it very much because I m not going to be supporting it. You are free to play with it, modify it, ruin your lives with it, but you re on your own for now. I will answer occasional Twitter and email questions. I can t help doing it. It s why I m going to die young 1 . What is it, already? This is an extensible system for logging your online social life using Day One . You remember Day One, right? I just wrote about it . I ve been doing a lot of automated logging to Day One for nerdy, worky stuff. I wanted my journal to be a little more colorful without any extra effort on my part 2 . So this is how I m doing it. Turns any image you can grab with IFTTT into a log entry using Hazel, Folder Actions or launchd (built in to Mac OS X). Checks multiple Twitter Feeds for new, non-reply updates and favorites This happens every 24 hours as a digest to avoid flooding your log (because we all talk too much) If it finds recognized image links in these posts, they become their own post with image. It will convert all links found in the text into Markdown, which displays quite nicely in Day One It will check any number of RSS feeds for new posts, primarily intended to log your own posts on your blog or blogs you write for. If you can pull a feed of it, you can log it The first image in the post will be added to the entry for that post Entries are dates by their publish date, not the time the script runs If you give it a Last.fm username, it will grab your playlist and loved tracks for the day If you give it a Github Gist username, it will create links to any Gists you ve posted for the day Using IFTTT, you can grab Instagram, Flickr, Facebook and other images for adding. You can even have it add a picture when someone tags you in a Facebook photo. Assuming you don t have a bunch of jackass friends who tag you in pictures that are completely unrelated to your life, that can be pretty cool. No strangers. No one sees this journal but you, and there are no passwords or authentication required. This is because it only works with public data. Your personal private stuff should probably be entered in your own journal,",
"keywords": ["droplr","facebook","flickr","github","icloud","ifttt","twitter","actions","assuming","build","checks","danger","download","dropbox","droplr","entries","everything","facebook","feeds","flickr","folder","gists","github","github","hazel","horrible","however","ifttt","instagram","journal","lingon","logger","markdown","markdownify","scheduling","seriously","slogger","social","store","stranger","terminal","turns","twitter","using","activity","added","adding","adjust","again","allows","alone","answer","anywhere","authentication","automated","automatically","avoid","aware","because","begun","below","between","binary","blank","blogs","borrowed","built","bunch","cannot","certain","changes","check","checking","clean","clear","colorful","command","comment","comments","completely","config","configuration","constructed","convert","count","create","creating","custom","daily","dates","dayone","design","development","diaries","digest","digests","directly","dirty","displays","doing","domain","download","drive","easily","editing","editor","effort","either","email","enter","entered","entries","entry","especially","eventually","everything","extensible","extra","favorites","feeds","fields","figure","figured","files","finds","first","flooding","folder","forget","forgot","found","friends","gathers","getting","going","great","guarantee","guarantees","handled","hands","happen","happened","happens","haven","hopefully","horrible","hours","however","icloud","image","images","implemented","important","inserted","install","installer","instantly","intended","itself","jackass","journal","journals","launchd","leave","leaving","links","little","lives","logging","looks","loved","maintainability","mention","mentioned","method","modify","moving","multiple","necessary","needed","neither","nerdy","nicely","noted","occasional","online","options","original","package","palms","pants","passwords","people","personal","photo","picture","pictures","planned","playlist","plenty","point","posted","posts","preference","prepping","primarily","private"]
},{
"title": "Mountain Lion Paparazzi!",
"url": "/2012/08/04/mountain-lion-paparazzi/",
"tags": ["appreview","productivity"],
"date": "Aug 4th, 2012",
"ts": "1344098220",
"summary": "I m not sure why, but it warms my heart to see an update to Paparazzi! . This has long been a useful tool and I had assumed that it would eventually die off. The latest version came out yesterday with the usual Mountain Lion goodies. Paparazzi! is a tool for capturing web pages in their full length. There are a bunch of tools that do this, and some are amazing at organization and storage as well (such as LittleSnapper ). Paparazzi!, however, stole my heart long ago with the ability to just hand me vector PDFs that are searchable in Spotlight, annotatable in Skim et al, and, of course, taggable and sortable with the extra metadata fields available in the PDF format. I like all of that because it doesn t lock me into a database or confine how I can use the resulting files. I don t store as many PDFs as I once did, but when I do, I want them to be usable for search and organization. You can also output PNG and JPEG files, if you need to. There are $15-50 apps doing the same thing, and none of them handle this simple task as well or with as much flexibility as Paparazzi! does for free. The new version has more batch capabilities, native full screen mode and Mountain Lion s sharing options. It still has the same awesome AppleScript library that it s had for a long time, as well as a set of Automator actions. You can actually just feed it a list of urls in plain text form and have it capture and file all of them for you, but I enjoy the scripting flexibility. I even built it into the Pinboard OpenMeta system so you can add a tag to a Pinboard bookmark and end up with a filed, searchable PDF locally. Paparazzi! is, by the way, free. I ve used it since about 2005, if I recall correctly. I made another donation today (finally, it s been at least 4 years). If you dig it, you should consider doing the same. It s odd to see a small app from an indie developer stay alive this long, but I m thankful it has. Great stuff.",
"keywords": ["applescript","bieber","graphics","justin","littlesnapper","london","network","paparazzi","portable","applescript","automator","great","littlesnapper","mountain","openmeta","paparazzi","pinboard","spotlight","ability","actions","alive","amazing","annotatable","another","assumed","available","awesome","batch","because","bookmark","built","bunch","capabilities","capture","capturing","confine","consider","correctly","database","developer","doesn","doing","donation","enjoy","eventually","extra","fields","filed","files","finally","flexibility","format","goodies","handle","heart","however","indie","latest","length","library","locally","metadata","native","options","organization","output","pages","recall","resulting","screen","scripting","search","searchable","sharing","simple","since","small","sortable","stole","storage","store","stuff","system","taggable","thankful","today","tools","usable","useful","vector","version","warms","years","yesterday"]
},{
"title": "Launching your entire Dock at once",
"url": "/2012/08/03/launching-your-entire-dock-at-once/",
"tags": ["macos","scripting","terminal"],
"date": "Aug 3rd, 2012",
"ts": "1344041460",
"summary": "I keep my Dock very trim. The only apps that have a permanent home there are apps that I either have to have running all day, or apps that I choose to have running all day. However, I don t make them launch items. Booting up can be slow enough without trying to launch five heavy apps at the same time that everything else is loading. More often than not, I need them all at once (Adium, Skype, Twitter, Mail, Sublime Text, iTerm 2 right now, if you re wondering). I ve been thinking for a while that I should write a quick AppleScript to just launch them all at once. Then I thought about how much my app selection changes over time, and the minutes of my life I would lose maintaining such a script. Then, I realized that the Dock itself could be a dynamic launch group. With the way I use my Dock, it makes perfect sense to just launch whatever is in the Dock at the time that hasn t already launched. The Dock happens to store a list of all of its permanent residents in a the defaults system, and you can read them out and run the ever handy command on the list. It s so easy it s a one-liner that can be scripted into a LaunchBar or Alfred command, run with FastScripts at the push of a button or even wrapped up and made into a Desktop button 1 . Here s the script, broken out for readability: reads out the array stored in the key, pulls out just the lines with the bundle ids, extracts the ids and cleans out semicolons and quotes. The result of that part looks like this (for me ): Then the shell script just passes one line at a time to the OS X-specific command. The option tells it I m passing a bundle id, and the -g launches the apps in the background so I can keep working on whatever I might be doing without interruption. There s also a option to launch the apps completely hidden. As a side note, one other command option of interest is , for opening applications fresh without restoring their windows. It doesn t work with every app (Sublime Text 2 is incorrigible in that regard), but it s handy most of the time. I don t recall seeing it in Lion, but I could be wrong.",
"keywords": ["adium","applescript","fastscripts","launchbar","skype","sublime","twitter","adium","alfred","applescript","booting","desktop","fastscripts","however","keith","launchbar","skype","smiley","sublime","twitter","applications","array","background","broken","bundle","button","changes","choose","cleans","command","completely","defaults","definitely","doesn","doing","dynamic","either","enough","everything","extracts","fresh","group","handles","handy","happens","heavy","hidden","iterm","incorrigible","interest","interruption","items","itself","launch","launched","launches","liner","loading","looks","maintaining","makes","minutes","modified","offers","often","opening","passes","passing","permanent","pulls","quick","quotes","readability","reads","realized","recall","residents","restoring","right","running","script","scripted","seeing","selection","semicolons","sense","shell","sleep","slightly","specific","store","stored","system","talking","tells","thinking","thought","trying","version","whatever","while","windows","wondering","working","wrapped","write","wrong"]
},{
"title": "A drop-in growlnotify replacement for Mountain Lion notifications",
"url": "/2012/08/02/a-drop-in-growlnotify-replacement-for-mountain-lion-notifications/",
"tags": ["growl","macos","scripting"],
"date": "Aug 2nd, 2012",
"ts": "1343926800",
"summary": "I use the Growl Extra in a lot of my scripts to offer notifications while they run in the background. It works great, and still works with Mountain Lion, but I have a thing for system integration and new shiny. I had considered doing a massive search and replace on my scripts to substitute the utility for instances of , but I hold out hope that Growl will do the integration directly, eventually. In the meantime I just wrote a replacement for growlnotify that takes the exact same parameters and sends them to terminal-notifier instead. Next, save the script below as , make it executable and replace (your location may vary) with it. Your existing tools should just work, now, without need for apps like Hiss .",
"keywords": ["cougar","growl","languages","mountain","programming","python","extra","growl","mountain","background","below","considered","directly","doing","eventually","exact","executable","great","growlnotify","installed","integration","location","massive","meantime","notifications","notifier","offer","parameters","replace","replacement","script","scripts","search","sends","shiny","substitute","system","takes","terminal","tools","utility","while","works","wrote"]
},{
"title": "Celebrate the Day One updates with a free copy!",
"url": "/2012/08/02/celebrate-the-day-one-updates-with-a-free-copy/",
"tags": ["dayone","giveaway","macos"],
"date": "Aug 2nd, 2012",
"ts": "1343905200",
"summary": "While my uses for it may be unconventional , I m a fan of Day One for journaling and logging on Mac and iPhone/iPad 1 . I ve been beta testing new versions for both and am excited to announce they re finally available! There are some great new features on both platforms. The iOS apps are even better looking, and the iCloud sync is solid. You can add locations from GPS or photo metadata to your entries even weather conditions and temperature. Also, Camera+ integration is awesome. The Mac version adds Retina graphics and Mountain Lion compatibility updates, new font styles, Dropbox improvements, great full screen view and more. My favorite improvement is probably the ability to handle images. It s inspired a whole new project . Both platforms sport improved Markdown features, and the editors on both are robust Markdown writing tools now. iOS versions now include word and character counts, and the extra keyboard row is swipeable , revealing additional buttons (a la Byword iOS ). Whether you keep a diary, journal your thoughts or log your day, this is an awesome update to a great app. You may have heard that Day One had to remove the built-in command line tool for the App Store. Don t fret, it s available as a download at Day One and has some new features as well! (as of this moment the download is broken, but keep watching) Thanks to the fine folks at Bloom Built, I m celebrating the release by giving away 10 pairs of promo codes for the Mac ($4.99) and iOS ($4.99) versions. If your comment is selected in the random drawing, you ll receive the full package for logging and journaling wherever you are. Just leave a note below to be entered in the sweepstakes. Winners will be randomly chosen at noon on Monday, Aug 6th, 2012. Good luck! Screenshots and details can be found on the Day One homepage . Stay tuned for winners, and I ll soon be sharing my system for logging all of your online social endeavors to your Day One journal. Entrants must be at least 13 years of age. Residents of Canada may not enter the sweepstakes. Sorry, I don t make the rules. Affiliate links. Guy s gotta eat.",
"keywords": ["apple","canada","icloud","iphone","macintosh","markdown","store","affiliate","bloom","built","byword","camera","canada","dropbox","entrants","markdown","monday","mountain","residents","retina","screenshots","sorry","store","thanks","while","winners","ability","announce","available","awesome","below","broken","built","buttons","celebrating","character","chosen","codes","command","comment","compatibility","conditions","counts","details","diary","download","drawing","editors","endeavors","enter","entered","entries","excited","extra","favorite","features","finally","folks","found","giving","gotta","graphics","great","handle","heard","homepage","icloud","iphone","images","improved","improvement","improvements","inspired","integration","journal","journaling","keyboard","leave","links","locations","logging","looking","metadata","online","package","pairs","photo","platforms","project","promo","random","randomly","receive","release","remove","revealing","robust","rules","screen","selected","sharing","social","solid","sport","styles","sweepstakes","swipeable","system","temperature","testing","thoughts","tools","tuned","unconventional","updates","version","versions","watching","weather","wherever","whole","winners","writing","years"]
},{
"title": "Systematic Episode 3",
"url": "/2012/08/01/systematic-episode-3/",
"tags": ["podcast","systematic"],
"date": "Aug 1st, 2012",
"ts": "1343840040",
"summary": "Episode 3 of my podcast, Systematic, is up on 5by5 now. I was ill and trying to get one in before I lost my voice (which I did), but the cold medicine left me a wee bit scattered. Hopefully my edits pulled the coherent parts together My guest Rabbi Eric Linder was very understanding and patient with me in my sad state. Many thanks to him!",
"keywords": ["dramas","podcast","programs","studios","television","twitter","episode","hopefully","linder","rabbi","systematic","before","coherent","edits","guest","medicine","parts","patient","podcast","pulled","scattered","thanks","together","trying","understanding","voice"]
},{
"title": "Mountain Lion Notifications from Terminal with terminal-notifier",
"url": "/2012/08/01/mountain-lion-notifications-from-terminal-with-terminal-notifier/",
"tags": ["macos","terminal"],
"date": "Aug 1st, 2012",
"ts": "1343829600",
"summary": "Via a post on OneThingWell , I discovered a new Ruby library and accompanying CLI called terminal-notifier . It allows you to quickly interface with Mountain Lion s Notification Center from the command line. will be available as part of the filesystem-watching tool Kicker , but you can put it to use as a general notification system for Terminal right now. The script below is just a quick example that I m using to ping me after a longer-running script finishes, similar to what I was doing with . It does nothing that the terminal-notify CLI doesn t already do, it just wraps the needed syntax in a single command I can run quickly in sequence with other commands when working at the prompt. To run, you need the terminal-notifier gem installed. You can do so with the command: Save it as a file called and drop it in a folder in your path. Use if nothing else. You can also put it in a scripts folder outside of your path (and optionally name it something else), then create a alias that calls it with a full path. You can change or remove the variable and associated call that s what will open when you click a notification. If you use iTerm2, it s good to go. Unless you run in Visor mode with a hotkey, then it s less than useful (I found out). If you use another terminal or want to open something else entirely, put its bundle identifier in there. You can also add an option to the call which, instead of activating an application will open a URL scheme instead. Depending on your project, that could be useful. I m thinking about building an external URL handler for iTerm2 that uses AppleScript to open open specific session ids and terminals, but haven t gotten there yet. The in only useful with commands that return 0 on success and non-0 on fail. A lot of basic commands will just return fail. If you just want to know when it s done, fail or no fail, use: That will use a default message and you ll get whatever notification you assign in Notification Center preferences. Have fun.",
"keywords": ["applescript","command","interface","languages","locator","programming","resource","applescript","center","depending","example","kicker","mountain","notification","onethingwell","terminal","visor","activating","alias","allows","another","assign","associated","available","basic","below","building","bundle","called","calls","change","click","command","commands","create","default","discovered","doesn","doing","entirely","errors","example","external","filesystem","finishes","folder","found","general","gives","gotten","handler","haven","hotkey","iterm","identifier","installed","interface","library","longer","message","needed","nothing","notification","notifier","optionally","outside","permission","preferences","project","prompt","quick","quickly","remove","return","right","running","scheme","script","scripts","sequence","session","similar","single","specific","success","syntax","system","terminal","terminals","thinking","usage","useful","using","variable","watching","whatever","working","wraps"]
},{
"title": "Overthinking it: fast bundle ID retrieval for Mac apps",
"url": "/2012/07/31/overthinking-it-fast-bundle-id-retrieval-for-mac-apps/",
"tags": ["scripting","spotlight","terminal"],
"date": "Jul 31st, 2012",
"ts": "1343768160",
"summary": "Ok, I told the world and myself (in a podcast you haven t heard yet 1 ) that I wouldn t admit to putting time into this, but I kinda like it. Given that you ll probably need it at least once at some point, I might as well share it and save you the time. This is a bash function called (bundle id) that grabs an application ID (strings like com.brettterpstra.marky) for use with things like AppleScript, Cocoa and command line scripting where it s safer to stick with a bundle ID than an application name. It s also perfect for commands. Even for locating preference files you want to trash takes one argument (well, it combines all arguments into one, more on that in a second) and uses Spotlight 2 to find the closest matching Application name to the text you give it. For the sake of speed, it only searches in: The search within those folders is deep, though, so apps that live inside of a folder hierarchy (Adobe) or .localized versions will be picked up. It builds a list of every application in those folders and passes it to 3 . The search string you pass to is turned into a regular expression where spaces in the query will match any string. So scr ner will find Scrivener.app, and tw r will find Twitter.app. 4 It currently maintains the default sort order that returns for this query, which is alphabetical by folder then file. It also uses to chop off the first result to return. Thus, it will always return the first matching file, not necessarily the most likely one for a fuzzy string. It s too time consuming to sort them more accurately and, at least on my system, this hits even the fuzziest string on the first try 90% 5 of the time. So, throw this in your .bash_profile and next time you need a Bundle ID type and revel in the magic. 6 This is not why the podcast is a bit behind schedule. This was before I recorded it. It s late because I m sick and I have a day job. I still love you and hope you ll welcome it with open arms. I initially just added this to my existing app name tab-completion scripts before deciding to make it a custom Spotlight search every time. I honestly don t remember why I decided that wasn t just good enough, but apparently I did. I should log these OC bash scripting sessions in more detail for future study and diagnosis of my mental illness. Yes, I played with including the argument text as part of the query string but actually found the response time slower than just pulling kind: and running it through awk or",
"keywords": ["applescript","command","languages","programming","python","adobe","applescript","applications","bundle","cocoa","developer","fuzzy","scrivener","spotlight","twitter","accurately","added","admit","alphabetical","apparently","argument","arguments","balance","because","before","behind","bleeding","brain","brettterpstra","builds","bundle","called","closest","combines","command","commands","consuming","custom","decided","deciding","default","detail","diagnosis","doing","enough","expended","expression","figure","files","first","folder","folders","footnotes","found","function","fuzziest","fuzzy","grabs","haven","heard","hierarchy","honestly","illness","including","inside","kinda","likely","localized","locating","magic","maintains","marky","match","matching","mental","myself","necessarily","needed","passes","picked","played","podcast","point","preference","profile","proven","pulling","putting","query","realize","recorded","regular","remember","response","return","returns","revel","running","safer","schedule","script","scripting","scripts","search","searches","searching","second","sessions","share","slower","spaces","speed","started","statistically","stick","stopped","string","strings","study","system","takes","through","throw","trash","trying","turned","utility","versions","welcome","where","within","world","wouldn"]
},{
"title": "Geeklet: Multilingual Weather and Forecast",
"url": "/2012/07/31/geeklet-multilingual-weather-and-forecast/",
"tags": ["geeklet","geektool","nerdtool"],
"date": "Jul 31st, 2012",
"ts": "1343741520",
"summary": "The GeekTool Weather and Forecast script has been updated to handle multiple languages and with a system that allows for more languages to be added easily. It comes with Spanish, German, Dutch, Japanese and French. It uses two files now, the main script and a localized file, both in the same folder. You can maintain as many localized settings as you need, and only change the name of the file to load in the main script. Each localized file has its own copy of the main settings that will override what s in the primary config. Just download the package below and put it all in a folder to be referenced from GeekTool. There are sample Geeklet files included, just modify the path to match yours. Then edit the main script () to set a localization file, and edit your settings in that localization file. If you remove the localization file load from the main script, it will function as it used to. To edit a localization file, copy the main to a new file with a country code extension (e.g. weatherlocalization_de.rb ). Then edit the empty strings in the file and optionally change the time format in the last function. Any strings left blank will default to the original English translation. If you build a new translation file, please send it to me for inclusion in the package. Include your name and a link for attribution. There are a couple of other things you could add to this script. I didn t build them in, but if you (or someone you know) knows just a little Ruby, it would be easy to implement them. You could use command line arguments to set the localization file used. That file contains its own configuration settings, so by adding just one command line argument that tells it which file to use, each Geeklet could have a different city, langauge and additional configuration. You can duplicate the same localization file multiple times to get multiple cities without changing languages, as long as the function sets the proper file. You could also just hardcode an array of locations for the $mycity variable and select them via the argument. With a little creative effort, you can make switching between locations automatic. Once you ve set up the various localized settings files, use a function such as Jay posted to dynamically set the localization_file variable. The method he uses also returns a CountryAbbreviation field that you can use to load files ending with _EN, _DE, etc. Then reset the $mycity value immediately after the localization file loads in",
"keywords": ["command","computer","geektool","interface","management","adding","brandon","catalan","changelog","countryabbreviation","custom","daniela","donate","dorand","download","dutch","dynamic","english","expanding","fischer","forecast","french","gallazzi","geektool","geeklet","geeklets","german","guillaume","helge","hopefully","includes","italian","japanese","joanna","kamrowska","kuster","localized","multiple","norwegian","pedro","pittman","polish","published","robin","rosseboe","russian","sebastian","spanish","sweden","swedish","szwac","tilburgs","translator","updated","weather","added","adding","allows","argument","arguments","array","attribution","automatic","because","below","between","blank","build","change","changing","cities","comes","command","config","configuration","contains","country","couple","creative","credits","default","desktop","different","download","downloaded","duplicate","dynamically","easily","effort","empty","ending","extensibility","extension","feature","field","files","folder","forecast","format","function","handle","hardcode","hopefully","icons","included","inclusion","knows","langauge","languages","little","loads","localization","localizations","localized","locations","maintain","makes","match","method","modify","multiple","mycity","optionally","options","original","override","package","people","posted","primary","proper","referenced","remove","replace","reset","returns","sample","script","sense","settings","strings","switching","system","tells","times","translation","updated","value","variable","variables","various","weather"]
},{
"title": "Fixing virtual hosts and web sharing in Mountain Lion",
"url": "/2012/07/28/fixing-virtual-hosts-and-web-sharing-in-mountain-lion/",
"tags": ["macos","webdesign"],
"date": "Jul 28th, 2012",
"ts": "1343514420",
"summary": "Mountain Lion moves web sharing out of the System Preferences interface (and into Mountain Lion Server), and disables Apache by default. Now that there s no button to click to turn it on, you have to do things yourself. I ve seen some of this posted in a few places, but this serves as a note-to-self. If you re looking for instructions on how to set up a local hosting environment, check this post . This is just how to bring one back to life after a Mountain Lion upgrade. If you want an easy way to run multiple local environments and aren t already using the built-in Apache server, you might want to just look into MAMP . To turn Apache on to begin with, you need to run (I ll get to automating that in a minute). If you had a previous setup, you ll probably quickly notice that your virtual hosts aren t working First, make the following edits to . You ll need to authenticate as root (System Admin) to save it. If you need to enable the included PHP 5.3.13, uncomment line 117: To make Apache run all the time you need a way to launch it in the background with root permissions. I m automating this on login using a daemon. I placed a file called in . It s owned by with 644 permissions and contains the following: It has to be owned by root to run automatically without authentication. I m not sure this is the best way to handle this, yet, but it s working. If you ve figured out a better way to keep Apache/httpd running, let me know. My hack that turns my Caps-Lock into an escape key isn t working anymore, either, which is seriously messing up my typical Vim usage. Bollocks to upgrades (he says knowing he can t turn one down). And then I noticed that KeyRemap4MacBook had been updated for 10.8. We ll see how that goes. No go. Doesn t remap anything anymore. Anyone have any ideas? Many thanks to Joel Yeaton for pointing out the solution for PCKeyboardHack . All is right with the caps lock again. In the past Chrome would sometimes go font-haywire, turning everything on screen into inscrutable characters. Quit/ has always fixed, but now it s happening about every 10 minutes. Anybody else seeing this? I hate being the only one.",
"keywords": ["apache","hosts","server","servers","virtual","admin","anybody","anyone","apache","automating","bollocks","chrome","doesn","first","hosts","keyremap","macbook","mountain","pckeyboardhack","preferences","random","server","setup","system","uncomment","virtual","yeaton","again","anymore","authenticate","authentication","automatically","automating","background","begin","beginning","bring","built","button","called","characters","check","click","complaints","contains","daemon","default","disables","edits","either","environment","environments","escape","everything","figured","fixed","handle","happening","haywire","hosting","hosts","httpd","ideas","included","inscrutable","instructions","interface","knowing","launch","local","login","looking","messing","minute","minutes","moves","multiple","noticed","owned","permissions","placed","places","pointing","posted","quickly","remap","remove","right","running","screen","seeing","seriously","server","serves","setup","sharing","solution","sometimes","thanks","turning","turns","typical","uncomment","unrelated","updated","upgrade","upgrades","usage","using","virtual","working"]
},{
"title": "More automated logging: Gists",
"url": "/2012/07/28/more-automated-logging-gists/",
"tags": ["dayone","logging","scripting"],
"date": "Jul 28th, 2012",
"ts": "1343487600",
"summary": "Here we go again with the automated work logging. I decided I wanted to keep a record of my public Github gists in my log as well, with descriptions and links. I use gists a lot these days and they re a good indicator of some of the things I ve been working on outside of my git repositories (which are logged separately ). Gist is a service provided by Github for easily storing and optionally sharing code snippets. All you need is a free Github account, and then there are plenty of tools for integrating it. Create snippets from the command line , create and manage them in Sublime Text 2 , work with them in TextMate and more. You can even use them for posting longer notes by writing in Markdown, creating the gist and taking the id over to Gist.io to have it turned into a fine looking web page . The script only grabs public gists. It looks at the last 10 and if the most recent is from the last 24 hours, it adds it to the list, moving to the next one until the created stamp is beyond 24 hours. If recent gists are found, it adds an entry to my GitLogger nvALT note and makes an journal entry in Day One 1 2 . Both options can be toggled in the config at the top. As with GitLogger, this is set up in launchd to run once a day. See the Scheduling section of the GitLogger post for details on setting up a launch agent for the script (tip: just use Lingon ). Set the variable at the top to your Github user, turn Day One logging on or off with or in the variable, and edit the path in to point to a text file (or to turn off text logging). On my own system I ll likely integrate this into GitLogger and get one unified log entry. I m keeping them separate as I test the results for a few more days and so that it s easier to separate them if you just want to log one type. A couple of configuration or command line options would simplify that, though, so if I decide to go that route I ll post a hybrid script. Technical note: the text entry formatting matches GitLogger s and makes for easy parsing of entries into an array if you need to. A regex to split at and then one to parse the lines into a date object will give you a date-sortable hash to work with. In the gist entries, after the date I added to keep it distinct so I can identify them with a modified version of the above regex and separate Gist entries into another array if I need to. Like most of my Day One scripts recently, this doesn t depend on the binary that comes with Day One. It builds the XML",
"keywords": ["command","github","interface","markdown","store","sublime","textmate","amended","create","gitlogger","github","lingon","markdown","scheduling","store","sublime","technical","textmate","above","account","added","again","agent","another","array","automated","available","beyond","binary","breaking","builds","comes","command","config","configuration","couple","covered","create","created","creating","decide","decided","depend","descriptions","details","distinct","doesn","download","easier","easily","entries","entry","expanded","features","forced","formatting","found","gists","grabs","hours","hybrid","identify","import","indicator","integrate","integrating","journal","keeping","launch","launchd","likely","links","logged","logging","longer","looking","looks","makes","matches","modified","moving","notes","nvalt","object","optionally","options","outside","parse","parsing","photo","plenty","point","posting","public","recent","recently","record","regex","remove","repositories","results","route","script","scripts","section","separate","separately","service","setting","sharing","simplify","snippets","sortable","split","stamp","storing","symlinking","system","taking","toggled","tools","turned","unified","variable","version","wanted","website","working","worry","writing"]
},{
"title": "Quickly restarting apps with LaunchBar (and friends)",
"url": "/2012/07/27/quickly-restarting-apps-with-launchbar-and-friends/",
"tags": ["applescript","macos","scripting"],
"date": "Jul 27th, 2012",
"ts": "1343422800",
"summary": "I ve been using this little trick frequently for a while now. I doubt normal people ever need to frequently restart apps, but when I start working on keybindings and other things that require fresh starts to take effect, it s nice to be able to do so with a couple of keystrokes. Open it in AppleScript Editor and save it as Restart App.scpt . It figures out which app is in the foreground, quits it nicely with AppleScript and then uses the Unix command to relaunch the app. If the apps you re restarting aren t responding quickly enough to the quit command, consider replacing the and lines with the commented line at the end. That ll knock em down. Also, I played for a little while with using AppleScript to re-open the app, but it got frustrating enough that I skipped to just using . There s really no consequence I know of to that method, so why lose hair? Dr. Drang solved this one for me , just needed a little delay between the commands. Increase the delay if needed, the argument is an integer denoting seconds to pause. You can launch this script from any launcher that doesn t take the foreground (FastScripts, LaunchBar, Alfred, QuickSilver, etc.). In most of the aforementioned launchers, you can just pop them up, type and hit enter and your app flashes out and back in. Even if you don t have an immediate need for this, you can have a lot of fun setting it up to run at random intervals on friend s machines. Thanks to Autosave it s practically harmless 1 . It s not. That was my bad sense of humor talking. Do not do it. Why are you poking around on your friend s machine anyway? Seems like you d have better things to do with your time.",
"keywords": ["alfred","applescript","autosave","drang","fastscripts","keyboard","launchbar","quicksilver","shortcut","alfred","applescript","autosave","drang","editor","fastscripts","increase","launchbar","quicksilver","restart","seems","thanks","aforementioned","anyway","argument","between","brilliant","command","commands","commented","consider","couple","denoting","doesn","doubt","enough","enter","figures","flashes","foreground","fresh","friend","frustrating","harmless","humor","immediate","integer","intervals","keybindings","keystrokes","knock","launch","launcher","launchers","little","looks","machine","machines","method","needed","nicely","normal","pause","people","played","poking","quickly","quits","random","relaunch","replacing","responding","restart","restarting","script","seconds","sense","setting","simple","skipped","solved","starts","talking","trick","using","utterly","while","working"]
},{
"title": "Web excursions: July 27, 2012",
"url": "/2012/07/27/web-excursions-july-27-2012/",
"tags": ["bookmarks"],
"date": "Jul 27th, 2012",
"ts": "1343413020",
"summary": "Links of interest from July 25, 2012 through July 27, 2012: Launch Center Pro: An Adoption Strategy For Those Having Trouble Adopting It Great post from Brett Kelly on Launch Center Pro . I m in the same boat, but it s catching on for me. I moved all of the apps I put into it to my last page so that I would be forced to start changing my muscle memory. Glad to say it s working, we ll see if it becomes as indispensible as it initially seemed it would. WriteUp Wanna see something cool? Spend the $3 on WriteUp (a Markdown text editor I reviewed way back when ) and check out the keyboard swipe gestures for moving the cursor and selecting text. It s ridiculously awesome. demon386/SmartMarkdown If you ve been waiting on me to learn enough Python to make something grand out of the MarkdownEditing package for Sublime Text 2, it could be a bit. Luckily, Muchenxuan Tong has done exactly the things I wanted to accomplish: smart lists, table formatting, header navigation and then some I hadn t even considered yet: Pandoc integration and section folding based on headers. It s awesome and it works well right alongside MarkdownEditing. Get it. Hiss For years Growl has been one of the first apps I install on a new Mac. I didn t think notification center would beat it down so quickly, but Hiss just added another nail to the coffin by providing a bridge between Growl-enabled apps and Notification Center with no extra hassle. The app icon doesn t show up (yet), but it works like a charm. I m told the Growl developers have something similar up their sleeve which would be pretty cool. hiddenbek/subl-handler Small app to allow urls to open Sublime Text 2 instead of TextMate. I hacked this to also handle a scheme as well in the hopes that this will be added to ST2 eventually. I ll take my chances.",
"keywords": ["center","editor","growl","markdown","memory","muscle","notification","python","sublime","textmate","adopting","adoption","brett","center","great","growl","having","kelly","launch","links","luckily","markdown","markdownediting","muchenxuan","notification","pandoc","python","small","smartmarkdown","spend","strategy","sublime","textmate","trouble","wanna","writeup","added","allow","alongside","another","awesome","based","becomes","between","bridge","catching","center","chances","changing","charm","check","coffin","considered","cursor","demon","developers","doesn","editor","enabled","enough","eventually","extra","first","folding","forced","formatting","gestures","grand","hacked","handle","handler","hassle","header","headers","hiddenbek","hopes","indispensible","install","integration","interest","keyboard","learn","lists","memory","moved","moving","muscle","navigation","notification","package","providing","quickly","reviewed","ridiculously","right","scheme","section","seemed","selecting","similar","sleeve","smart","swipe","table","think","through","waiting","wanted","working","works","years"]
},{
"title": "wp_mangler, scripted post modification for WordPress",
"url": "/2012/07/26/wp_mangler-scripted-post-modification-for-wordpress/",
"tags": ["wordpress","scripting"],
"date": "Jul 26th, 2012",
"ts": "1343304420",
"summary": "Here s a quick script I was playing around with this morning. I want to do some extensive string handling on all of the posts in my WordPress database. It made the most sense to me to pull each post s content from the db, do the string mangling with a shell script and then replace the post_content field as I go. This script is destructive and any mistakes you introduce could kill your entire blog. Should you have a need for this script, back up first! The script itself is really simple: it just pulls all of the post content and ids from the blog database, runs each one through your processing script and then sticks the result back in the post. The handler is empty here, it s assumed that you ll edit the function to call your own script to suit your needs. As an example, here s a function you can put into the above script that will find all your inline links and turn them into reference links at the bottom of the post. Just for fun. The script requires the sequel and mysql Ruby gems to run. I was able to install these on a Dreamhost server with no problem, but I d recommend just dumping your database to a local mysql server, running the script and testing the result, then uploading it. Assuming you have a local testing environment with a MySQL server Anyway, doubt it s of much use to most of you, but figured I d put it out there.",
"keywords": ["control","database","mysql","protocol","superuser","transmission","anyway","assuming","dreamhost","mysql","wordpress","above","assumed","bottom","content","credentials","database","destructive","doubt","dumping","empty","entire","environment","example","extensive","field","figured","first","function","handler","handling","inline","install","introduce","itself","links","local","mangler","mangling","mistakes","morning","mysql","mysql","needs","playing","posts","problem","processing","pulls","quick","recommend","replace","requires","running","script","sense","sequel","server","shell","simple","sticks","string","testing","through","uploading"]
},{
"title": "nvALT and Marked on Mountain Lion: A-OK",
"url": "/2012/07/25/nvalt-and-marked-on-mountain-lion-a-ok/",
"tags": ["macos","marked","nvalt"],
"date": "Jul 25th, 2012",
"ts": "1343241420",
"summary": "I m pleased to report that with minimal effort on my part nvALT and Marked are running fine on Mountain Lion. I tested them a few pre-releases back, but got confirmation from a slew of users on Twitter (thanks everybody) that there appear to be no issues. If you re not using the 2.2 beta release , you should grab it. It s perfectly stable. We re just working on a couple of Simplenote sync bugs before putting out an official release, but there s plenty to love in the current beta. The source on Github should you want to compile it yourself includes a couple of bugfixes not in the current release, as well as a more pleasing menubar icon. There should be a beta update within the next week or so that includes these. The beta version is on its own track for automatic updates, so if you re running the beta, any new betas will show up as auto-updates. The 2.2 stable release, however, will be on the main update track and will require a new download if you re running the beta. Users still on 2.1 will see the new release automatically. Just for reference. In Mountain Lion, you may need to adjust your settings under System Preferences - Security and Privacy - Allow applications downloaded from: to Anywhere. I haven t run into this myself, but there was at least one report on Twitter of this being necessary. Marked 1.4 (current App Store version) should install and run without any snafus. The 1.5 version is nearing the end of the beta cycle and should be available to all Lion and Mountain Lion users soon. Much remains to be tested as far as script-based utilities and other tricks I ve come to rely on. I ll be posting updates and fixes as I wade through my pile of productivity hacks. I ve been running a barebones install of ML for a while, but have only now updated my main setup on my MacBook Air. We ll see how it goes.",
"keywords": ["cougar","cycle","github","macbook","mountain","release","simplenote","software","store","twitter","allow","anywhere","github","macbook","marked","mountain","preferences","privacy","security","simplenote","store","system","twitter","users","adjust","appear","applications","automatic","automatically","available","barebones","based","before","betas","bugfixes","confirmation","couple","cycle","download","downloaded","effort","everybody","fixes","hacks","haven","however","includes","install","issues","menubar","minimal","myself","nearing","necessary","nvalt","official","perfectly","pleased","pleasing","plenty","posting","productivity","putting","release","releases","remains","report","running","script","settings","setup","snafus","source","stable","tested","thanks","through","track","tricks","under","updated","updates","users","using","utilities","version","while","within","working"]
},{
"title": "Web excursions: July 25, 2012",
"url": "/2012/07/25/web-excursions-july-25-2012/",
"tags": ["bookmarks","macos"],
"date": "Jul 25th, 2012",
"ts": "1343233800",
"summary": "Links of interest from July 18, 2012 through July 25, 2012: Mac OS X Mountain Lion review roundup David Chartier Because David Chartier already did a great job of rounding up some of the best Mountain Lion reviews. I ll never get around to reading them all, but you can jam up your Instapaper queue with this list. Mountain Lion developer preview changes file renaming options A handy improvement. Be sure to check out all of TUAW s Mountain Lion coverage . Mountain Lion: Notification Center Explained Among some other great coverage by Macstories: some Notification Center tips. Creating a semantic breadcrumb using HTML5 microdata HTML5 breadcrumb using microformats with the added bonus of showing breadcrumb trails in Google search results. Draftastic Not gorgeous, but this has a lot of the features I ve been looking for in a collaborative editor for a while. Markdown support with preview, revision control, live collaboration",
"keywords": ["apple","center","cougar","markdown","mountain","notification","among","because","center","chartier","creating","david","draftastic","explained","google","instapaper","links","macstories","markdown","mountain","notification","added","because","bonus","breadcrumb","changes","check","collaboration","collaborative","control","couple","coverage","developer","editor","everyone","features","gorgeous","great","handy","improvement","interest","links","looking","microdata","microformats","options","preview","queue","reading","renaming","results","reviews","revision","rounding","roundup","search","semantic","showing","support","through","trails","upgrades","using","while"]
},{
"title": "Systematic Episode 2 with Mike Rose",
"url": "/2012/07/24/systematic-episode-2-with-mike-rose/",
"tags": ["podcast","systematic"],
"date": "Jul 24th, 2012",
"ts": "1343181120",
"summary": "Yes, I ve been horrible about posting for the last week or two. I made you a podcast , though, with the help of Mike Rose ( @MikeTRose ). We discuss Retina displays, improv and delve into areas of psychology where neither of us should probably be delving but it s all for the greater good. I have some more cool stuff in the crock pot right now, including a major update to Marked, an interactive literary work, more podcasts and a bunch of scripting fun. Regular posting to begin again very, very soon. In the meantime, be sure to check out Systematic Episode 2 and let me know what you think. Any feedback is welcome 1 ! Once I have this whole podcasting thing down I will shun any and all feedback. I will make award acceptance speeches in which I refer to everyone as the little people who made this possible. You will know when that day comes, but until then, please do share.",
"keywords": ["cooker","directories","itunes","podcast","tutorials","episode","marked","miketrose","regular","retina","systematic","acceptance","again","areas","award","begin","bunch","check","comes","crock","delve","delving","displays","everyone","feedback","greater","horrible","improv","including","interactive","literary","little","major","meantime","neither","people","podcast","podcasting","podcasts","possible","posting","psychology","right","scripting","share","speeches","stuff","think","welcome","where","whole"]
},{
"title": "A sincere and heartfelt thanks",
"url": "/2012/07/20/a-sincere-and-heartfelt-thanks/",
"tags": ["personal"],
"date": "Jul 20th, 2012",
"ts": "1342802640",
"summary": "It was my 34th birthday yesterday. I wasn t planning to do much for it, but I woke up to a post on Macdrifter declaring it Terpstra Day in honor of my birthday. I can t tell you how much that meant to me. I also can t tell you how much it meant to me that a slew of other blogs picked up on it and carried it on, nor can I truly express my gratitude for the number of Twitter, Facebook and direct email messages I received wishing me a happy birthday and thanking me for all of the random tools I ve created and shared. I really enjoy what I do, and I really enjoy sharing the results. I won t say that I mind this kind of recognition, but I never expected it. Thank you to everyone who sent congratulations, thanks and even donations 1 yesterday. Sincerely. Thank you.",
"keywords": ["birthday","communities","facebook","fastenal","greeting","holidays","networking","online","social","twitter","facebook","fastenal","macdrifter","people","sincerely","terpstra","thank","twitter","birthday","blogs","called","carried","company","congratulations","created","declaring","direct","donations","email","enjoy","everyone","expected","express","gratitude","happy","honor","industry","innovations","investing","investment","local","meant","messages","money","often","picked","planning","profitable","random","received","recipients","recognition","remember","results","shared","sharing","thanking","thanks","tools","truly","whose","wishing","wonder","yesterday"]
},{
"title": "Welcome to the Internet episode 21",
"url": "/2012/07/17/welcome-to-the-internet-episode-21/",
"tags": ["interview","podcast"],
"date": "Jul 17th, 2012",
"ts": "1342565340",
"summary": "And then, because I felt like I just wasn t being exposed enough on the interwebs today, I did an interview with Chris Enns for Welcome to the Internet, episode 21 on SSKTN.com. I had a great time talking with Chris about some of my projects and going into depth on the origins of some of them. Thanks for having me on, Chris!",
"keywords": ["chris","missouri","tigers","chris","internet","ssktn","thanks","welcome","because","depth","enough","episode","exposed","going","great","having","interview","interwebs","origins","projects","talking","today"]
},{
"title": "Systematic is go",
"url": "/2012/07/17/systematic-is-go/",
"tags": ["podcast","systematic"],
"date": "Jul 17th, 2012",
"ts": "1342557480",
"summary": "Systematic my new podcast on 5by5 launched today. The first episode (with Mike Schramm ) was recorded a couple of weeks ago, but was a little delayed in making it live. It s up now, and I ll be putting up new episodes on Tuesdays from here on out. I d love any feedback, ideas or angry letters. You can leave comments here or contact me directly if you have something to say!",
"keywords": ["directories","podcast","programs","studios","television","twitter","schramm","systematic","tuesdays","angry","comments","contact","couple","delayed","directly","episode","episodes","feedback","first","ideas","launched","leave","letters","little","making","podcast","putting","recorded","today","weeks"]
},{
"title": "Junkyard Country Poprocks",
"url": "/2012/07/14/junkyard-country-poprocks/",
"tags": ["music","personal","precious"],
"date": "Jul 14th, 2012",
"ts": "1342293000",
"summary": "Rounding off a very quiet week, I thought I d throw an unusual recording of mine out there. I ve been prepping a podcast, working on some non-blog writing, and managing (or attempting to) a large project at the day job. Thus, slow posting rate. Forgive me, the code craziness will continue after these messages. This is the last song in the Something Precious series. I ve realized that I m moving on musically and I ll probably never go back and fix all the things I meant to fix. This last one is called Every Word We Said, and I don t know what it is, genre-wise. Industrial Country? I m unsure, but I suppose that s irrelevant 1 . It s loud and obnoxious I was in a grating mood. Funny, because my original acoustic version is really, really mellow. By the way, in regards to the upcoming podcast I m not sure what the public hopes for the content are yet. I know what I want to do with it, but it s going to take a few episodes to figure out how to merge what I envision with what people will most enjoy. When it comes out, be nice. Civil, at least. Most of what I do on this blog and in my free time doesn t translate very well to an audio-only format, but I ll find ways I want to be stereotyped. I want to be classified .",
"keywords": ["directories","games","hollywood","itunes","podcast","roleplaying","video","civil","country","forgive","funny","industrial","precious","rounding","acoustic","attempting","audio","because","called","classified","collected","comes","content","continue","craziness","doesn","enjoy","envision","episodes","figure","format","found","genre","going","grating","hopes","irrelevant","managing","meant","mellow","merge","messages","moving","musically","obnoxious","original","people","podcast","posting","prepping","project","public","quiet","realized","recording","series","stereotyped","suppose","thought","throw","translate","under","unsure","unusual","upcoming","version","working","works","writing"]
},{
"title": "A warm, fuzzy, file-finding feeling",
"url": "/2012/07/07/a-warm-fuzzy-file-finding-feeling/",
"tags": ["scripting"],
"date": "Jul 7th, 2012",
"ts": "1341669600",
"summary": "I write a lot of scripts. I often want to edit and tweak those scripts. I sometimes forget exactly where a script is in my path, though, so I end up using subl $(which scriptname) to do it (yes, I have an alias for that). I didn t know I needed a smarter, faster way until I built this, but now I m quite enamored with it. The idea started as a bash function that ran a series of searches in a sequence designed to find the file I most likely wanted to edit. That worked well, and looked like this: It required you to get at least part of the string right, though. How annoying. So I was playing around with fuzzy string matching (again), and found a smart little Ruby gem called Fuzzy File Finder . It s essentially TextMate/Quicksilver style matching for a directory tree, allowing you to use queries that aren t contiguous but are in left to right sequence and ranking the results. If you haven t used this kind of searching before, think of it as typing your initials to match your whole name. Typing brmc would match Black Rebel Motorcycle Club, but so would bblmccb. I built it into a proof-of-concept script that turned out to be really useful. It s already become second nature for me after just a couple of days. The script is designed to quickly find a text/source file I want to edit within a group of my standard script directories, but it could easily be modified to handle an array of file searching tasks. The algorithm for Fuzzy Finder itself is portable to more than just filenames, too 1 . More on that another time. This script has Fuzzy File Finder built in, so there are no dependencies and it should run on any stock Ruby install. To run it, save the Gist to a folder in your path as and make it executable (). See the comments at the top of the script for a description, and run for options. There are a couple of items to configure at below the top documentation and before the script. It comes set up to search in ~/scripts , ~/bin and /usr/local/bin , but you can adjust as needed. It searches recursively, so don t set a root folder as a search directory or you ll be in for a long wait. Also set up the command for your preferred editor (, , , , etc.) in that section. By default it returns up to 10 of the most likely matches for your query as a numbered menu for you to select from. You can tell it to skip the menu and just open the top match with . You can also have it return a raw list of matches for use in other scripts using . You can prevent",
"keywords": ["black","computer","directory","folder","github","motorcycle","rebel","textmate","black","finder","fuzzy","github","motorcycle","quicksilver","rebel","textmate","typing","adjust","again","algorithm","alias","allowing","amatch","annoying","another","array","bblmccb","before","below","built","called","comes","command","comments","concept","configure","contiguous","couple","debugging","default","dependencies","description","designed","directories","directory","easily","editor","enamored","essentially","executable","faster","filenames","folder","forget","found","function","fuzzy","group","handle","handy","haven","initials","install","items","itself","likely","little","local","looked","match","matches","matching","messages","modified","nature","needed","numbered","often","options","output","playing","portable","preferred","prevent","proof","queries","query","quickly","ranking","rankings","recursively","required","results","return","returns","right","script","scriptname","scripts","search","searches","searching","second","section","sequence","series","smart","smarter","sometimes","source","standard","started","stock","string","style","tasks","think","truncation","turned","tweak","typing","useful","using","verbose","wanted","where","whole","within","worked","write"]
},{
"title": "Web excursions: Twitter Hacking Edition",
"url": "/2012/07/06/web-excursions-twitter-hacking-edition/",
"tags": ["bookmarks","hacks","twitter"],
"date": "Jul 6th, 2012",
"ts": "1341610560",
"summary": "Links of interest for July 6, 2012, Special Twitter/IFTTT edition: Special TwitterArchiveHackathon version. Short story (minus links to all of the various iterations thus far 1 ): an IFTTT recipe for archiving tweets to a text file started floating around and a bunch of us went way too far hacking around with the possibilities. A brief post on my own version coming in the next few days. For now, some links. Beckism.com: Archiving tweets using IFTTT and Dropbox Ian Beck s solution to Twitter archiving, part of the hackathon that happened on Twitter this week. Archiving tweets Dr. Drang s approach to archiving tweets. The hackathon continues Tweets, timestamps, time zones, and ThinkUp Dr. Drang contacted me about this issue and I decided that it was unsolvable. I wasn t worried enough about a time offset on 4-year-old tweets to undertake the task once again, Dr. Drang solves the unsolvable. Props. Tweet Archiver There are a few of these scripts floating around now, but they re all essentially ways to get as many older posts out of Twitter for local archiving as possible. This one from Tim Bueno is quite nice. Download your twitter posts into a single markdown file Gist Archive new tweets without IFTTT, if you re so inclined. I haven t tested this one because my system is working great right now, but not having the dependency on a web service might be a good idea. Fortunately, I can translate over any time, thanks to good old plain text. My next post on this topic will include my own explanation of why this is such a useful idea, since I know you re already asking yourself that. Full linkage and credit to to the cast and players (that I m aware of) will be in the next post. I promise.",
"keywords": ["archive","communities","drang","dropbox","ifttt","online","twitter","archive","archiver","archiving","beckism","bueno","download","drang","dropbox","fortunately","ifttt","links","props","short","special","thinkup","tweets","twitter","twitterarchivehackathon","again","approach","archiving","asking","aware","because","brief","bunch","coming","contacted","continues","credit","decided","dependency","edition","enough","essentially","explanation","floating","great","hackathon","hacking","happened","haven","having","inclined","interest","iterations","linkage","links","local","markdown","minus","offset","older","players","possibilities","possible","posts","promise","recipe","right","scripts","service","since","single","solution","solves","started","story","system","tested","thanks","timestamps","topic","translate","tweets","twitter","unsolvable","useful","using","various","version","working","worried","zones"]
},{
"title": "Quick Tip: system-wide notifications with notifyutil",
"url": "/2012/07/04/quick-tip-system-wide-notifications-with-notifyutil/",
"tags": ["macos","quicktip","scripting","terminal"],
"date": "Jul 4th, 2012",
"ts": "1341445200",
"summary": "I just discovered this, thus don t know a lot about it, but is a pretty cool command line utility in OS X. I know it exists in both Lion and Mountain Lion, not sure how long it s been around before that. What it does is tap into the system-wide daemon, allowing you to post and receive notifications between multiple applications/scripts. From the man page : notifyutil is a command-line utility for interacting with the notifyd(8) notification server. It may be used to post notifications, detect and report notifications, and to examine and set the state value associated with a notification key. Wow, that is pretty cool. The in the first command tells it to wait for a single notification. You can set that to any integer, or use to wait indefinitely. I have some grand scripting ideas for this, but they ll have to wait a bit. Nose to the grindstone, shoulder to the wheel and all of that.",
"keywords": ["center","console","cougar","languages","mountain","notification","operating","python","system","mountain","terminal","allowing","another","applications","associated","before","between","command","daemon","detect","different","discovered","examine","exists","first","grand","grindstone","ideas","indefinitely","integer","interacting","multiple","notification","notifications","notifyd","notifyutil","quick","receive","report","scripting","scripts","server","shoulder","single","system","tells","terminal","utility","value","wheel","window"]
},{
"title": "searchFocus, the most useful bookmarklet I've ever made at 3:21am",
"url": "/2012/07/03/searchfocus-the-most-useful-bookmarklet-ive-ever-made-at-321am/",
"tags": ["bookmarklet","javascript","scripting"],
"date": "Jul 3rd, 2012",
"ts": "1341327600",
"summary": "Ok, so this is the only bookmarklet I recall making that early in the morning, but it s still useful if you have a browser setup at all similar to mine. When triggered, this bookmarklet finds all input elements on the page, sorts out the text/search types, runs them through a few regular expressions to find the first one that seems a likely candidate to be the main search field and then focuses it. It s not perfect, but it works pretty well across the board (and without loading any libraries or external dependencies). If you want to test it, drag the SearchFocus button above to your bookmark bar. If you have any trouble with that (for example, if Chrome blocks the script and it shows up as ), just create a new bookmark named SearchFocus in your bookmarks bar and paste the code below ( raw version ) in as the url. Then, go to any web page with a search field on it and click the bookmarklet. If all goes well it should find the search field and focus it, ready for you to type your search. For this to be truly useful, you need a way to fire the bookmarklet without clicking it. Methods for doing this vary from browser to browser. Note that with keyboard solutions some sites have issues due to keyboard trapping. Twitter, for example, intercepts certain keys for its own navigation. In Safari you can do this just by putting it in your bookmarks bar in one of the first nine positions, then using #, where # is the position of the bookmark (1-9). You can also fire it via Quix , and I ve added it to my custom Quix file with the shortcut sf . Other options include Gleebox or custom injected scripts / extensions . For Chrome, you ll need a keyboard Extension. I currently recommend Keyboard-fu , but I just recently started using Chrome more heavily than Safari 1 and am still exploring the extensions ( Josh Dick recommends Shortcut Manager 2 ). I have it set up in Chrome as a bookmark called SearchFocus , and fire it via Keyboard-fu using (which happens to not conflict with Vimium). The Keyboard-fu command for firing the bookmark (you d have to modify the path based on your bookmark location): In Firefox, IE, Opera and other browsers I don t like For Firefox, well, you ll have to tell me. I haven t used Firefox for anything other than browser testing for years now, so you re on your own with that ugly beast 3 . I m not opening Parallels right now to test in IE, either, so if you try it, let me know if it works there or not. Opera can go Seriously, why would",
"keywords": ["bookmark","bookmarklet","chrome","firefox","google","keyboard","opera","safari","shortcut","camino","chrome","developers","extension","firefox","gleebox","keyboard","manager","methods","opera","parallels","redacted","safari","searchfocus","seriously","shortcut","triggering","twitter","vimium","above","across","added","based","beast","because","below","blocks","board","bookmark","bookmarklet","bookmarks","boomarkified","bottom","browser","browsers","button","called","candidate","certain","click","clicking","command","conflict","create","criteria","curious","custom","dependencies","development","ditched","doing","downgrading","either","elements","enough","example","expand","exploring","expressions","extensions","external","field","filtering","finds","firing","first","focus","focuses","frustration","getting","going","great","happens","haven","heavily","humor","improve","injected","input","installed","intercepts","issues","keyboard","libraries","likely","little","loading","location","making","modify","morning","named","navigation","opening","options","paste","people","position","positions","primarily","putting","ready","recall","recently","recommend","recommends","regular","right","script","scripts","search","seems","sense","setup","shortcut","shows","similar","sites","solutions","sorts","stables","started","suggestion","testing","through","trapping","triggered","trouble","truly","types","unhappy","useful","using","version","where","works","years"]
},{
"title": "Web excursions: July 2, 2012",
"url": "/2012/07/02/web-excursions-july-2-2012/",
"tags": ["bookmarks"],
"date": "Jul 2nd, 2012",
"ts": "1341252360",
"summary": "Links of interest from July 1, 2012 through July 2, 2012: OmniFocus and Calendar Notifications Federico Viticci over at Macstories dives into solving a nagging issue with OmniFocus. Beautiful. Now a year old, Google+ still has missing features, unfulfilled promises, and a staggering lack of social media understanding David Chartier David Chartier expounds on what s wrong with Google+. I find the idea of G+ intriguing, but I can t even bring myself to try to maintain a social presence there. A good read if you feel like quantifying your disappointment. Media Queries A gallery site with some good inspiration for your next responsive design. Toggle Element State with Chrome and Firefox Whoa, handy. If you work with CSS, this is a great tip for using tools you already have. Future Acorn 3.3 Tricks Gus Meuller is adding a feature to Acorn that allows Layercake-style export of multiple images sizes based on layer group names. I love it.",
"keywords": ["acorn","chrome","federico","google","macstories","omnifocus","viticci","acorn","beautiful","calendar","chartier","chrome","david","element","federico","firefox","google","layercake","links","macstories","media","meuller","notifications","omnifocus","queries","toggle","tricks","viticci","adding","allows","based","bring","design","disappointment","dives","export","expounds","feature","features","gallery","great","group","handy","images","inspiration","interest","intriguing","layer","maintain","media","missing","multiple","myself","nagging","names","presence","promises","quantifying","responsive","sizes","social","solving","staggering","style","through","tools","understanding","unfulfilled","using","wrong"]
},{
"title": "A template-based incrementation Service",
"url": "/2012/07/01/a-template-based-incrementation-service/",
"tags": ["service"],
"date": "Jul 1st, 2012",
"ts": "1341183600",
"summary": "I don t know how much use this will be to anyone (even me after a one time need for it), but for posterity: a System Service 1 that takes a templated block and builds a sequential list from it. It allows you to set start and end count and include modified (+/-) integers in the template. A template line can be any amount of text that you want to repeat with sequential numbering. The start and end numbers are defined with and any modified versions of the current number to be inserted are specified with or to include the current counter. For example, running the Service on this line: Like I said, limited utility, but if it would be handy for you then download below. Installation instructions are available in the how-to section . Source code available as a gist . 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 More info Your support is greatly appreciated! Or me on GitHub! Easily ported to a TextMate command, or Sublime Text 2 with a little Ruby- Python work.",
"keywords": ["javascript","languages","programming","python","sublime","textmate","changelog","donate","download","easily","github","increment","installation","published","python","repeats","results","service","source","sublime","system","templated","textmate","updated","allows","amount","anyone","appreciated","available","becomes","below","block","builds","command","count","counters","defined","download","example","first","greatly","handy","ignored","inserted","instructions","integers","limited","little","modified","numbering","numbers","placeholders","ported","posterity","repeat","replacing","running","section","selected","sequential","support","takes","template","templated","times","utility","variable","versions"]
},{
"title": "OmniFocus Clipper for Chrome",
"url": "/2012/07/01/omnifocus-clipper-for-chrome/",
"tags": ["chrome","omnifocus"],
"date": "Jul 1st, 2012",
"ts": "1341147600",
"summary": "This has probably been done before, but it didn t show up on the first page of search results and it only took 15 minutes to write. It s an adaptation of the Safari functionality in the OmniFocus Clipper, rebuilt for Google Chrome. When you clip from Safari with the default Clipper plugin (select text and type your clipping shortcut), it creates a new task with a title based on a summary of the selected text and a note containing the full selection and a linked page title. Meanwhile, doing the same from Chrome gives you no link and the default task title is just From Google Chrome. Boring. I changed the note title to pick the page title by default, rather than a summary of the selected text (which never turned out well). Other than that, the behavior is consistent with Safari clipping. I had been wanting to try out an idea for a while, and this seemed like an easy testing ground. The second Clipper plugin in the zip file is ChromeNV . I don t expect it to be terribly useful to everyone, but here s what it creates: There s a short delay after the Quick Entry window comes up as it calls out to the Marky server. This will only work if you re online and, as always, there s a chance that Marky won t be able to find content. Worst case scenario, though, you don t get an nvALT note and OmniFocus might throw an error if I missed any scenarios in my error catching. Note: Don t check both of these plugins in OmniFocus preferences at the same time. Only one of them will run, and it s probably going to be the less consistent one (on my machine the ChromeNV plugin seems to take priority). Download, unzip and drop the .bundle files into , creating the folder if it doesn t exist. Then restart OmniFocus and open preferences. In the Clippings panel, you ll see Chrome and ChromeNV. Both should be checked by default, so disable the one you don t want to use. Now you can select text and press your clipping shortcut combo to create nicer tasks from Chrome! You don t always want or need a note from selected text on the page, but the OmniFocus clipper requires a selection to run. My solution in browsers is just to hit L to select the url in the bar and then clip that. The function is the same, and you get a non-hyperlinked address for the site in the note. It would be pretty easy to make the text of the note always be hyperlinked to the origin page, but it s not really a behavior I d want consistently. OmniFocus Clipper Plugins for Chrome v1 Download OmniFocus",
"keywords": ["chrome","google","markdown","marky","omnifocus","safari","addendum","boring","changelog","chrome","chromenv","clipper","clippings","donate","download","entry","github","google","includes","installation","markdown","marky","meanwhile","omnifocus","plugins","published","quick","refactored","safari","updated","using","worst","adaptation","address","appreciated","based","before","behavior","browsers","bundle","calls","catching","chance","changed","check","checked","clipper","clipping","combo","comes","consistent","consistently","containing","contains","content","create","creates","creating","default","disable","doesn","doing","error","everyone","exist","expect","files","first","folder","function","functionality","gives","going","grabs","greatly","ground","hyperlinked","kinda","linked","machine","minutes","missed","nicer","notes","nvalt","online","origin","original","panel","permalink","plugin","plugins","preferences","press","priority","rather","rebuilt","replicate","requires","restart","results","scenario","scenarios","search","second","section","seemed","seems","selected","selection","server","short","shortcut","solution","summary","support","tasks","terribly","testing","throw","title","turned","unzip","useful","version","wanting","while","window","write"]
},{
"title": "Sublime MarkdownEditing, now with 100% more blue cursor",
"url": "/2012/06/30/sublime-markdownediting-now-with-100-more-blue-cursor/",
"tags": ["markdownediting","sublimetext"],
"date": "Jun 30th, 2012",
"ts": "1341086400",
"summary": "As much as I prefer Byword as my writing environment, there s something hypnotically attractive about iA Writer s blue caret. So, seriously, why wouldn t I add that to the MarkdownEditing package for Sublime Text 2 ? I also made a quick-and-dirty focus theme that you can swap out in the sublime-settings file (commented line is already there, just swap them). You can get the updated download on GitHub , code contributions welcome. This will be in Package Control very soon. I promise 1 .",
"keywords": ["ctags","github","javascript","linux","python","sublime","byword","control","github","markdownediting","package","sublime","writer","attractive","caret","commented","contributions","dirty","download","environment","focus","hypnotically","night","package","prefer","promise","quick","seriously","settings","sublime","submitted","theme","updated","welcome","wouldn","writing"]
},{
"title": "Lest I forget: a catalog of recent code endeavors",
"url": "/2012/06/30/lest-i-forget/",
"tags": ["otask","personal"],
"date": "Jun 30th, 2012",
"ts": "1341064800",
"summary": "I was looking back through logs and posts and thinking about all of the half-baked projects I ve spent my time on over the last few years. I started compiling a list and figured I d post it for posterity. The following are the projects that stick out to me as either being pretty cool or, at the least, having potential. Fair warning: this is going to be ridiculously long. You should see the pile of things that didn t make the list. I don t expect many people to read all the way through, I m just assuming I ll look back at this in a year with nostalgia, having already let the memories of some of these ideas drift into dark recesses of my mind. I d already almost forgotten some of these Marked A Markdown previewer that tracks file changes and updates automatically. This is where most of my time goes when I m coding right now. I need to start working on a new app, but there are so many cool things left to do with it. This is really the only project I have outside of my day job that actually pays bills, so it tends to get the most attention. Markdown QuickTags I wrote this WordPress plugin for those times when you re stuck editing in a web browser. Having a full set of Markdown tools including reference title autocompletion is pretty handy and sometimes better than the next available desktop editor. Promptdown A Markdown-friendly teleprompter web app. Compatible with iPhone and iPad as well as Desktop. Paste some Markdown and go. Recently updated to allow better speed control. KeyBindings This is where the crazy starts to really show. My KeyBindings experiments are getting out of hand. That said, there are some amazingly powerful tricks in there, and you can chop it up and just take what you want (or what your muscle memory can handle). Gather An in-progress app for converting the web to Markdown and filing it locally. I m not sure yet if it will come to fruition, but the underpinnings are there. Cheaters A cheat sheet app that you can assign to a hotkey and have all of your cheat sheets in with the press of a button. Includes jQuery, CSS3, Vim, MultiMarkdown and more, plus it s really simple to extend and build your own cheat sheets. Recently moved to GitHub to try and promote some community sheet-sharing (see the download link in the post). iTextEditors My massive, crowd-sourced compilation of iOS Text Editor information. It started as a Google Spreadsheet, but people can t be trusted to edit willy-nilly like that. I should",
"keywords": ["editor","extension","geektool","howbert","locator","markdown","multimarkdown","resource","safari","textmate","abandoned","action","allows","another","antique","applescript","autotag","beyond","blogging","blogsmith","bluetooth","broken","bundle","button","cheaters","compatible","convert","desktop","destination","dropzone","editor","elasticthreads","extension","extensions","fletcher","footnotes","gather","geektool","geeklets","github","google","having","homecontrol","includes","inline","instapaper","jacket","justthelinks","keybindings","linksmasher","logging","markdown","marked","marky","mathias","mobilizer","moodblast","multimarkdown","omnifocus","openmeta","paste","penney","pinboard","plugin","prefixr","promptdown","python","quick","quicklook","quickquestion","quicktags","readability","reader","recently","safari","search","service","services","simplify","skeleton","snippets","sparkup","spotlight","spreadsheet","stained","starting","system","tablinks","tablinks","terminal","textexpander","textmate","thanks","tinymce","tools","visual","voodoopad","watcher","wordpress","works","ability","access","actions","active","added","adding","allow","allows","almost","altered","amazingly","answer","answers","apart","applied","appreciated","array","assign","assuming","autocompletion","automatic","automatically","available","baked","based","battle","beast","because","before","beginning","between","biggest","bills","blocks","bookmarks","breeze","brings","broken","browser","build","building","bundle","bundled","button","buttons","changes","cheat","check","checking","clicked","clipboard","coding","coffee","collection","combination","coming","command","comment","community","compatible","competitor","compilation","compiling","completely","complicated","computer","concede","content","contexts","control","conversion","converted","converting","couple","crazy","create","credit","cross","crowd","curious","custom","daily","dates","decent","default","define","dependability","desktop","destination","detection","development","different","differentiate","directly","discoveries","distracted","doesn","doing","donate","download","downloaded","downloads","drift","dropped","easily","editing","editor","either","ended","engine"]
},{
"title": "TextExpander Tools updated",
"url": "/2012/06/29/textexpander-tools-updated/",
"tags": ["scripting","snippet","textexpander","tools"],
"date": "Jun 29th, 2012",
"ts": "1341001740",
"summary": "I ve posted a much-needed update to my TextExpander Tools collection. About 60% of the snippets have been updated/repaired. You can find them all and subscribe or download them (and customize the prefixes) with my TE-snippet tool . If you re currently subscribed to any of the Snippet groups, your snippets will update automatically. I didn t change any shortcuts, but I removed some snippets that relied on no-longer-existing services and added a few new ones. If you don t have TextExpander, you should probably get it . As a timesaver and memory augmentation it s worth every penny. Version 4 is a great upgrade, and while this version is excluded from the Mac App Store you can cross-grade easily to the standard version. I fixed the bit.ly url shortening script up a little bit. It now requires that you create two additional snippets with your bit.ly username and API key . Once you have that information, create two new snippets with the following shortcuts (name doesn t matter): (plain text, paste your API key) (plain text, enter your bit.ly username) Once that s set up, the bit.ly shortener should work fine. At least until the old API is completely deprecated and shut down I m working on a Lorem Ipsum snippet to rule them all using the new fill-in features in TextExpander 4 . One snippet to let you choose what type (Kwisatz Haderach, Hipster, Bacon, Random), what unit (words, lines, paragraphs, lists), what format (markdown, html, plain text) and how much to output. Here s the problem (attention Smile!): the script is long. When I pop up the fill-in, the whole script is displayed and it s simply unworkable on-screen. I need a way to pass fill-in results to a script without showing the whole thing. I have some ideas, but I ll leave it up to the Smile geniuses to figure out a workable solution (I hope).",
"keywords": ["adobe","desktop","filler","haderach","ipsum","kwisatz","latin","lorem","pagemaker","publishing","snippet","store","bacon","haderach","hipster","ipsum","kwisatz","lipsum","lorem","random","smile","snippet","store","textexpander","tools","version","added","augmentation","automatically","change","choose","collection","completely","create","cross","customize","deprecated","displayed","doesn","download","easily","enter","excluded","features","figure","fixed","format","geniuses","grade","great","groups","ideas","information","leave","lists","little","longer","markdown","memory","needed","output","paragraphs","paste","penny","posted","prefixes","problem","relied","removed","repaired","requires","results","screen","script","services","shortcuts","shortener","shortening","showing","simply","snippet","snippets","solution","standard","subscribe","subscribed","timesaver","unworkable","updated","upgrade","username","users","using","vengeance","version","while","whole","words","workable","working","worth"]
},{
"title": "Cheaters repository, and a call for cheat sheets",
"url": "/2012/06/29/cheaters-repository-and-a-call-for-cheatsheets/",
"tags": ["cheaters"],
"date": "Jun 29th, 2012",
"ts": "1340978400",
"summary": "A while back I published a popup cheat sheet system for OS X called Cheaters . It was fairly popular, and I think there may be a few cheat sheets floating around that would be worth sharing. I ve put Cheaters up on GitHub and moved the download links to point to the project page there . I want to gather any cheat sheets you ve created (that aren t personalized shortcuts) and keep the download up-to-date with them. If you have any that you ve put together, let me know , or just fork the repository on GitHub and make a pull request. For those who need a push, I ll be posting a tutorial on creating cheat sheets soon. It s easy. Really.",
"keywords": ["cheats","cheatsheet","games","github","hints","linux","media","social","twitter","video","cheaters","github","called","cheat","created","creating","download","fairly","floating","gather","links","moved","personalized","point","popular","popup","posting","project","published","repository","sharing","sheet","sheets","shortcuts","system","think","together","tutorial","while","worth"]
},{
"title": "More Marky love for nvALT",
"url": "/2012/06/28/more-marky-love-for-nvalt/",
"tags": ["markdown","marky","nvalt"],
"date": "Jun 28th, 2012",
"ts": "1340913600",
"summary": "I ve added a couple of new API parameters to Marky to allow better nvALT clipping of web pages. First, if you re not using the nvALT 2.2 beta , the url handler is nvalt instead of nv . Now you can specify an output type of nvalt instead of nv and get the right handler returned. I d recommend, of course, just using the beta. It s stable and happy. Second, I added the ability to send a tags parameter. Add a url encoded string of space or comma-separated tags and it will add them to the returned url. If the opennv parameter is 1, the preview window will launch the URL automatically. You can also use this in bookmarklets to clip silently. The new parameters are documented in the API section under the Marky input form. It s pretty simple. I also added a ready-to-go bookmarklet for the tags feature to Marky s page. Just scroll down and click Bookmarklets, and it will be the last one in the list. This one will pop up a small window where you can add tags and then when you hit Enter or the submit button, it will Markdownify the page you ran it from and add the result to nvALT (or Notational Velocity, whichever is set to handle nv:// links), tags included. Happy clipping.",
"keywords": ["bookmarklet","chrome","google","interface","locator","marky","notational","programming","resource","velocity","bookmarklets","enter","first","happy","markdownify","marky","notational","second","velocity","ability","added","allow","automatically","bookmarklet","bookmarklets","button","click","clipping","comma","couple","documented","encoded","feature","handle","handler","happy","included","input","launch","links","nvalt","nvalt","opennv","output","pages","parameter","parameters","preview","ready","recommend","returned","right","scroll","section","separated","silently","simple","small","space","specify","stable","string","under","using","where","whichever","window"]
},{
"title": "Web excursions: June 27, 2012",
"url": "/2012/06/28/web-excursions-june-27-2012/",
"tags": ["bookmarks"],
"date": "Jun 28th, 2012",
"ts": "1340890740",
"summary": "Links of interest from June 24, 2012 through June 27, 2012: CodePen: Pen A nice tool for playing with front-end web code. It even understands Markdown. Not sure I personally have any reason to use this over jsfiddle yet, but it s really well done. Peity - progressive canvas charts Now that s cool. I have to start gathering statistics so I can make good use of it. Maybe a poll nope. Brackets A code editor developed in HTML, CSS and JavaScript by Adobe. Very experimental, but pretty cool. handleOpenURL: Shared Interapp Communication on iOS Great resource for finding iOS url handlers, via MacDrifter . Baseline.js Vertical rhythm made easy Intriguing. Not sure I want a website layout dependent on JavaScript, but there are definitely times when this would come in handy.",
"keywords": ["android","apple","firefox","javascript","markdown","mozilla","adobe","baseline","brackets","codepen","communication","great","interapp","intriguing","javascript","links","macdrifter","markdown","maybe","peity","shared","vertical","canvas","charts","definitely","dependent","developed","editor","experimental","finding","front","gathering","handleopenurl","handlers","handy","interest","jsfiddle","layout","personally","playing","progressive","resource","rhythm","statistics","through","times","understands","website"]
},{
"title": "My custom Quix commands",
"url": "/2012/06/27/my-custom-quix-commands/",
"tags": ["websurfing"],
"date": "Jun 27th, 2012",
"ts": "1340827200",
"summary": "I ve started using Quix again, and have updated my custom Quix file accordingly. It started because Gleebox began misbehaving in Safari for me, and it doesn t seem to be actively maintained any more. Then I ended up switching to Chrome as my primary browser, and Quix made the transition easy all of my commands stayed the same. The only catch was 1 which used to open the first bookmark bar item (Quix in this case) in Safari just switches to the first tab in Chrome. I m using Keyboard-fu (available in the Chrome store) to trigger Quix now. If you want to set up something similar, create a new item in the Keyboard-fu preferences, assign a hotkey, and then use something like this as the command (modified if your path differs): As an aside, the Vimium extension is really great for keyboard navigation (vim style). You have to delete most of the default commands in Keyboard-fu if you re going to use them together, but Vimium is more reliable for most commands. I just use Keyboard-fu to extend the options. Anyway, if you re interested in any of my custom commands (listed below), you can grab all or any part of my Quix command file from this gist . Save it to any server you have access to from the web and put the url for it into the box on the Quix extension page . Every command is on its own line, so you can just copy out the lines you want, or use the whole file and delete lines you don t want. go Open first result (DuckDuckGo) Example: (opens first DuckDuckGo search result for brett terpstra ) b Bang search (DuckDuckGo) Example: (searches TUAW using !tuaw in DuckDuckGo) grep CueUp Search (nee Greplin) Example: (searches all of my cloud data for AOL Tech ) ss Search current site (DuckDuckGo) Example: (site-specific search of the current site for markdown ) bt BrettTerpstra.com (DuckDuckGo) Example: (site-specific search of brettterpstra.com for markdown ) gh Search GitHub (everything) Example: (searches all of GitHub for the term shortcutrecorder ) hints Search Mac OS X Hints Example: (searches hints.macworld.com for defaults ) mu Search MacUpdate (Software) Example: (searches MacUpdate for Marked ) jq Search jQuery API docs Example: (searches api.jquery.com for :not ) md Uses HeckYesMarkdown to convert the current page to plain Markdown mdp Uses HeckYesMarkdown to convert to Markdown and preview with options 2text Uses HTML2Text to convert the current page to Markdown clipr A handy",
"keywords": ["bookmarklet","chrome","duckduckgo","github","gleebox","locator","macupdate","resource","safari","anyway","bookmarklets","brettterpstra","cssinspect","choosy","chrome","clippable","cueup","custom","design","duckduckgo","example","fontfriend","gimmebar","github","gleebox","greplin","heckyesmarkdown","hints","instapaper","keyboard","later","macupdate","markdown","marked","paparazzi","pinboard","safari","search","snoopy","software","twitter","vimium","whatfont","access","actively","again","allows","aside","assign","available","awesome","because","began","below","bookmark","bookmarklet","brett","brettterpstra","browser","capture","catch","check","choose","clipr","cloud","command","commands","convert","create","custom","default","defaults","design","differs","directory","doesn","domain","element","ended","esque","everyone","everything","extend","extension","extract","first","formatted","gimme","going","great","handy","hints","hosting","hotkey","interested","jquerify","jquery","jquery","keyboard","later","level","listed","macworld","maintained","markdown","misbehaving","modified","navigation","opens","options","preferences","preview","primary","reliable","search","searches","server","services","share","shortcutrecorder","silently","similar","sites","snoop","software","specific","started","stayed","store","structure","style","switches","switching","terpstra","thumb","thumbshot","together","transition","trigger","uinfo","updated","using","whohosts","whole","window"]
},{
"title": "Some Sublime Text 2 packages of note",
"url": "/2012/06/27/some-sublime-text-2-packages-of-note/",
"tags": ["sublimetext"],
"date": "Jun 27th, 2012",
"ts": "1340773800",
"summary": "I ve been meaning to make a list of some of my favorite Sublime Text 2 packages for a while now 1 . The following is far from a complete list of the plugins I ve played with or currently have installed, but they re a few that struck my fancy and have stayed in my packages list for the long haul. Some are more complex or useful than others, but they ve all added to my list of reasons that I really dig Sublime Text 2. All of these plugins are available through Package Control , and if you re using/trying out Sublime Text 2, you really need to have Package Control installed. There s a treasure trove of tools available through it. In no particular order, here are some of the gems I ve found Create public and private gists from documents or selections, and open, edit and update gists from your account. You can add multiple files and all kinds of other nifty gist tricks right from within your editor. ZenCoding It s zen-coding for Sublime Text 2. If you re not already a fan of this HTML abbreviation engine, check it out . SublimeTweet Read your timeline and send tweets without leaving your editor. Not the most productive plugin, but well done. AutoSemiColon This one takes some getting used to. If you type a semicolon from within a pair of quotes or brackets, it intelligently (usually) moves the semicolon outside of the pair. If you like it at first, you ll get used to it and come to love it. If not, you ll probably always hate it. ChangeQuotes Swap single and double quotes for the current scope. Need I say more? MarkAndMove Add multiple marks (bookmarks, a la vim) and rotate between them, with the option to select them all at once with multiple cursors. Anypreter Runs your selection or an entire document through an appropriate interpreter without having to save the file. Especially handy for me with quick Ruby scripts and testing. That s it for right now. I think I have around 30 packages installed and am constantly culling them to see what s useful and what s just bloat and then adding new ones. As I play more, I ll share more. As always, I love to hear what s working for you! Yes, Gabe s post on Macdrifter spurred me to get this done.",
"keywords": ["editors","sublime","twitter","anypreter","autosemicolon","changequotes","control","create","especially","macdrifter","markandmove","package","sublime","sublimetweet","zencoding","abbreviation","account","added","adding","available","between","bloat","bookmarks","brackets","check","coding","complex","constantly","culling","cursors","document","documents","double","editor","engine","entire","fancy","favorite","files","first","found","getting","gists","handy","having","installed","intelligently","interpreter","kinds","leaving","marks","meaning","moves","multiple","nifty","others","outside","packages","particular","played","plugin","plugins","private","productive","public","quick","quotes","reasons","right","rotate","scope","scripts","selection","selections","semicolon","share","single","spurred","stayed","struck","takes","testing","think","through","timeline","tools","treasure","tricks","trove","trying","tweets","useful","using","usually","while","within","working"]
},{
"title": "Web excursions: June 21, 2012",
"url": "/2012/06/21/web-excursions-june-21-2012/",
"tags": ["bookmarks"],
"date": "Jun 21st, 2012",
"ts": "1340313600",
"summary": "Launch Center Pro This one from App Cubby is making the rounds today. I m giving it a shot, I ll let you know how it goes. [affiliate link] TextExpander 4 Get it. New fill-in types, snippet expansion within fill-ins, Mountain-Lion ready and much more. Why Apple Is Making The Mac Harder To Use (While Trying To Make It Easier) Reflections from Michael Schechter on the first casualty of the new Sandboxing policies in the App Store: TextExpander 4. Plume This iPhone app is very cool. Gather links from your Twitter timeline and create local lists to pull links from accounts you don t follow. A great way to cull your stream, and to be able to see what s going on without following noisy accounts. Plus, it s beautiful. Skim Clip OCR/Organizer for screenshots with full-text search. That could be handy.",
"keywords": ["appcubby","apple","howbert","iphone","store","textexpander","twitter","apple","center","cubby","easier","gather","harder","launch","links","making","michael","mountain","organizer","plume","reflections","sandboxing","schechter","store","textexpander","trying","twitter","while","accounts","affiliate","beautiful","casualty","create","expansion","first","giving","going","great","handy","iphone","interest","links","lists","local","making","noisy","policies","ready","rounds","screenshots","search","snippet","stream","timeline","today","types","within"]
},{
"title": "Hog Bay Software looking for FoldingText feedback",
"url": "/2012/06/21/hog-bay-software-looking-for-foldingtext-feedback/",
"tags": ["markdown"],
"date": "Jun 21st, 2012",
"ts": "1340291160",
"summary": "Hog Bay Software is looking for input on their upcoming product, FoldingText . It s in a relatively early beta state, but it has some serious potential as a Markdown editor. If you haven t seen FoldingText, it s similar in concept to Velletta . If you haven t seen Valletta, the idea is to provide a more transparent environment for editing Markdown. While the marked-up text is focused, it looks like Markdown, but when the cursor leaves it automatically converts to a rich text representation. It s like a Markdown preview and an editor seamlessly combined. FoldingText has some nice display features and customizable themes are on the way. It s free to try right now, and your feedback is needed on the support forums. Give it a shot and let Jesse and crew know what you think ! You can grab the latest build at the end of the announcement post .",
"keywords": ["editor","editors","format","markdown","shareware","valletta","foldingtext","jesse","markdown","software","valletta","velletta","while","announcement","automatically","build","concept","converts","cursor","customizable","display","editing","editor","environment","features","feedback","focused","forums","haven","input","latest","leaves","looking","looks","marked","needed","potential","preview","product","relatively","representation","right","seamlessly","serious","similar","support","themes","think","transparent","upcoming"]
},{
"title": "Marky the Markdownifier, reintroductions",
"url": "/2012/06/20/marky-the-markdownifier-reintroductions/",
"tags": ["markdown","marky"],
"date": "Jun 20th, 2012",
"ts": "1340214600",
"summary": "I ve been working a bit on Marky the Markdownifier . It s a project I started back in 2010 and use regularly, but it s never really caught on with the Markdown masses. I ve tweaked the algorithms and added to the API to make Marky as useful as possible within my own workflow, and hopefully within other s as well. At its most simple, Marky takes urls and converts them to Markdown text, removing comments and ads in the process. A web-based version of read2text . In the web interface, you can copy Markdown to the clipboard, preview it as HTML and a few other surface level tasks. You can also go straight to HTML view and use Marky as an Instapaper Mobilizer kind of tool. It can be more useful than that, though. Starting with Bookmarklets for your browser, you can convert the current page to raw Markdown, open it as a preview, even save it directly to nvALT. Here are some more examples: Create a System Service to convert entire folders full of html files to Markdown files A System Service to send local html files to NV as Markdown Clip web pages to Markdown from Terminal, Launchbar, Alfred and Keyboard Maestro Grab all of the pages for links in the clipboard Send the full pages to nvALT (or any text-based organization system) Pass raw HTML to Marky and get Markdown back Markdownify your clipboard contents, use it from shell scripts to convert text anywhere Use the JSON output option to incorporate it into JavaScript-based web applications and browser extensions Marky can also do regular Markdown conversion (with Extra extionsions), so you can pass it Markdown text and get HTML back Everything is done with GET or POST requests to /go/ on your chosen domain. For example, this url returns a string that, when executed by the system, adds the Markdown version of one of my posts to nvALT (or NV, if that s where the handler points): http://heckyesmarkdown.com/go/?u=http://brettterpstra.com/bash-completion-for-defaults-domains/ read=1 output=nv . Note that adding to nvALT this way doesn t crash it the way that dragging urls and files to it generally does (I m working on that ). There are details for the API listed on the homepage for each of the two flavors of Marky ( folksy and sailor versions ). Some ready-made bookmarklets are there (open page in Marky, open as raw Markdown, save Markdown to NV, etc.) you can dissect them to see how they work, and use the API documentation to extend them. It s not a gorgeous API, but it does",
"keywords": ["interface","javascript","markdown","marky","programming","standard","streams","times","alfred","bookmarklets","caveat","changelog","create","donate","download","dreamhost","everything","example","extra","gawker","instapaper","javascript","keyboard","launchbar","lifehacker","maestro","markdown","markdownifier","markdownify","markdownifying","marky","mobilizer","published","readability","service","services","starting","system","terminal","times","updated","account","actions","added","adding","algorithm","algorithms","anywhere","applications","article","based","below","bizarre","blank","bookmarklets","brettterpstra","broke","browser","caught","changes","chopped","chosen","clipboard","clipping","combination","command","comments","content","contents","conversion","convert","converts","couple","crash","created","defaults","details","directly","dissect","doesn","domain","domains","dragging","emptor","entire","example","examples","executable","executed","extend","extending","extensions","extionsions","extreme","favorite","files","flavors","folders","folksy","friends","functions","generally","gorgeous","guarantee","handler","handles","heckyesmarkdown","homepage","hopefully","hosted","ideas","including","incorporate","integration","interface","kinds","launcher","level","links","listed","local","making","markup","masses","meantime","nothing","nvalt","options","organization","output","pages","points","possible","posts","preview","primarily","process","project","ready","recently","recognized","regular","regularly","removing","requests","returns","sailor","scale","script","scripts","shared","shell","simple","sites","source","started","straight","string","surface","system","takes","tasks","tested","trick","turned","tweaked","updating","uptime","useful","version","versions","where","while","within","workaround","workflow","working","works"]
},{
"title": "Marked is 50% off today. You should buy it.",
"url": "/2012/06/19/marked-is-50-off-today-you-should-buy-it/",
"tags": ["marked"],
"date": "Jun 19th, 2012",
"ts": "1340128860",
"summary": "Just in case you missed it, Marked is $1.99 today for Two Dollar Tuesdays . The organizers were kind enough to let me in despite a rule that featured apps have to be over $9.99 regular price. It s still 50% off, so (if you don t already have it) grab it while it s hot !",
"keywords": ["business","design","development","hosting","personal","dollar","marked","tuesdays","enough","featured","missed","organizers","price","regular","today","while"]
},{
"title": "Web excursions: June 17, 2012",
"url": "/2012/06/17/web-excursions-june-17-2012/",
"tags": ["bookmarks"],
"date": "Jun 17th, 2012",
"ts": "1339950840",
"summary": "Links of interest from June 16, 2012 through June 17, 2012: Moom I can t remember why I originally stopped using Moom for window management, but the latest release has me hooked (thanks in part to Macdrifter ). It s leaving the App Store due to restrictions, but if you own the App Store version, the direct download will automatically license itself. It s cool. Readability Scores Demo A free API for retrieving readability metrics for text (ARI, Coleman Liau, Flesch Kincaid, etc.). If you re a writer and don t mind some coding, see this gist for an example I whipped up. Diffbot: Identify and Extract from Any Web Page A simple API with an outstanding algorithm for finding content (a la Readability), parsing it, tagging it and more. There are already libraries written in Ruby, Python, PHP and more. There s also a free pricing tier that gives you 10,000 queries/month, which is more than enough to have a jolly good time with. Annotator - Annotating the Web I ve been playing with this concept a lot lately, and this project is an amazing implementation. My desire to dissect it is all the impetus I need to start learning Coffeescript. Bash-it If you don t already have a crazy .bash_profile, here s a nicely-organized way to get started.",
"keywords": ["coffeescript","extract","interface","programming","store","annotating","annotator","coffeescript","coleman","diffbot","extract","flesch","identify","kincaid","links","macdrifter","python","readability","scores","store","algorithm","amazing","automatically","coding","concept","content","crazy","direct","dissect","download","enough","example","finding","gives","hooked","impetus","implementation","interest","itself","jolly","latest","learning","leaving","libraries","license","management","metrics","nicely","organized","originally","parsing","playing","pricing","profile","project","queries","readability","release","remember","restrictions","retrieving","simple","started","stopped","tagging","thanks","through","using","version","whipped","window","writer","written"]
},{
"title": "Bash completion for defaults domains",
"url": "/2012/06/16/bash-completion-for-defaults-domains/",
"tags": ["terminal"],
"date": "Jun 16th, 2012",
"ts": "1339841280",
"summary": "There are a lot of things you can do with the OS X command. This post isn t intended to detail them, but a little searching can turn up a lot of neat tricks . Basically, reads and writes system and application preferences from the command line. Using it requires knowing the domain of the preference file (e.g. com.apple.Safari ), or using the -app parameter. I generally stick with the domain, especially when I m writing or deleting preferences, just to make sure I m doing it where I think I m doing it. This code when added to your will allow tab completion of domain names. You can type to see any preference files in a domain starting with com.brett (which would bring up Marked s preferences). It s not overly complex and doesn t do any handling of the command type (read, write, delete, etc.), but it s handy if you toy with preferences much: If you want to complete on the app parameter, you could add a check for -app as the previous item in the sequence and include something along the lines of the application completions I posted a while back. Also, shortly after figuring this out I found the defaults completion plugin in bash-it . It s better.",
"keywords": ["command","domain","interface","shell","marked","safari","using","added","allow","apple","brett","bring","check","command","completions","complex","defaults","deleting","deriding","detail","doesn","doing","domain","especially","figuring","files","found","generally","handling","handy","intended","knowing","little","names","overly","parameter","plugin","posted","preference","preferences","reads","requires","searching","sequence","shortly","starting","stick","system","think","tricks","using","where","while","write","writes","writing"]
},{
"title": "Wrapping up WWDC 2012",
"url": "/2012/06/15/wrapping-up-wwdc-2012/",
"tags": ["personal"],
"date": "Jun 15th, 2012",
"ts": "1339810980",
"summary": "WWDC 2012 is coming to a close. I m tired, but this week has been great, and exactly what I look forward to all year. See, I don t go to WWDC, I bum around on the outskirts, blogging, meeting devs, seeing apps and drinking beers with great people. And it s been a lot of all of that (the latter declining in frequency as the week wore me down). I ve seen a couple more upcoming apps and releases that I can t really talk about yet. That s ok, I like having a few secrets. I don t think it would get me in trouble, though, to mention that Dan Peterson has put some awesome work into the upcoming 1Password release. Beautiful stuff. I m heading out tomorrow morning. If you ve been trying to get in touch with me and have missed me so far, tweet me ( @ttscoff ) before it gets too late this evening. I may not be up for much at this point, but I ll certainly make an effort to hang out with as many of the awesome people around here as possible.",
"keywords": ["apple","communities","conference","developers","google","network","online","peterson","social","twitter","worldwide","beautiful","password","peterson","awesome","beers","before","blogging","certainly","close","coming","couple","declining","drinking","effort","evening","frequency","great","having","heading","latter","meeting","mention","missed","morning","outskirts","people","point","possible","release","releases","secrets","seeing","stuff","think","tired","tomorrow","touch","trouble","trying","ttscoff","upcoming"]
},{
"title": "Ulysses 3 preview at WWDC",
"url": "/2012/06/12/ulysses-3-preview-at-wwdc/",
"tags": [],
"date": "Jun 12th, 2012",
"ts": "1339527600",
"summary": "I left a comment in response to a note from the Ulysses guys on my dream Markdown editor piece. It just said I want a beta. They let me know they heard me by publishing the quote on their devblog . Today, they gave me a beta, and a hilarious T-shirt: I m allowed to talk about Ulysses 3 , at least the features included in the private beta. I ll share some more thoughts after I play with it for a while, but I can tell you from the demo that it s very cool. A re-thinking of plain text editing that incorporates some features from Daedalus touch . Formatted text is treated by the editor as objects, so you don t see the markup for things like links and images in the text, keeping it clean and simple, but you can copy it out as Markdown, HTML or text with just a click. It works with Markdown, Textile and other variants, including Souldown, The Soulmen s own markup syntax. Basically, whatever markup you want to use just works, and because it s storing your work as objects you can easily swap between modes and syntaxes. The idea of documents and projects is gone. You can still make a project as complicated as you like, but the entire idea of saving files and projects can be history if you want it to. If you ve used Daedalus (and I recommend trying it), you re familiar with the concept. Time will tell how this all comes out, but I m really excited about what s being forged here.",
"keywords": ["daedalus","editor","language","markdown","markup","soulmen","textile","ulysses","daedalus","formatted","markdown","souldown","soulmen","textile","today","ulysses","allowed","because","between","clean","click","comes","comment","complicated","concept","devblog","documents","dream","easily","editing","editor","entire","excited","familiar","features","files","forged","heard","hilarious","history","images","included","including","incorporates","keeping","links","markup","modes","objects","piece","private","project","projects","publishing","quote","recommend","response","saving","share","shirt","simple","storing","syntax","syntaxes","thinking","thoughts","touch","treated","trying","variants","whatever","while","works"]
},{
"title": "Tuesday morning at WWDC 2012",
"url": "/2012/06/12/tuesday-morning-at-wwdc-2012/",
"tags": ["personal"],
"date": "Jun 12th, 2012",
"ts": "1339519500",
"summary": "One day into WWDC and I already have a couple of clandestine software previews lined up. For an app junky like me, that s a sweet score. I ll be sure to get the minimum embargo information and let you all know as much as I can about the previews I get. Having a great time hanging out with my favorite devs, and always looking forward to meeting new people. If you re in San Francisco this week, don t hesitate to ping me on Twitter and see if our schedules match up for a coffee or a beer.",
"keywords": ["apple","communities","conference","developers","francisco","google","networking","online","social","states","twitter","united","worldwide","francisco","having","twitter","clandestine","coffee","couple","embargo","favorite","great","hanging","hesitate","information","junky","lined","looking","match","meeting","people","previews","schedules","score","software"]
},{
"title": "Heading to WWDC",
"url": "/2012/06/10/heading-to-wwdc/",
"tags": ["personal"],
"date": "Jun 10th, 2012",
"ts": "1339334640",
"summary": "I m heading to WWDC today. I m going as blogger and tech support for Engadget and TUAW, but I m hoping to have free time to hang out with all the cool bloggers and devs, especially later in the week after the fervor surrounding Monday dies down a little. I m around through Friday if you want to grab a bite/drink and haven t already contacted me, let me know! TUAW will also be doing dev interviews to talk about the motivation behind your apps. We re going to do interviews only, and let you send your own demos in for inclusion in the pieces as we roll them out over the next couple of weeks/months. If you have an app to promote, watch for word on TUAW about the headquarters we re going to set up. Then you can just swing by as your schedule allows. I was so bad about double-booking last year that I think Victor gave up on pre-scheduling I m greatly looking forward to this week. It s my favorite time of year!",
"keywords": ["engadget","friday","itunes","techcrunch","victor","engadget","friday","monday","victor","allows","behind","blogger","bloggers","booking","contacted","couple","demos","doing","double","drink","especially","favorite","fervor","going","greatly","haven","heading","headquarters","hoping","inclusion","interviews","later","little","looking","motivation","pieces","promote","schedule","scheduling","support","surrounding","swing","think","through","today","watch","weeks"]
},{
"title": "Note - Bundle Hunt Bundle is awesome",
"url": "/2012/06/08/note-bundlehunt-bundle-is-awesome/",
"tags": ["bundle","macos"],
"date": "Jun 8th, 2012",
"ts": "1339185600",
"summary": "I just want to point out that the current Bundle Hunt bundle is awesome. I own (and love) every app included and have half of the books, icons and themes or I d buy it myself right now. If you re missing more than $50 worth of the bundled items, it s worth it. You can always gift redundant licenses to friends in need. iStopMotion Home , the best stop-motion animation app available LittleSnapper , still the best app for collecting screenshots and websnaps TotalFinder , the lightest-weight and easiest way to add tabbed-browsing and other handy features (including X for cutting files and pasting elsewhere) Default Folder X , the app that turns your Open/Save dialogs in any program into magically delicious file-handling tools Typinator : it s not TextExpander, but it s close. I m biased. Keyboard Maestro , the most powerful keyboard shortcut and macro utility I ve ever seen Phoneview , full access to the content on your iPhone and iPad an assortment of icons ( Picons ), glyphs ( Glyph Ocean ), Smashing Magazine e-books and WordPress themes (your choice of 4 from ThemeFuse ). There are, at the time of this writing, 10 days left to grab the bundle for US $49.",
"keywords": ["animation","iphone","littlesnapper","motion","pregnancy","totalfinder","wordpress","bundle","default","folder","glyph","keyboard","littlesnapper","maestro","magazine","ocean","phoneview","picons","smashing","textexpander","themefuse","totalfinder","typinator","wordpress","access","animation","assortment","available","awesome","biased","books","browsing","bundle","bundled","choice","close","collecting","content","cutting","delicious","dialogs","easiest","elsewhere","features","files","friends","glyphs","handling","handy","iphone","istopmotion","icons","included","includes","including","items","keyboard","licenses","lightest","macro","magically","missing","motion","myself","pasting","point","powerful","program","redundant","right","screenshots","shortcut","tabbed","themes","tools","turns","utility","websnaps","weight","worth","writing"]
},{
"title": "My Sweet Mac Setup",
"url": "/2012/06/08/my-sweet-mac-setup/",
"tags": ["interview","macos"],
"date": "Jun 8th, 2012",
"ts": "1339180740",
"summary": "If you ve ever wanted to know more about my current Mac-based setup, have a look at my Sweet Mac Setup , part of Shawn Blanc s series of the same name.",
"keywords": ["blanc","operating","shawn","systems","blanc","setup","shawn","based","series","setup","wanted"]
},{
"title": "Desktop cleanup scripts for screencasting",
"url": "/2012/06/06/desktop-cleanup-scripts-for-screencasting/",
"tags": ["applescript","automation","launchbar","scripting","terminal"],
"date": "Jun 6th, 2012",
"ts": "1338991200",
"summary": "I don t screencast a lot, but I do it enough to have a set pattern for preparing to record. I automated the process a few months ago and figured I d share it. The main script requires customization. There s no way I could know what your pattern is, but it s pretty easy to edit. There are enough methods demonstrated in it that you should be able to see how to extend it pretty easily. Or perhaps. as Ben Brooks suggested as a name for my podcast, It s easy. For me. I ll start with a quick one-liner I use just to toggle my Desktop icons on and off for screencasting. It checks the current state and just flips it, so you can run the same command every time. You can run it as a script, alias it in your login profile or hook it up to Launchbar 1 or Alfred 2 . Here it is, short and sweet: It runs a basic command to modify Finder s Desktop icon preferences. To get the value and reverse it, it uses to get the current value and uses (a command line calculator built into the BSD subsystem) to calculate the opposite boolean value of the response. If that command succeeds without error, it relaunches Finder. If you happen to run TotalFinder , you can add at the end of the line. You ll need to customize just about every existing step (GeekTool group, wallpaper path, Dock preferences, etc.) and add your own for additional tasks. You could, for example, launch ScreenFlow and hide your other apps. Whatever works. First, a bash version for command line use. It takes a single parameter ( start or stop ) and runs the appropriate series of commands: Here s a LaunchBar Action version. It s a regular handler, so you can actually run it from anywhere you can launch an AppleScript from (e.g. FastScripts or Alfred). Again, heavy customization needed for your workflow. This version toggles state using the visibility of your Desktop icons as an indicator of which mode you re in. This assumes that under normal circumstances you keep your Desktop icons showing. If that s not the case, you ll be modifying the file anyway, so use a different boolean test in the first line of the handler. Open the script below in AppleScript Editor and save it as a compiled script (scpt) file. If you want to run it with LaunchBar, put it in . That s it, hope some other screencasters find it handy. For Launchbar you ll need an AppleScript wrapper with a line to call this. Alfred should be easier with its direct support for shell scripts, but I haven t tried it.",
"keywords": ["applescript","finder","geektool","launchbar","posix","screenflow","script","shell","totalfinder","action","again","alfred","applescript","brooks","desktop","editor","fastscripts","finder","first","geektool","launchbar","launchbar","restore","screenflow","starting","stopping","totalfinder","whatever","alias","anyway","anywhere","assumes","automated","basic","below","boolean","built","calculator","checks","circumstances","command","commands","compiled","customization","customize","demonstrated","desktop","different","direct","easier","easily","enough","error","example","extend","figured","first","flips","group","handler","handy","happen","haven","heavy","hiding","icons","indicator","launch","liner","login","longer","methods","modify","modifying","needed","normal","opposite","parameter","pattern","perhaps","podcast","preferences","preparing","process","profile","quick","record","regular","relaunch","relaunches","requires","response","restarting","restoration","reverse","screen","screencast","screencasters","screencasting","script","scripts","series","share","shell","short","showing","single","slightly","standard","storing","subsystem","succeeds","suggested","support","takes","tasks","toggle","toggles","tried","under","using","value","version","visibility","wallpaper","widgets","workflow","works","wrapper"]
},{
"title": "Web excursions: June 5, 2012",
"url": "/2012/06/05/web-excursions-june-5-2012/",
"tags": ["bookmarks"],
"date": "Jun 5th, 2012",
"ts": "1338926400",
"summary": "Links of interest from May 29, 2012 through June 5, 2012: Yummy FTP Watcher I actually don t do a lot with FTP these days, but I still love Yummy FTP when I need to. This little $5 app provides some of the original watcher functionality for automating up/downloads using the Yummy FTP engine. Pretty nifty. Punk Hardcore Flyers on Flickr A great collection of punk rock show posters from days gone by. Ah, nostalgia. Revisiting secure Dropbox sharing Great idea from Eddie over at Practically Efficient for Hazel-based expirations on files based on a trailer on the filename. Creative Smart guy, that Andy Rutledge. The expert s guide to Instapaper Macworld Great article on Macworld from Eddie over at Practically Efficient.",
"keywords": ["clients","dropbox","flickr","macworld","protocol","rutledge","yummy","creative","dropbox","eddie","efficient","flickr","flyers","great","hardcore","hazel","instapaper","links","macworld","revisiting","rutledge","smart","watcher","yummy","article","automating","based","collection","downloads","engine","expert","expirations","filename","files","functionality","great","guide","interest","little","nifty","nostalgia","original","posters","provides","secure","sharing","through","trailer","using","watcher"]
},{
"title": "App Review: Found - Spotlight on steroids",
"url": "/2012/06/05/app-review-found-spotlight-on-steroids/",
"tags": ["appreview","dropbox","macos","search","spotlight"],
"date": "Jun 5th, 2012",
"ts": "1338907320",
"summary": "I ve been waiting to write about Found since the last WWDC. I got a preview then, and a few months later got a beta copy. It s pretty amazing. Found is basically a replacement for Spotlight. It activates with a Control key double tap, and provides search results instantly. Right now it indexes and searches attributes and filenames, but not content (I m told that s in the works). Aside from being about one gazillion times faster than Spotlight, the coolest feature is Cloud search. In addition to local files, Found indexes Google Drive (Docs, Spreadsheets, etc.), GMail and Dropbox. All of your cloud data on those services is available as quickly as your local files, and you can Quick Look and drag and drop the results directly from the Found panel. Make a local copy of a Google Doc, or email a Spreadsheet to a co-worker, all without ever opening a web browser. Once your cloud data is indexed, you can even search offline. Found s search is so fast that I ve been using Spotlight a lot less. Found doesn t handle Spotlight search syntax (kind:pdf, date:today, etc.), so Spotlight still has a place for me. The lack of query syntax also means it doesn t search tags, which I thought at first was going to be a deal killer. I like my tags . I ve come to trust that Found will quickly show me the files I m looking for, though as long as I remember some part of the filename. I m not ready to give up OpenMeta tagging yet, but if Found adds content search it might alleviate my need for tags entirely. Found is relatively easy on your system, doing its background processing quietly and without too much CPU load. The indexing process causes a lot of disk access, which during the initial index can cause noticeable slowness. Once it s done, on a decent machine you will probably never notice a difference. Found is a game-changer for me. I ve relied on Spotlight for years, but this is a terrifically well thought out replacement for the often slow and tedious OS X search functionality. Check out the homepage , and pick it up from the Mac App Store . The base application is free and fully functional. As additional services and functionality are added they will likely need to be purchased as add-ons. Give it a try, it comes with the ability to completely uninstall itself and remove its data cleanly. Also, it stores your service credentials in an encrypted keychain and uses no intermediary server to connect to cloud services. Your data is yours.",
"keywords": ["apple","cloud","computing","drive","gmail","google","spotlight","store","aside","check","cloud","control","drive","dropbox","found","gmail","google","openmeta","quick","right","spotlight","spreadsheet","spreadsheets","store","ability","access","activates","added","amazing","attributes","available","background","browser","cause","causes","changer","cleanly","cloud","comes","completely","connect","content","coolest","credentials","decent","difference","directly","doesn","doing","double","email","encrypted","entirely","faster","feature","filename","filenames","files","first","fully","functional","functionality","gazillion","going","handle","homepage","index","indexed","indexes","indexing","initial","instantly","intermediary","itself","keychain","killer","later","likely","local","looking","machine","noticeable","offline","often","opening","panel","preview","process","processing","provides","purchased","query","quickly","quietly","ready","relatively","relied","remember","remove","replacement","results","search","searches","server","service","services","since","slowness","stores","syntax","system","tagging","tedious","terrifically","thought","times","today","uninstall","using","waiting","worker","works","write","years"]
},{
"title": "Mac App Review: Trickster, instant access to recent items",
"url": "/2012/06/04/mac-app-review-trickster-instant-access-to-recent-items/",
"tags": ["appreview","macos","spotlight","utility"],
"date": "Jun 4th, 2012",
"ts": "1338825600",
"summary": "I ve been testing an app called Trickster for a bit now, and it s publicly available today (just in time to be included in the impressive Productive Macs bundle). It s a revamp of Apparent Software s predecessor app, Blast. Trickster basically keeps track of your most recently-used files and applications. It has customizable filters that act like folders for different types of files, folders and apps. A good example of its practical application is instant access to recently-downloaded files and the ability to file, install or view them. I used Blast, and I ve used similar apps like Fresh, but none of them ever stuck for me. Trickster smooths out the process and fills in the missing features. I m using it every day now. You can tell Trickster to ignore certain files, extensions, folders or text found in a filename. Files that are frequently or automatically modified are easy to keep out of the list, keeping it much more relevant. In the recent items list you can select a single item, or create a multiple selection via mouse or keyboard and act on all of them at once. There s a Favorites drawer where you can put frequently-used files, folders and apps, and you can use them as targets to drag files from the main stream to. I have my Applications folder in there for easily installing downloaded apps. I also have my 7 most important applications in there, replacing the space I used to have reserved in my Dock. Since they were the only apps I ever kept permanently in my Dock, I m back to having a very trim one. You can assign a hotkey to pop up the interface, and it s almost completely keyboard navigable. The only keyboard action really missing is the ability to act on a file with something from the Favorites drawer. You can access any of the contextual menu items with M, though. There s also a Flagging feature, and you can filter by flags. There s a default filter for flagged items, but you can also create more specific filters, e.g. a folder for flagged applications or important PDFs. The window is resizable and there are a couple of different layouts available (simple and full). Trickster is US $4.95 until June 11th, after which it will be $9.95. There s a free trial available for download on the product page . If you re interested and you haven t missed the deadline, grab it as part of the Productive Macs bundle (US $39.99) and get a bunch of really cool apps at the same time.",
"keywords": ["blast","computer","context","document","favorites","format","portable","software","trickster","applications","blast","favorites","files","flagging","fresh","productive","since","software","trickster","ability","access","action","almost","applications","assign","automatically","available","bunch","bundle","called","certain","completely","contextual","couple","create","customizable","deadline","default","different","download","downloaded","drawer","easily","example","extensions","feature","features","filename","files","fills","filter","filters","flagged","flags","folder","folders","found","haven","having","hotkey","ignore","important","impressive","included","install","installing","instant","interested","interface","items","keeping","keeps","keyboard","layouts","missed","missing","modified","mouse","multiple","navigable","permanently","practical","predecessor","process","product","publicly","recent","recently","relevant","replacing","reserved","resizable","revamp","selection","similar","simple","single","smooths","space","specific","stream","stuck","targets","testing","today","track","trial","types","using","where","window"]
},{
"title": "iPhone App Review: Slow Feeds, a unique RSS reader for iPhone",
"url": "/2012/06/04/iphone-app-review-slow-feeds-a-unique-rss-reader-for-iphone/",
"tags": ["appreview","iphone"],
"date": "Jun 4th, 2012",
"ts": "1338814500",
"summary": "This is a quick mention of an iPhone app that I ve been trying out and have come to really like. It s called Slow Feeds , and it s a special kind of RSS reader. It s a beautiful interface and syncs with Google Reader, but its primary goal is a unique vision: sort and highlight feeds with lower post volumes so they don t get lost in the river of news. In my RSS lineup most of my favorite feeds post once or twice a day. I have to manually check those feeds because they re barely noticeable if I view folders or posts from all subscriptions at once. This automates the process and puts those articles before the rest. It s not a perfect system it would be a herculean task of text processing to actually determine what was a thoughtfully considered blog post. This just goes by number of posts, but for me it s a good method. Now I m just wishing for an iPad version. If your RSS feeds are a cacophony of link posts and loud, frequent opinions, check it out (US $2.99).",
"keywords": ["aggregator","feedly","google","iphone","kennedy","point","reader","uscgc","feeds","google","reader","articles","automates","barely","beautiful","because","before","cacophony","called","check","considered","favorite","feeds","folders","frequent","herculean","highlight","iphone","interface","lineup","lower","manually","mention","method","noticeable","opinions","posts","primary","process","processing","quick","reader","river","special","subscriptions","syncs","system","thoughtfully","trying","twice","unique","version","vision","volumes","wishing"]
},{
"title": "App Review: Textastic code editor for iPad",
"url": "/2012/06/03/app-review-textastic-code-editor-for-ipad/",
"tags": ["appreview","markdown","writing"],
"date": "Jun 3rd, 2012",
"ts": "1338745320",
"summary": "I ve been meaning to write about Textastic for almost a year now. I m easily distracted by shiny objects, so some things take a while. In the meantime, this app has only gotten better. It s in the iTextEditors chart , but I think it deserves a special mention. I ll try to write up a few more of my favorites before another year passes me by. Textastic (US $9.99) is a code editor for iPad. I ll be the first to admit that I rarely (never) do any serious coding on my iPad. Even with an external keyboard hooked up, it just doesn t provide the environment I need for any kind of coding task. However, Textastic holds my fascination with some amazing capabilities and I ve used it quite frequently to make web-related changes to existing code. It s also a pretty darn good tool for Markdown writing. The primary focus is on coding, as is evident in the core feature set: code completion, TextMate snippet capabilities, syntax highlighting and auto-indentation make it a pleasure to use, even for quick edits. You can show invisibles and use soft tabs (spaces) when you want to. There s a symbol navigator that recognizes, I think, every language (over 80) that Textastic supports. You also have complete control over document properties, including line endings, encoding and language definition. There s a lot here for writers, too. Line, word and character counts, Markdown preview and Dropbox integration start the list. There s TextExpander support. There s auto-correct and auto-capitalization. The symbol navigator recognizes Markdown headers for quick navigation of long documents on a small screen. You can create your own document templates, which I m using to quickly create blog posts with TextMate blogging bundle headers. In addition to the Markdown preview, syntax highlighting and editing features, you can also email HTML and Markdown files. From here on out the list of features gets a little insane. Not in a bad way, just in an I-can t-possibly-cover-all-of-this way. Here s a sample: Navigation/selection wheel on two-finger tap gives you always-available tools for quick cursor movement and text selection. Favorite part: you can quickly switch which side of the selection the cursor keys are controlling to modify a selection in either direction. Import definition files for custom templates, snippets and code completion, as well as Textmate-compatible theme/syntax definitions. Textastic handles a slew of remote connection options, including FTP, SFTP, WebDAV",
"keywords": ["howbert","idisk","markdown","textexpander","textmate","windows","advanced","check","coding","dropbox","favorite","however","import","markdown","missing","moving","navigation","textexpander","textmate","textastic","textmate","webdav","writing","admit","affiliate","almost","amazing","another","available","awesome","based","before","blogging","brackets","breeze","bundle","button","capabilities","capitalization","changes","character","chart","coding","compatible","computer","connect","control","controlling","corner","counts","cover","covers","create","cursor","custom","definition","definitions","deserves","desktop","direction","directory","distracted","document","documents","doesn","easily","editing","editor","edits","either","email","encoding","endings","environment","especially","evident","external","extra","fascination","favorites","feature","features","files","finger","first","focus","gesture","gives","gotten","handles","handling","handy","headers","highlighting","holds","homepage","hooked","hoping","icloud","idisk","itexteditors","itunes","including","indentation","insane","integration","invisibles","keyboard","lacking","language","little","meaning","meantime","mention","modify","movement","navigation","navigator","numbers","objects","options","paired","passes","possibly","posts","preview","primary","properties","punctuation","quick","quickly","quotes","rarely","recognizes","related","remote","replace","right","sample","screen","search","selection","serious","server","shiny","shows","small","snippet","snippets","spaces","special","support","supports","switch","symbol","symbols","syntax","templates","theme","think","tools","typed","unique","using","visit","wheel","while","wrapping","write","writers","writing"]
},{
"title": "Video Evidence: Lion search bar in CSS/JS",
"url": "/2012/06/02/video-evidence-lion-search-bar-in-cssjs/",
"tags": ["javascript","marked","video"],
"date": "Jun 2nd, 2012",
"ts": "1338679920",
"summary": "I did a little hacking on Marked today and thought I d share the results. I haven t been able to get an official incremental find working in Webkit it only wants to work on editable text and forcing the find API yields very unsatisfactory results (as you can see in the current version of Marked by hitting F, searching and then using G to jump to the first result). Out of frustration, I decided to build the damn thing in CSS and JavaScript. It worked. If I get around to extracting and generalizing the relevant code I might publish this as a plugin of some sort. For now I m just showing off the result. While it s not vital functionality for Marked, I m pretty psyched to have it working. This will definitely make it into the next version!",
"keywords": ["cascading","formats","interface","javascript","programming","sheets","style","webkit","javascript","marked","webkit","while","build","decided","definitely","editable","extracting","first","forcing","frustration","functionality","generalizing","hacking","haven","hitting","incremental","little","official","plugin","psyched","publish","relevant","results","searching","share","showing","thought","today","unsatisfactory","using","version","vital","wants","worked","working","yields"]
},{
"title": "The Bro Show Ep. 109",
"url": "/2012/05/30/70decibels-ep-109/",
"tags": ["interview","podcast"],
"date": "May 30th, 2012",
"ts": "1338411720",
"summary": "I joined Myke and Terry again today to discuss a whole bunch of stuff I don t know nearly as much about as I should. Please take the episode title as sarcastically as possible.",
"keywords": ["android","apple","languages","markup","programs","television","terry","again","bunch","episode","joined","nearly","possible","sarcastically","stuff","title","today","whole"]
},{
"title": "Frictionless Capture Cards",
"url": "/2012/05/29/frictionless-capture-cards/",
"tags": ["notes","paper"],
"date": "May 29th, 2012",
"ts": "1338341940",
"summary": "I have to admit, I get a tiny bit annoyed when I see people blog about going back to paper. It always feels a bit like they re just trying to buck a trend 1 . That being said, I appreciate paper for its two strongest points: speed and ubiquity. I can almost always find something to write on faster than I can load up a notes app on my iPhone. If I need to write something down fast, it s going on paper. I get it. I don t write anything long form on paper, but I do touch the stuff. That s why Capture Cards from Frictionless Tools 2 have been of great interest to me 3 . My primary tree-based notetaking system consists of 3x5 index cards which I carry around in a Moleskine Pocket Memo Portfolio . It looks like a regular Moleskine, but inside it s just an accordion folder that fits 3x5 cards. I carry about 10 blank cards in the front of the folder. When I need to capture anything faster than I can get it into any kind of digital form, I jot it down on the card 4 . When the urgency has passed, I add a date and basic subject line to the card. When I m back at a computer (or have long enough to make a transfer on an iOS device), I put the note into an appropriate place in my digital filing system (OmniFocus, nvALT, Address Book, etc.). Once the info is transferred, the index card goes into a VAULTZ index box and is filed by the first primary letter of the subject line in alphabetical folders. They re pretty. Standard red-line-at-the-top-blue-lines-below index cards aren t. I like pretty. They have a very handy place to add the date (or whatever you want), which makes it really easy to sift through multiple cards and compare. Having a sort field consistently positioned and colored makes it really smooth to flip through quickly. Beyond a date box and classy header line, they re unstructured. There s a grid, which is a godsend for those of us with horrible penmanship, but it s unimposing and doesn t dictate an orientation or content order for the card. If you re looking for a quick way to take notes that doesn t force you into a linear order (i.e. bound notebook) and allows sorting and filing later, you should take a look at the Capture Cards . Because, obviously, computers are just a trend. Product of Aaron Mahnke , designer, writer and Read Trust ringleader. Yes, I have previously used the Helvetindex cards that these have replaced. With my trusty Fisher Space Bullet Pen, of course. Check out the Writer s Edge (no",
"keywords": ["iphone","omnifocus","aaron","address","because","beyond","bullet","capture","cards","check","fisher","frictionless","having","helvetindex","mahnke","moleskine","omnifocus","pocket","portfolio","product","space","standard","tools","vaultz","writer","accordion","admit","affiliation","allows","almost","alphabetical","annoyed","appreciate","based","basic","below","blank","bound","capture","cards","carry","classy","colored","compare","computer","computers","consistently","consists","content","designer","device","dictate","digital","doesn","enough","family","faster","feels","field","filed","filing","first","folder","folders","force","front","gifts","godsend","going","great","handy","header","horrible","iphone","index","inside","interest","later","letter","linear","looking","looks","makes","multiple","notebook","notes","notetaking","nvalt","occasional","often","options","orientation","paper","passed","penmanship","people","points","positioned","previously","primary","quick","quickly","regular","replaced","ringleader","sales","smooth","sorting","speed","strongest","stuff","system","through","touch","transferred","trend","trusty","trying","ubiquity","unimposing","unstructured","urgency","whatever","write","writer"]
},{
"title": "Web excursions: May 29, 2012",
"url": "/2012/05/29/web-excursions-may-29-2012/",
"tags": ["bookmarks"],
"date": "May 29th, 2012",
"ts": "1338310800",
"summary": "xmlformat: XML Document Formatter In working with RSS feeds for the various sites I work on I often use to pull down raw feeds without any of my default browser handlers interfering. This little CLI is easy to pipe the output through and get much, much more readable results (and work better with and as well). sysutils/waiton Available through , this little command line utility lets you wait for events from kqueue before proceeding with a script. I ve been looking for a simple solution like this for a while. Which hashing algorithm is best for uniqueness and speed? Because I know you ve been wondering about this. I have. Maybe I should stop projecting so much. Rbutr: a browser extension that finds rebuttals to web pages you re reading Haven t tried this yet, but it sounds like something that should be used by any blogger about to link an article. Screw the power users We re the ones who made computers so hard to use. And we ve done it by catering to power users",
"keywords": ["function","available","because","document","formatter","haven","links","maybe","rbutr","screw","algorithm","article","before","blogger","browser","catering","command","computers","default","events","extension","feeds","finds","handlers","hashing","interest","interfering","kqueue","little","looking","often","output","pages","proceeding","projecting","readable","reading","rebuttals","results","script","simple","sites","solution","sounds","speed","sysutils","through","tried","uniqueness","users","utility","various","while","wondering","working","xmlformat"]
},{
"title": "Web excursions: May 19, 2012 - May 23, 2012",
"url": "/2012/05/23/web-excursions-may-19-2012-may-23-2012/",
"tags": ["bookmarks"],
"date": "May 23rd, 2012",
"ts": "1337810400",
"summary": "Links of interest from May 19, 2012 through May 23, 2012: wysihtml5 - A better approach to rich text editing wysihtml5 is an open source rich text editor based on HTML5 It uses a sophisticated security concept and aims to generate fully valid HTML5 markup Leap Motion Oh boy. DocHub Instant Documentation Search Super handy. Strftime All purpose strftime date string creator. Handy. Zip Share From Eugene Gordin: Share files with Dropbox simply, securely, and for a limited time period. Dropbox, Hazel and Keyboard Maestro goodness.",
"keywords": ["dropbox","hazel","dochub","dropbox","eugene","gordin","handy","hazel","instant","keyboard","links","maestro","motion","search","share","strftime","super","approach","based","concept","creator","editing","editor","files","fully","goodness","handy","interest","limited","markup","securely","security","simply","sophisticated","source","strftime","string","through","valid","wysihtml"]
},{
"title": "Git logger revisited",
"url": "/2012/05/21/git-logger-revisited/",
"tags": ["dayone","logging"],
"date": "May 21st, 2012",
"ts": "1337654940",
"summary": "I m working out of NYC this week, and putting in a little leisure coding time this evening. I realized as my nvALT git logger note updated that I was only running the logger on my home machine and it wasn t logging things I didn t explicitly ssh in and pull down. I updated the script tonight to do a fetch before and include remotes when it creates the log entries. To recap, this is a simple script to grab a log of local git repositories specified in a file, format it in Markdown and add it to a local text note and/or Day One. In addition to handling any commits pushed to a known remote, it now limits the commit log to only commits authored by the user.name setting in your .gitconfig file, or (if that fails) the contents of the environment variable . If neither of those exist, it will allow all authors into the log. Further, I m limiting the commits to the working branch (excluding my feature/hotfix branches), and ignoring merge commits. That keeps things trim. Lastly, I added a minor formatting change to insert a Markdown horizontal rule between entries. It s the little things that count. If you happen to care about this bizarre little project, the gitlogger.rb gist is updated, and you can check the original post for full code and installation instructions.",
"keywords": ["configuration","management","markdown","tools","lastly","markdown","added","allow","authored","authors","before","between","bizarre","branch","branches","change","check","coding","commit","commits","contents","count","creates","entries","environment","evening","exist","explicitly","fails","feature","fetch","format","formatting","gitconfig","gitlogger","handling","happen","horizontal","hotfix","ignoring","installation","instructions","keeps","leisure","limiting","limits","little","local","logger","logging","machine","merge","minor","neither","nvalt","original","project","pushed","putting","realized","recap","remote","remotes","repositories","running","script","setting","simple","tonight","updated","variable","working"]
},{
"title": "LinkSmasher updated, works once again",
"url": "/2012/05/19/linksmasher-updated-works-once-again/",
"tags": ["dropzone","plugin"],
"date": "May 19th, 2012",
"ts": "1337432400",
"summary": "If you re using Dropzone (and why wouldn t you be?), I updated my LinkSmasher destination recently. You can drop text on it (or just click it to use the clipboard) and it will scan for any links in the text, compile them and create a single link for the group using linkbun.ch . It s a handy way to share a list of urls and allow the recipient to open them all at once (and works really well with TabLinks for sharing an entire browsing session). If there s only one URL in the text, it will just shorten it with bit.ly and return the result in your clipboard. I d really like to get this working with bit.ly collections, but I haven t checked lately to see if they ve added that to the API. If I get around to it, and they did, that will be next up for this little project. You can find all contributed Dropzone Destinations on Github ( direct link to LinkSmasher ). Install Destinations by saving the script to a file in with a extension, then add a new destination in Dropzone preferences and it will be an option.",
"keywords": ["camerabag","dropzone","finder","github","howbert","interface","iphone","programming","destinations","dropzone","github","install","linksmasher","tablinks","added","allow","browsing","checked","click","clipboard","collections","contributed","create","destination","direct","entire","extension","group","handy","haven","linkbun","links","little","preferences","project","recently","recipient","return","saving","script","session","share","sharing","shorten","single","updated","using","working","works","wouldn"]
},{
"title": "Marked 1.5 Sneak Peek",
"url": "/2012/05/18/marked-1-5-sneak-peek/",
"tags": ["marked"],
"date": "May 18th, 2012",
"ts": "1337349600",
"summary": "I ve been spending way too much time documenting the new features in Marked 1.5. I thought I d share some screenshots, though. No explanations, but if you watch closely you might see something you like. Feel free to hum along. Update: Oh, what the heck. Here s the current changelog. These Marked features are complete, but some may not make it into the final release, primarily depending on how sandboxing goes in the next week or two. Proofreading mode, stops updates, allows annotation Spell checking Guess panel/grammar checking Highlights/Annotations, exportable Keyword highlighting Live highlight common/overused phrases regex/wildcard search for key phrase highlighting Keyword drawer to easily add temporary keywords for highlighting while previewing Advanced text stats with reading time Option to quit after last window closes Discount parser option HTML preview improvements Detect images in Markdown and HTML and watch for changes Detect php include( file )s and watch for changes Detect JS and CSS in HTML files and add them to the watch list More 3rd-Party app support MarsEdit VoodooPad preview current page Preview clipboard Watch any folder and preview the most recently changed file in that folder Field to add additional arguments to custom processor Export palette/Export additional file types export DOCX or ODT Improved RTF/RTFD export Paginated PDF export option The beta list is pretty much full, but if you really think you d be a great beta tester, let me know .",
"keywords": ["bbedit","cascading","element","markdown","markup","sheets","style","advanced","allow","annotations","bbedit","detect","discount","export","fixed","field","github","guess","handle","highlights","ignore","improved","keyword","markdown","marked","markup","marsedit","paginated","party","preview","process","proofreading","recursion","spell","spitting","style","terminator","upstanding","vastly","voodoopad","watch","allows","annotation","arguments","before","blocks","break","brighten","change","changed","changelog","changes","check","checking","clipboard","close","closely","closes","colons","comments","common","compatibility","custom","depending","documenting","download","drawer","easily","explanations","export","exportable","features","feedback","fenced","files","first","folder","grammar","great","header","headers","highlight","highlighting","images","improved","improvements","included","interpret","inverse","keywords","level","limit","links","location","metadata","monitored","newlines","overused","palette","panel","parser","phrase","phrases","preference","prevent","preview","previewing","primarily","printing","processing","processor","quote","reading","recently","regex","release","reload","removing","sandboxing","screenshots","script","search","share","showing","spending","stats","stops","style","support","temporary","tester","think","thought","types","updates","usability","using","validating","watch","while","wildcard","window"]
},{
"title": "Markdown Editing for Sublime Text 2: humble beginnings",
"url": "/2012/05/17/markdown-editing-for-sublime-text-2-humble-beginnings/",
"tags": ["markdown","multimarkdown","sublimetext"],
"date": "May 17th, 2012",
"ts": "1337293800",
"summary": "I was disappointed to find that there weren t any good packages available for Sublime Text 2 that added decent Markdown editing features. I figured it was time to learn my way around. I still haven t dug into Python, so my script-fu in there is weak right now. I got a few things working, though, and this will evolve as I learn new things. I ll probably look back at this first version with embarrassment, but I ll just overwrite it with better stuff as it progresses. This package will make MarkdownEditor your default theme for Markdown/MultiMarkdown files. Adjust it to your liking or remove the line from the .sublime-settings files Asterisks and underscores are autopaired and will wrap selected text If you start an empty pair and hit backspace, both elements are deleted If you start an empty pair and hit space, the right element is deleted backticks are paired Left bracket pairing is modified to eliminate the selection and leave the cursor at a point where you can insert a or pair for a link V will paste the contents of the clipboard as an inline link on selected text R will paste the contents of the clipboard as a reference link K inserts a standard inline link, K inserts an inline image B and I are bound to bold and italics (Markdown). If you don t like losing your default shortcut for Build , modify the sublime-keymap file. This only overrides while editing Markdown files. The theme pays some homage to Byword , but I make no pretense that it s anywhere as pretty. Just download or clone the MarkdownEditing repo into a MarkdownEditing folder within your folder. You may have to restart Sublime to get it working, but once it s installed (if all goes well), you should be able to open a Markdown file and see my custom theme. If you do, then the features listed above should also be available. Right now, this is designed to be tweaked. I can t guess what you re preferred editing environment is like, so I went with mine. I d love to see any permutations you come up with. Oh, and by the way, if you re doing any theming for Sublime Text, here s a handy little plugin I whipped up to copy the scope of the character after the cursor to the clipboard for easily adding keys to a .tmtheme XML file:",
"keywords": ["github","markdown","python","readme","sublime","textmate","adjust","asterisks","belesky","build","byword","byworded","github","installation","markdown","markdownediting","markdowneditor","multimarkdown","philip","python","readme","right","sublime","textmate","above","added","adding","anywhere","autopaired","available","backspace","backticks","bound","bracket","character","check","clipboard","clone","contents","cursor","custom","decent","default","deleted","designed","disappointed","doing","download","easily","editing","element","elements","eliminate","embarrassment","empty","environment","evolve","features","figured","files","first","folder","guess","handy","haven","homage","image","inline","inserts","installed","italics","keymap","learn","leave","liking","listed","little","losing","modified","modify","overrides","overwrite","package","packages","paired","pairing","paste","permutations","plugin","point","preferred","pretense","progresses","remove","restart","right","scope","script","selected","selection","settings","shortcut","space","standard","stuff","sublime","theme","themes","theming","tmtheme","tweaked","underscores","version","weren","where","while","whipped","within","working"]
},{
"title": "Web excursions: May 9, 2012 - May 14, 2012",
"url": "/2012/05/14/web-excursions-may-9-2012-may-14-2012/",
"tags": ["bookmarks"],
"date": "May 14th, 2012",
"ts": "1337032860",
"summary": "Links of interest from May 9, 2012 through May 14, 2012: git playback Cool idea for visualizing git commits that I d love to see developed further. Experimental Page Layout Inspired by Flipboard Very nice. Why Nikola Tesla was the greatest geek who ever lived The title kind of says it all, but if you ve ever thought that Thomas Edison invented anything, have a read. Evernote Acquisitions I m on the same path as Gabe on this one. My breaking point was export, and realizing I had a couple thousand notes that were really never going to be much good elsewhere. Here s hoping that Evernote starts focusing on things like that instead of half-baked integrations with acquired applications. Safari Add-on - Pinboard.in: Better Keyboard updated link I started working on something like this a while ago, but Danny Peck beat me to it and created this awesome Safari extension for adding keyboard shortcuts to the Pinboard web interface. Check it out. How to delete the Dock delay * Make a hidden dock appear instantly when your cursor hits the bottom of the screen. *Bonus: This also removes the need for the double drag in Lion fullscreen.",
"keywords": ["edison","evernote","flipboard","google","interface","nikola","pinboard","safari","tesla","thomas","acquisitions","bonus","check","danny","edison","evernote","experimental","flipboard","inspired","keyboard","layout","links","nikola","pinboard","safari","tesla","thomas","acquired","adding","appear","applications","awesome","baked","bottom","breaking","commits","couple","created","cursor","developed","double","elsewhere","export","extension","focusing","fullscreen","going","greatest","hidden","hoping","instantly","integrations","interest","interface","invented","keyboard","lived","notes","playback","point","realizing","removes","screen","shortcuts","started","starts","thought","thousand","through","title","updated","visualizing","while","working"]
},{
"title": "Regarding my dream Markdown editor",
"url": "/2012/05/09/regarding-my-dream-markdown-editor/",
"tags": ["editor","markdown"],
"date": "May 9th, 2012",
"ts": "1336611960",
"summary": "While there was some excitement and hearty agreement with the list of my ideal Markdown text editor features , there was also some criticism. There were some valid points in all of the critiques, and I d like to address them. I ll do so by rambling a bit. First, I think that some critics felt the list was overwhelming, and didn t really dive in and consider the ramifications (or lack) of the features mentioned. I think the length and detail of the text was misleading when skimmed. The feature set is not as intrusive as it looks at first glance. There was also a healthy portion of Markdown is plain text, I want to edit it as plain text. And that s fine. If you don t need anything more than TextEdit or your favorite code editor, then a Markdown editor isn t really your market anyway. The list and any debate surrounding it is for people who use Markdown-specific editors and want to expand on them. There s room for those who fall in between, of course, and I understand that anything that makes Markdown editing into a word processor is counterproductive. Markdown is also, however, about convenience. Increasing productivity while writing is my goal, not adding buttons, bloat or new markup features. My initial list was formulated over several years, but written in about 20 minutes. It was loosely organized and quickly typed. I ll attempt here to sort things a little better as I expound on my requests. This probably won t be brief. Apologies in advance 1 . My dream editor s features are transparent. Byword is a great example of this. You can just edit text in it with nothing standing in your way. However, it has a lot of handy tricks under the surface if you learn how to access them. They re not blatant you have to seek them out. Many of the items on my list fall into this category. They re not attached to standard keyboard motions, so you d never know they were there. This is the basis for all of my requests. They are features that should flow with you, not jump out at you. Having more advanced features assigned to key combinations that you d never type accidentally does not add friction to standard text editing. It adds power for those who want to use them. There s no reason, in my mind, not to have non-standard editing features available if they don t interfere with standard Cocoa text field features. Many of the items in my list mentioned an unspecified hotkey or keyboard shortcut. I didn t assign anything because that isn t really important",
"keywords": ["editor","element","keyboard","markdown","shortcut","textmate","allan","apologies","automatically","based","blogsmith","bundle","byword","cloud","cocoa","command","converting","developers","editor","elastic","elegantly","features","first","having","however","increasing","invisible","javascript","keyboard","learn","markdown","moving","odgaard","properly","quicktags","return","rightly","selecting","service","services","specifications","system","textedit","textmate","thread","while","wrapping","writer","ability","above","access","accidentally","across","action","adding","address","adore","advanced","again","agnostic","agree","agreement","ahead","allow","almost","among","angle","annoyance","annoying","another","anyway","appropriately","arguments","array","arrow","assign","assigned","asterisk","attached","autocompletion","automatically","available","avoid","backlink","backspace","based","basis","batch","because","becoming","before","beginning","behavior","behaviors","believe","below","between","beyond","bindings","blatant","bloat","block","blocks","borrowed","bottom","boundary","bracket","brackets","breaking","breaks","brettterpstra","brief","broken","brought","browser","built","bundle","bundles","buttons","byword","bywordapp","called","category","changes","changing","character","characters","check","choice","choose","class","clean","clipboard","color","combination","combinations","commonly","completely","concede","connected","consider","consistent","context","continuation","convenience","convention","conventions","counterproductive","create","creating","criteria","criticism","critics","critique","critiques","cursor","debate","dedicated","default","deleting","designed","desires","detail","developers","different","dimming","direction","dizzying","document","doesn","downloads","dream","dynamite","editing","editor","editors","efficient","elasticthreads","elegant","emphasizing","endnote","endnotes","enhanced","enjoy","enough","environment","environments","especially","eventually","evolve","exact","example","examples","excitement","expand","expound","extra","fairly","faithful","favorite","feature","features","field","finish","firing","first"]
},{
"title": "Web excursions: May 9, 2012",
"url": "/2012/05/09/web-excursions-may-9-2012/",
"tags": ["bookmarks"],
"date": "May 9th, 2012",
"ts": "1336586340",
"summary": "The Best Markdown Editor Is Any Editor Dr. Drang s response to my Markdown editor wishlist post. I ll save commentary until I have time to expound, but here s the other side. Open 1Password Logins from LaunchBar or QuickSilver Handy script to extract your 1Password logins to a bookmarks file that Launchbar can index. One-click logins for Launchbar! (That ll show those Alfred users ) DuckDuckHack Sweet. The MacSparky Paperless Field Guide iPad only iBook. I beta tested for Mr. Sparks and can tell you that it s a great read with an inspiring level of interactivity. Twitter conversation with NateBoat My favorite Twitter conversation this week.",
"keywords": ["alfred","amboynensis","ambulyx","launchbar","markdown","quicksilver","twitter","alfred","drang","duckduckhack","editor","field","guide","handy","launchbar","launchbar","links","logins","macsparky","markdown","nateboat","paperless","password","quicksilver","sparks","twitter","bookmarks","click","commentary","conversation","editor","expound","extract","favorite","great","ibook","index","inspiring","interactivity","interest","level","logins","response","script","tested","users","wishlist"]
},{
"title": "Scatterbrains: git as biographer",
"url": "/2012/05/08/scatterbrains-git-as-biographer/",
"tags": ["dayone","logging"],
"date": "May 8th, 2012",
"ts": "1336489200",
"summary": "This is another of my attempts at keeping track of my day in an orderly fashion. It s a pretty simple idea. Given that most of of what I do is stored in git repositories, my commit logs are my best bet for seeing what I ve accomplished each day. I just needed to pull them together and bundle them up without having to think about it. If a lot of your work happens in git repositories and you make frequent commits, this might be of use to you. This script runs nightly and visits a list of local git repositories to extract a log of any commits for the day. It formats them as Markdown and can log them to Day One or just to a plain text file (single file, appended). There s an accompanying shell command for easily adding the current directory as a repo to check. Git notes are included, as is body text of the commit if it exists. Formatting creates an unordered list, and short hashes for the commits are added at the end of the commit message, just in case you need them. As usual, if you re interested in trying it, I m happy to share Save the script below ( gist link ) as in a script or bin folder on your drive. Use the variables at the top to set it up for logging to Day One (), or enter a path to a text file (). If you don t want to use text file logging, just set that option to false . If you re logging to Day One, see this post for more instructions. This script doesn t need the CLI tool, but if you re not using iCloud for storing your journal, you ll need to modify the paths to point to your journal file. The second little script ( gist link ) is a bash function for adding whatever directory I m working in to the list that the logger uses to find repos for logging. For consistent results in building the repo list, run the command from the base directory of the git repository. Set it once and forget it. You can remove repos from logging by editing the file at . You can also just create that file by hand: each line is a repo, with the title first, followed by a colon, followed by the path. Add this function to your to be able to mark the current directory for logging by typing , where Alias is the name you want to appear for the repo in your log. To automate the script, I suggest using (the OS X version of ). Use Lingon or copy the code below into a file called and save it in . After creating the file, you ll want to run to get it started (or log out and back in, but that takes too long). The code as is will set up the logger to run",
"keywords": ["command","control","directory","github","icloud","interface","markdown","revision","working","alias","automatic","formatting","label","lingon","manual","markdown","maybe","programarguments","scheduling","above","accomplished","added","adding","another","appear","appended","attempts","automate","automatically","below","building","bundle","called","check","colon","command","commit","commits","consistent","contributions","create","creates","creating","custom","daily","directory","doesn","drive","easily","editing","enter","exists","extract","false","fashion","first","folder","followed","forget","formats","frequent","function","gists","happens","happy","hashes","having","icloud","included","install","installation","instructions","interested","journal","keeping","links","little","local","logger","logging","looks","match","message","modify","needed","night","nightly","notes","nvalt","orderly","paths","personal","point","remove","repos","repositories","repository","results","script","second","seeing","setup","share","shell","short","simple","single","somebody","started","statement","stored","storing","suggest","suggestions","takes","theme","think","title","together","track","trying","typing","unordered","using","values","variables","version","visits","welcome","whatever","where","workflow","working","works"]
},{
"title": "Web excursions: April 25, 2012 - May 7, 2012",
"url": "/2012/05/07/web-excursions-april-25-2012-may-7-2012/",
"tags": ["bookmarks"],
"date": "May 7th, 2012",
"ts": "1336413600",
"summary": "Links of interest from April 25, 2012 through May 7, 2012: Use anchor tags to parse URLs into components Joe Bartlett pointed me to this great riff on a technique for parsing urls in javascript . Kudos. Over 46 Powerful Geeklets and Scripts Great roundup of GeekTool geeklets. Some of the best I ve seen are mixed in there. grunt: JavaScript Build scripts. Nice. Boots Twitter Bootstrap cli This is pretty sweet if you re using Bootstrap for any project. Report Text Message Spam to AT T A comprehensive how-to from TidBITS for reporting spam TXT messages.",
"keywords": ["bootstrap","geektool","github","javascript","jquery","locator","resource","twitter","bartlett","boots","bootstrap","build","geektool","geeklets","great","javascript","kudos","links","message","powerful","report","scripts","tidbits","twitter","anchor","components","comprehensive","geeklets","great","grunt","interest","javascript","messages","mixed","parse","parsing","pointed","project","reporting","roundup","scripts","technique","through","using"]
},{
"title": "My ultimate Markdown editor wishlist",
"url": "/2012/05/06/my-ultimate-markdown-editor-wishlist/",
"tags": ["editor","markdown"],
"date": "May 6th, 2012",
"ts": "1336338720",
"summary": "There are a few great Markdown text editors available, and more being worked on right now. I want to put a list of features out there that I think any true Markdown editor should include. Some of these are implemented in one editor or another, but nothing has brought it all together (aside from TextMate with all of my customizations, and even that lacks some of the polish mentioned below). Preferably Command-B and Command-I. Selection should remain (expanded to include inserted emphasis characters) so that I can add multiple emphasis if I want. Typing any characters other than emphasis or auto-paired characters (including Space) at this point should move the cursor to the right, deselecting the text and continuing to type after the emphasis end. Intelligent indentation Creating a newline should maintain the previous line s indentation, except when ending a list, in which case the indentation should be removed. Pasting text should remove indentation from the text and preserve the current indentation of the preceding line. List continuation Pressing enter at the end of a list item should create a new list item at the same indentation level and with the same list type, incrementing the number if it s an ordered list. Pressing return on a line that contains only the list item delimiter (no text) should remove that delimiter and insert a newline. Never leave me with an orphaned, empty list item. Auto-pairing Needs to be smart enough to know when not to pair: Avoid pairing when inserting a starting element when there s a non-whitespace character immediately to right, or when inserting a paired element at the end of a string that begins with an unclosed starting element. When the first element of a pair is typed while text is selected, it should wrap the selected text with the pair. Unlike pairing, the cursor should be placed outside of the last character of the pair, allowing you to start typing immediately. Link pasting Elastic Threads has worked some really intelligent link paste detection into nvALT, and I love it. If a link is pasted while text is selected, it adds an inline link to the selected text using the pasted url. If it s at the beginning of a line, you can paste it as a reference title and position the cursor inside the title brackets. Pasted by itself with leading and trailing whitespace, it should make a self-link (). Tab indents entire selection block God help you if Tab deletes a selection instead.",
"keywords": ["byword","character","editor","element","keyboard","markdown","service","shortcut","textmate","tools","whitespace","ability","arrow","avoid","backspacing","blockquote","blogsmith","bundle","byword","characters","choose","command","control","creating","elastic","emphasis","footnote","headline","intelligent","markdown","needs","obvious","pasted","pasting","preferably","pressing","return","right","running","selection","service","shift","shortcut","shortcuts","space","table","textmate","threads","tools","typing","unlike","using","wrapping","writing","added","adventure","ahead","allowing","another","applied","aside","autocompletion","available","aware","based","basic","before","beginning","begins","behavior","below","between","blank","block","blockquote","bracket","brackets","break","breaking","brought","bundle","capability","change","changing","character","characters","clipboard","closing","collected","colon","compact","compatiblity","confusing","contains","contents","context","continuation","continuing","conversion","convert","create","creation","cumbersome","cursor","customizations","cycling","decrement","deletes","delimiter","deselecting","desires","detection","developers","document","domain","easier","editing","editor","editors","element","emphasis","empty","ending","enough","enter","entire","especially","except","expanded","feature","features","finish","first","followed","footnote","function","great","header","headers","hearing","helpful","hotkey","implementations","implemented","includes","including","increase","increment","incrementing","indentation","indenting","indents","inline","inserted","inserting","insertion","inside","intelligent","itself","jumping","lacks","later","leading","leave","level","links","lists","looping","maintain","major","marker","matching","mentioned","method","middle","missing","modifying","moves","moving","multiple","navigation","necessarily","nested","newline","nothing","nvalt","ordered","orphaned","outdenting","outside","paired","pairing","paragraph","parse","paste","pasted","pasting","personal","placed","point","polish","position","possibly","preceding","preferably","preserving","press","pressed","quote","references","referencing"]
},{
"title": "Natural Language Date Service update",
"url": "/2012/05/05/natural-language-date-service-update/",
"tags": ["automator","naturallanguage","scripting","service"],
"date": "May 5th, 2012",
"ts": "1336252080",
"summary": "I made a small update to the natural language date Service that I put together a while back . I wanted it to handle input formats like +3 to get a date for 3 days from right now, and to handle adding times to the output if there s a time-like string in the input. Just a couple of tweaks because I found I needed them. The download has been updated (see bottom of post), and we ll call it version 1.1. p.s. I know I ve been a little quiet on the blog lately, I ve had my head buried in too many projects. Marked has some fantastic new features, though, including MarsEdit and VoodooPad support, as well as the ability to accept an entire folder as input and always preview the most recently-edited text file. The latter is perfect for nvALT and Jekyll blogs. Lots of writing to do for other projects, too, so there may be some more dead air. I m not gone, I m just making stuff. Convert Date - Natural Language Date Service v1.3 Download Convert Date - Natural Language Date Service v1.3 A System Service which takes selected text and parses it into a standard date format, using keywords at the beginning to define which format to use. Published 06/01/13. Updated 06/01/13. Changelog Donate More info Your support is greatly appreciated! Or me on GitHub!",
"keywords": ["jekyll","language","linguistics","marsedit","natural","sciences","social","voodoopad","changelog","convert","donate","download","github","jekyll","language","marked","marsedit","natural","published","service","system","updated","voodoopad","ability","accept","adding","appreciated","because","beginning","blogs","bottom","buried","couple","define","download","edited","entire","example","fantastic","features","folder","format","formats","found","greatly","handle","including","input","keywords","language","latter","little","making","natural","needed","nvalt","output","parses","preview","projects","quiet","recently","right","selected","small","standard","string","stuff","support","takes","times","together","tweaks","updated","using","version","wanted","while","writing"]
},{
"title": "Web excursions: April 20, 2012 - April 24, 2012",
"url": "/2012/04/24/web-excursions-april-20-2012-april-24-2012/",
"tags": ["bookmarks"],
"date": "Apr 24th, 2012",
"ts": "1335290400",
"summary": "Links of interest from April 20, 2012 through April 24, 2012: Putting the roar in file management the new ForkLift 2.5 The Path Finder 6 release piqued my interest, but Forklift has added a lot of cool new stuff, too. TotalFinder may still be my top choice, but if you re looking for something more powerful, check this out. Searching nvALT with LaunchBar In case you re not familiar with the url syntax added by Zachary and also found in nvALT (as nvalt://), it can be used for integration with LaunchBar, Quicksilver and Alfred. MacSparky gets the ball rolling here. Beckism.com: Learning to code I get this question a lot, and I never know what to say. From now on, I m sending people here when they ask me how to get started with programming. Trunk Notes for Mac I m a little late seeing this, but it s exciting. I m ecstatic about the VoodooPad 5 release, but desktop wikis for Mac is an under-populated arena and I absolutely love the iOS version of Trunk Notes. (via @tombarys ) Visualizing iOS Text Editors Kieran Healy takes iTextEditors to a new level with some R visualization.",
"keywords": ["alfred","editor","finder","healy","kieran","launchbar","quicksilver","totalfinder","alfred","beckism","editors","finder","forklift","forklift","healy","kieran","launchbar","learning","links","macsparky","notes","putting","quicksilver","searching","totalfinder","trunk","visualizing","voodoopad","zachary","added","arena","check","choice","desktop","ecstatic","exciting","familiar","found","itexteditors","integration","interest","level","little","looking","management","nvalt","nvalt","people","piqued","populated","powerful","programming","release","rolling","seeing","sending","started","stuff","syntax","takes","through","tombarys","under","version","visualization","wikis"]
},{
"title": "Spotlight tricks: search by category",
"url": "/2012/04/23/spotlight-tricks-search-by-category/",
"tags": ["macos","productivity","spotlight"],
"date": "Apr 23rd, 2012",
"ts": "1335189060",
"summary": "You know those categories the App Stores use to sort applications by their intended use? You can use those in Spotlight on iOS. Did you know you can do that on your Mac, too? I didn t, and I didn t find many references to this on the web, so I ll share the discovery: I was thinking about Spotlight on my iPhone and iPad, where I can just type a keyword and see apps that have nothing in their title about the search. I love that, because once you get enough apps it s really easy to forget their names. I thought I d try it on Lion. First, I searched productivity kind:app in Spotlight on my Lion system and it worked. All the apps built with recent versions of Xcode (which allows for categorization in info.plist) showed up, including non-Mac App Store apps. A little metadata inspection and I found a query syntax specifically for this purpose: . If you type category:news in Spotlight, you ll get all of your News applications. You can save these as Smart Folders in Finder, too, and replicate Lion s Launchpad to some extent. Useful for forgetful people like me. I don t know yet if it works anywhere other than Lion, but give it a shot.",
"keywords": ["iphone","launchpad","spotlight","store","xcode","finder","first","folders","launchpad","smart","spotlight","store","stores","useful","xcode","allows","anywhere","applications","because","built","categories","categorization","category","discovery","enough","forget","forgetful","found","iphone","including","inspection","intended","keyword","little","metadata","names","nothing","people","plist","productivity","query","recent","references","replicate","search","searched","share","showed","specifically","syntax","system","thinking","thought","title","versions","where","worked","works"]
},{
"title": "New text navigation KeyBindings",
"url": "/2012/04/22/new-text-navigation-keybindings/",
"tags": ["keybindings","macos"],
"date": "Apr 22nd, 2012",
"ts": "1335117540",
"summary": "I haven t had much time to write here this week thanks to some day job stress, major additions to Marked, writing for other venues, updating iTextEditors and various other fun. I had a brainstorm that resulted in new KeyBindings this morning, though, and thought it would be a good chance to get a post up before anyone thinks I ve been kidnapped. In case you ve missed my past keybinding craziness, you can catch up on the evolution in the tag archive . Basically, OS X has a text system that lets you add custom commands and shortcuts that trigger sequences of the text commands you use every day (e.g. option-arrow word navigation, command-arrow to end of line, etc.). My shorcut collection is pretty extensive (and beyond even my capability to memorize), but you can pick and choose what s handy for you and create your own KeyBindings.dict file from it. The latest versions are always up on Github . The new bindings are primarily for paragraph navigation. One of the features I ve come to love in several code editing applications is the ability to jump to the first character in the line (after any whitespace). So I added Command-Option-Left/Right Arrow navigation to do just that (and handle last character before trailing whitespace as well). I also added one that jumps to the first alphanumeric character in the line, which is great when working with Markdown lists. The unordered ones, at least, because numbers will stop the movement and it has the same result as jump to first character. This is bound to Control-Command-Option-Left Arrow. You can use them from anywhere in the paragraph, even if you re at the beginning of a line and intuitively think that left arrow will move backward with these commands it will always jump to the first character even if it s in front of the cursor. Jumping to the last character is cool, but in most of my work any whitespace after that shouldn t be there. Even when I m just writing Markdown, I don t want any extra space triggering a hard line break accidentally. I added one more command to the set for this purpose: Control-Option-Right Arrow jumps to the last character and deletes any space following it. In a similar vein, I updated the Full Outdent command (Control-Shift-Command-Left Arrow) to use the same technique, no longer deleting the first character if the line was already fully outdented. Lastly, this somehow inspired me to add a couple of linebreak commands. In Markdown, adding two spaces at the end of a line",
"keywords": ["character","github","keybindings","keyboard","markdown","newline","shortcut","textmate","whitespace","applications","arrow","byword","cheaters","cheatsheet","cocoa","command","control","enter","focus","github","jumping","keybindings","keyboard","lastly","markdown","marked","outdent","paragraph","preferences","return","right","shift","system","textmate","ability","above","accidentally","added","adding","additions","again","alphanumeric","anyone","anywhere","applications","archive","arrow","available","backward","because","before","begin","beginning","behaviors","beyond","binding","bindings","bound","brainstorm","break","breaking","breaks","capability","catch","causes","chance","change","character","cheat","choose","click","collection","command","commands","concatenating","conflicts","control","couple","craziness","crazy","create","cursor","custom","default","deletes","deleting","download","editing","either","enter","evolution","extensive","extra","features","first","focus","front","fully","great","greatly","green","handle","handy","haven","itexteditors","improve","inspired","install","interpreted","intuitive","intuitively","jumps","keeping","keybinding","keybindings","keyboard","kidnapped","latest","lesser","linebreak","lists","little","locating","longer","looking","major","marked","memorize","middle","missed","morning","mostly","movement","navigation","numbers","outdented","overrode","overwrite","paragraph","position","primarily","quick","quickly","readme","regardless","regularly","resulted","right","screen","search","sequences","several","sheet","shift","shorcut","shortcut","shortcuts","shouldn","similar","somehow","space","spaces","starting","stress","style","system","technique","thanks","think","thinks","thought","track","trailing","trigger","triggering","unordered","updated","updating","usefulness","using","various","venues","versions","whatever","whitespace","whole","within","working","write","writing"]
},{
"title": "Desktop countdown timer with GeekTool and AppleScript",
"url": "/2012/04/15/desktop-countdown-timer-with-geektool-and-applescript/",
"tags": ["applescript","geeklet","geektool","productivity"],
"date": "Apr 15th, 2012",
"ts": "1334530200",
"summary": "I just realized today, quite belatedly, that you can control GeekTool on your Mac with AppleScript. I just wanted to play around with it a bit, so I threw together a countdown timer. This could be done much more elegantly, I m sure I just wanted to see what I could pull off quickly. The script takes an argument ending in an integer (interpreted as minutes), or a colon-separated hour/minutes argument. The last argument is always the time from now. For example would set a timer for an hour and 30 minutes from now. would set a timer to go off in 10 minutes. The script calculates the target time and then runs a loop every second to update a GeekTool shell geeklet with the countdown timer. Yes, you could probably do this more efficiently by making use of the Geeklet s interval property, but meh, I don t have an excuse. I kind of thought of that after writing the script. It s Sunday, lay off. If you want to play with it, you need to have GeekTool installed and running. Create a Shell Geeklet by dragging the shell icon to your desktop from the GeekTool window. In the properties for the geeklet, name it GeekTimer and leave the timeout and refresh values at zero. Size it so that it s the full width of your screen, set the paragraph justification to centered, pick a font/color and make it as large as you want. Now, save the AppleScript below as a file called somewhere on your drive. Wherever you put it, you ll need to adjust any commands that call it to match your own path. Note that the hashbang at the beginning will let you make it executable and call it without , but I used in the methods below just to be safe. When the timer is up, it will use to ring a bell and set the final text of the Geeklet to your reminder title. I m pretty sure is included in a standard install, but if you run into issues just remove that line or substitute your own alert method. Drop that into your and run . Now, in combination with the previous AppleScript, you have a command for setting timers on your desktop from Terminal. Be sure to modify the path in the last command (the one that calls ) to match the location of the AppleScript you created. The function first checks to see if a timer is already running, and if so, kills it. Then it clears any text currently in the GeekTimer Geeklet, and then runs the AppleScript and passes all command line arguments as one quoted string. The script handles parsing out the last number and turns the preceding text into the reminder",
"keywords": ["apple","applescript","geektool","launchbar","macintosh","script","shell","actions","alfred","applescript","create","enter","geektimer","geektool","geeklet","launchbar","library","minor","reminder","return","running","shell","sunday","support","terminal","wherever","above","action","added","adjust","alert","argument","arguments","automatically","background","beginning","belatedly","below","calculates","called","calling","calls","catch","centered","checking","checks","clear","clears","colon","color","combination","command","commands","control","countdown","created","creating","designation","desktop","dragging","drive","efficiently","elegantly","ending","error","errors","example","exciting","excuse","executable","execute","first","freeze","function","geeklet","handles","hashbang","hoping","included","incorrect","install","installed","integer","interpreted","interval","involved","issues","justification","kills","leave","little","location","looks","making","match","method","methods","minute","minutes","modify","mostly","paragraph","parameters","parsing","passes","popping","potential","preceding","pressing","properties","property","quickly","quoted","realized","refresh","reminder","remove","rolling","running","screen","script","second","separated","setting","shell","similar","somewhere","space","spiff","standard","straight","string","substitute","takes","target","thought","threw","throw","timeout","timer","timers","title","today","together","turns","typing","values","wanted","whatever","width","window","writing"]
},{
"title": "Web excursions: April 2, 2012 - April 10, 2012",
"url": "/2012/04/10/web-excursions-april-2-2012-april-10-2012/",
"tags": ["bookmarks"],
"date": "Apr 10th, 2012",
"ts": "1334077200",
"summary": "Links of interest from April 2, 2012 through April 10, 2012: Photoshop tutorial: avoiding gradient banding with 16 bit color mode Via @kartooner, a great breakdown of Photoshop gradient banding, complete with a solution. Whats the Deal With :Target in CSS? Design Shack Nice breakdown of the :target psuedo-class in CSS3. It s really fun, and if you haven t already played with it check this out. Objective-C Literals, Part 1 These new literals are really cool, if you haven t already seen them. Instantly Beautiful Project Pages So cool. HTMLPrettify A really handy HTML/JS/CSS prettifier plugin for Sublime Text 2.",
"keywords": ["adobe","cascading","formats","photoshop","sheets","style","sublime","beautiful","design","htmlprettify","instantly","links","literals","pages","photoshop","project","shack","sublime","target","whats","avoiding","banding","breakdown","check","class","color","gradient","great","handy","haven","interest","kartooner","literals","played","plugin","prettifier","psuedo","solution","target","through","tutorial"]
},{
"title": "Marked 1.4 is go",
"url": "/2012/04/08/marked-1-4-available/",
"tags": ["marked"],
"date": "Apr 8th, 2012",
"ts": "1333913400",
"summary": "Marked 1.4 is available on the Mac App Store . I m announcing this a little prematurely the press release doesn t go out until tomorrow morning, but I m just too excited to hold off. There are quite a few new features, including Scrivener , Leanpub and mmdmerge support, as well as a syntax for including external files with full MultiMarkdown (or custom) processing. This means that you can create a single index file ( multiple formats available ) and have Marked generate a complete document preview (combining multiple files in the order specified in the index), while watching all of the included files at once. You can also include external files anywhere in a normal document using simple syntax, and a slight variation of the syntax will include files as code blocks. Related: updated Github style, option to preserve line breaks, support for fenced code blocks and automatic syntax highlighting with language detection. Phew. There are also print improvements, including the ability to force a page break arbitrarily or to create page breaks before h1 and/or h2 headers. Marked 1.4 can even scroll the preview to the point at which you re editing in your document (I think I might have buried the lead there). I updated the internal Markdown reference to include basic MultiMarkdown syntax, turned the help into an HTML-based system which exists outside of the Apple Help System, and updated the Quick Overview intro screen. It s now awesome. If you re not a new user and have already disabled that on startup, use Help- Quick Overview to revel in the CSS3 glory. That s a bit dramatic, but it s pretty cool. This version is the first version of Marked that is Lion-only 1 , and it takes advantage of several new tools in the OS for optimization and stability. For the full list of new features and fixes, see the changelog . The full help system for Marked is available online now, too, if you d like to explore. Then, of course, go upgrade (and update your reviews, please) or buy it if you haven t yet! The Marked website just got a refresh as well, be sure to check it out. Up next: I plan to fully incorporate Fountain in the next version (hopefully with Final Draft export), as well as the ability to watch an entire folder and display a preview of the most recently-edited file (perfect for nvALT and bookwriting). I ve already added more text stats for the next version (1.5), including reading time, average syllables, unique word count and more. If you ve",
"keywords": ["apple","draft","github","markdown","multimarkdown","store","syntax","apple","draft","fountain","github","leanpub","leopard","markdown","marked","multimarkdown","overview","quick","related","scrivener","store","system","ability","added","advantage","announcing","anywhere","arbitrarily","automatic","available","average","awesome","based","basic","before","blocks","bookwriting","break","breaks","bugfixes","buried","changelog","check","combining","compatible","continue","count","create","custom","detection","developing","disabled","display","document","doesn","dramatic","edited","editing","entire","excited","exists","explore","export","external","features","fenced","files","first","fixes","folder","force","formats","fully","glory","haven","having","headers","highlighting","hopefully","improvements","included","including","incorporate","index","internal","intro","issues","language","little","merge","morning","multiple","needed","normal","nvalt","online","optimization","outside","platforms","point","prematurely","press","preview","print","processing","reading","recently","refresh","release","revel","reviews","running","screen","scroll","several","simple","single","slight","stability","stable","startup","stats","style","support","syllables","syntax","system","systems","takes","think","tomorrow","tools","turned","unable","unique","updated","upgrade","using","version","watch","watching","website","while"]
},{
"title": "2x4 interview on Lifehack",
"url": "/2012/04/08/2x4-interview-on-lifehack/",
"tags": ["interview","personal","productivity"],
"date": "Apr 8th, 2012",
"ts": "1333905900",
"summary": "Just in case you missed it, a 2x4 interview I did for lifehack.org went live today . Thanks to Michael Schechter for the opportunity to talk about life, creativity and productivity.",
"keywords": ["design","development","divyadharsanam","hosting","markdown","multimarkdown","poymughangal","michael","schechter","thanks","creativity","interview","lifehack","missed","productivity","today"]
},{
"title": "Proximity hacking",
"url": "/2012/04/07/proximity-hacking/",
"tags": ["bluetooth","macos"],
"date": "Apr 7th, 2012",
"ts": "1333852740",
"summary": "I ve been trying for years to get a decent Bluetooth proximity setup going so that my iPhone can trigger lighting setups as I enter and exit a room. I think I ve finally nailed it, though I m sure there s plenty more testing to do. The biggest problem I kept running into was that I could get lights to go on when I entered a room, but while I sat even when the phone was motionless on my desk lights would randomly turn off and turn back on. So I took the original Proximity code and updated it for Lion, in the process modifying it to check for valid signal strength instead of just a device name in the active paired list. I also incorporated dxxb s patch to check three times before declaring that a device has left the Bluetooth range. Spruced up the pref panel a little and added an RSSI indicator to the drop menu in the menubar. This is use at your own risk. I don t think there s anything going on here that would harm your computer (or even crash it), but I haven t tested it on any machines other than my Mac Pro. The code with my mods is all up on github , and you can download a Lion-only binary below. I apologize for the menubar icon, the old one had jaggy edges so I wanted to update it. In the process I made an abomination. I ll remedy that soon. The Check for updates button still polls the original author s site, so that won t get you far. If I continue to update this beyond new icons, I ll swap that over to my own site. Proximity mod v1.6 Download Proximity mod v1.6 A mod for Proximity to make it more precise and less likely to get a false \\"away\\" reading. Published 04/08/12. Updated 04/08/12. Changelog Donate More info Your support is greatly appreciated! Or me on GitHub!",
"keywords": ["bluetooth","indication","iphone","received","signal","smartphone","strength","bluetooth","changelog","check","donate","download","github","indigo","published","spruced","updated","abomination","active","added","apologize","appreciated","author","before","below","beyond","biggest","binary","button","check","complaining","computer","continue","crash","decent","declaring","device","download","edges","enter","entered","false","finally","github","going","greatly","haven","iphone","icons","importantly","incorporated","indicator","jaggy","leave","leaving","lighting","lights","likely","little","machines","menubar","modifying","modules","motionless","nailed","office","original","paired","panel","patch","phone","plenty","polls","precise","prevent","problem","process","randomly","range","reading","remedy","running","setup","setups","signal","strength","support","tested","testing","think","times","trigger","trying","updated","updates","using","valid","wanted","while","years"]
},{
"title": "Wow, seriously, based on traffic this is the most popular project I've ever created",
"url": "/2012/04/03/wow-seriously-based-on-traffic-this-is-the-most-popular-project-ive-ever-created/",
"tags": ["itexteditors","texteditor"],
"date": "Apr 3rd, 2012",
"ts": "1333477860",
"summary": "My weekend project turns out to be the most popular thing I ve ever done, at least based on web traffic (besides that one thing that I don t like to talk about). It s had more pageviews in two days than my whole blog gets in a typical month, and I haven t even officially announced the final page outside of Twitter. Insane. Seriously. If you want to contribute an addition or correction to iTextEditors, please use this form . I ll be posting a little more about the script used to build/update the project when I get a chance (plus a trick for getting screenshot thumbnails from the App Store via script). It s a pretty cool setup, and I m eager to share. Enjoy the site , and remember, I can t test all of these by myself I have a job and something resembling a family 1 , so all contributions are welcome. P.S. Just because I m kind of shocked by it, here s the list of blog coverage as of April 3rd, 2012 at 1:14 PM gizmodo.com cultofmac.com iphone-ticker.de ipadclub.nl tuaw.com loopinsight.com iphones.ru iphoneitalia.com macstories.net ipaditalia.com aptgetupdate.de shawnblanc.net macgeneration.com br-mac.org 512pixels.net brooksreview.net macsurfer.com pinboard.in/popular/ Hacker News #142 Resembling not to be crude, just because it consists mostly of animals and no kids. My wife is for real family.",
"keywords": ["communities","facebook","hackernews","handhelds","iphone","online","smartphones","store","twitter","enjoy","hacker","insane","resembling","seriously","store","twitter","animals","announced","aptgetupdate","based","because","besides","brooksreview","build","chance","consists","contribute","contributions","correction","coverage","crude","cultofmac","eager","family","getting","gizmodo","haven","itexteditors","ipadclub","ipaditalia","iphone","iphoneitalia","iphones","little","loopinsight","macgeneration","macstories","macsurfer","mostly","myself","officially","outside","pageviews","pinboard","pixels","popular","posting","project","remember","resembling","screenshot","script","setup","share","shawnblanc","shocked","thumbnails","ticker","traffic","trick","turns","typical","weekend","welcome","whole"]
},{
"title": "App Review: Tree, an outliner I can love",
"url": "/2012/04/02/app-review-tree-an-outliner-i-can-love/",
"tags": ["appreview","macos","mindmapping","productivity"],
"date": "Apr 2nd, 2012",
"ts": "1333373400",
"summary": "I don t like outliners. It s not that I see anything wrong with them, they just don t click with the way my brain works when I m brainstorming or planning. It s why I use mind maps. Nonetheless, I had to try Tree ( MAS link ) when I saw it. It looked different. It was. An outliner is an outliner, but Tree adds one thing that makes it infinitely more useful to me and my non-linear thought process: a horizontal view of the outline. It s basically a right-aligned mind map. Seeing each level of the hierarchy in line with other siblings across different branches suddenly brings the whole brainstorming thing together for me. The column widths are adjustable, and the layout makes it quite easy to drag nodes and entire branches around. There is, of course, a standard outline view, and you can toggle between them quickly with 1 and 2. There s more, though. The keyboard navigation is intuitive and there s good attention to detail in motion and edit keystroke handling 1 . Not that OmniOutliner lacks keyboard commands, it doesn t, but it s nice to see an alternative that pays as much attention. The horizontal view by itself wouldn t be worth much if it wasn t also a really good outliner. You can also open a family (parents, siblings, aunts and all) in a new tab or window, similar to OmniFocus hoist feature. Nodes can have labels (colors) and notes, and you have the option of editing in Rich Text mode where you can apply different fonts and colors per node. Not sure why you d do that, but it s there. You can also turn on checkboxes and/or numbering (configurable formats) for all nodes. The interface is elegant and easy to work with. It has a sparse toolbar, a tab bar and not much else in the way of chrome. No inspector palletes, no notes panel, no annoyances. Given the superb keyboard control and the fact that the only thing I d need in the toolbar (the node label dropdown) is accessible from a right click, I just hide the toolbar. Tree looks like this for me right now Last but not least, import and export features. Tree uses a proprietary format for storing its own files, but it reads and writes OPML quite nicely 2 . David Sparks would be pleased . This allows for transfer to and from a wide variety of mind mapping, outlining and writing applications. My favorite part, though, is how it handles plain text. You can open a plain text file, or you can just paste plain text from your clipboard. If it s just paragraphs of text, it will turn every line into a",
"keywords": ["document","format","icloud","omnifocus","omnioutliner","outliner","portable","store","addendum","arrow","basic","beyond","brandon","check","composer","david","enter","escape","intuitively","multimarkdown","nodes","nonetheless","notes","omnifocus","omnioutliner","pittman","seeing","sparks","store","accessible","across","adjustable","again","allows","amazing","annoyances","applications","apply","array","arrow","aunts","autosave","available","beginning","benefits","between","brain","brainstorming","branches","brings","checkboxes","chrome","click","clipboard","colors","column","commands","comparison","configurable","control","create","cursor","deleting","deselects","detail","detailed","details","different","doesn","dropdown","editing","elegant","empty","enter","entire","escape","everyone","export","fails","family","favorite","feature","features","files","fluent","fonts","format","formats","goodness","great","handle","handled","handler","handles","handling","hierarchy","hoist","horizontal","icloud","ignore","import","important","included","indentation","indented","indents","infinitely","inserts","inside","inspector","interface","intuitive","itself","keyboard","keystroke","label","labels","lacks","layout","level","linear","linking","looked","looking","looks","makes","mapping","missing","motion","navigate","navigation","newlines","nicely","nodes","notes","notified","numbering","nvalt","obvious","options","outline","outliner","outliners","outlining","palletes","panel","paragraphs","parents","paste","pasting","planning","pleased","plenty","print","process","program","proprietary","quickly","reads","recognizes","replacement","restore","right","round","saving","screen","selection","several","siblings","similar","smart","solution","sparse","standalone","standard","storing","straight","suddenly","superb","superior","support","supports","syncing","thought","together","toggle","toolbar","tools","tried","useful","users","variety","versions","where","whole","widths","window","works","worth","wouldn","writes","writing","wrong"]
},{
"title": "Sparkup System Service, HTML shorthand everywhere",
"url": "/2012/03/31/sparkup-system-service-html-shorthand-everywhere/",
"tags": ["service","webdesign"],
"date": "Mar 31st, 2012",
"ts": "1333213200",
"summary": "I m shocked that this hasn t been done before. I m sure it has, really, but my searches didn t turn anything up Many web devs/designers are familiar with Zen Coding , a little tool available for many text editors which turns shorthand strings into full HTML, among a lot of other nifty tricks. A derivation called Sparkup came out a couple of years back . It added the ability to backtrack up the hierarchy from within the shorthand snippet, which I found to be amazingly useful. So this all started when I made a keybinding yesterday which turns selected text into a paired HTML tag and allows attributes, so converts to when I type Control- (TextMate style). That s available on the KeyBindings github repo , if you re interested. I showed the KeyBinding to Joe Bartlett and the first thing he asked was whether it could do what Zen Coding does. Rabbit hole. It wouldn t happen as a keybinding, but it could work as a System Service. No use reinventing the wheel, so I spent a while playing with getting Zen Coding to fit before I remembered Sparkup. Sparkup s features are pretty minimal compared to the huge toolset that Zen has become, and as such it fits in one file with no dependencies. Perfect for a Service. Sparkup is written by Rico Sta. Cruz and is released under the MIT license. This project is inspired by Zen Coding of Vadim Makeev. The Zen HTML syntax is forward-compatible with Sparkup (anything that Zen HTML can parse, Sparkup can too). Download the System Service version below. To use it, unzip and add the .workflow file to . Then, open up System Preferences and go to the keyboard shortcuts tab. Select System Services, find it in the panel on the right and click the Add Shortcut button that appears when you hover over the right side of its row in the list. Give it a keyboard shortcut you ll remember. I used Ctrl-, because that s what it s bound to in Espresso. Muscle memory. Now you can type out a shorthand string, select it and hit your shortcut key to watch it blossom into full HTML. Like a code flower. There are quite a few of examples on the Sparkup page, so I m not going to break down the syntax here. Basically: Note that, unlike Zen Coding, you can use to traverse back up the tree. You can also use linebreaks and indentations on longer strings if it helps you keep things straight. Useful when you re laying out an entire document structure in one string: Also, html:5 will give you a full HTML5 document with UTF-8 meta, head and body",
"keywords": ["coding","element","formats","javascript","keyboard","makeev","shortcut","vadim","bartlett","changelog","coding","control","donate","download","espresso","keybinding","keybindings","makeev","muscle","preferences","published","rabbit","service","services","shortcut","sparkup","system","textmate","totally","updated","useful","vadim","ability","added","allows","amazingly","among","appears","appended","asked","attributes","available","backtrack","because","becomes","before","below","blossom","bound","break","button","called","click","compared","compatible","converts","couple","dependencies","derivation","designers","document","editor","editors","elements","entire","examples","familiar","features","first","flower","found","getting","github","going","handy","happen","helps","hierarchy","hover","https","indentations","inside","inspired","interested","keybinding","keyboard","laying","license","linebreaks","little","longer","memory","minimal","nifty","outside","packaged","paired","panel","parse","playing","posting","project","reinventing","released","remember","remembered","right","rstacruz","searches","section","selected","shocked","shortcut","shortcuts","shorthand","showed","snippet","sparkup","spent","started","straight","string","strings","structure","style","syntax","toolset","traverse","tricks","turns","under","unlike","unzip","useful","version","watch","wheel","while","within","workflow","wouldn","written","years","yesterday"]
},{
"title": "Web excursions: March 28, 2012 - March 31, 2012",
"url": "/2012/03/31/web-excursions-march-28-2012-march-31-2012/",
"tags": ["bookmarks"],
"date": "Mar 31st, 2012",
"ts": "1333172820",
"summary": "Links of interest from March 28, 2012 through March 31, 2012: Definition Lists versus Tables Some definitive testing from Jonathan Snook of , and screen readers. Create Instagram Filters With PHP Some very cool tricks with ImageMagick. Pixa - organizing your images, the easy way I ve been playing with this beta photo organizer and it s pretty awesome. OpenMeta tagging, file reference or library, color detection/sorting and more. I wish for some more advanced search filters, but overall it shows serious promise. Free in beta. Arthur C. Clarke envisions the Internet Great video link from Dave Caolo: Arthur C. Clarke s predictions for today s computing platforms. rangy - A cross-browser JavaScript range and selection library This project is amazing. I banged my head over handling HTML text node selection highlighting for an hour before one more search turned this up. It handles bisecting and merging ranges and crossing nodes, provides an amazing API and took some major headache out of a project for me. Tim Down is my hero today.",
"keywords": ["arthur","clarke","hawking","imagemagick","javascript","jonathan","sagan","snook","stephen","arthur","caolo","clarke","create","definition","filters","great","imagemagick","instagram","internet","javascript","jonathan","links","lists","openmeta","snook","tables","advanced","amazing","awesome","banged","before","bisecting","browser","color","computing","cross","crossing","definitive","detection","envisions","filters","handles","handling","headache","highlighting","images","interest","library","major","merging","nodes","organizer","organizing","overall","photo","platforms","playing","predictions","project","promise","provides","range","ranges","rangy","readers","screen","search","selection","serious","shows","sorting","tagging","testing","through","today","tricks","turned","versus","video"]
},{
"title": "iOS text editor comparison update",
"url": "/2012/03/30/ios-text-editor-comparison-update/",
"tags": ["itexteditors","texteditor"],
"date": "Mar 30th, 2012",
"ts": "1333114200",
"summary": "There was an impressive response to the call for crowdsourced iOS text editor comparison. The final spreadsheet is available here (link updated to point to the new page). I froze it this morning as there were a lot of deletions happening that were breaking results. It was reverted to restore a few major deletions, and I did my best to replace individual additions and edits that happened since the restore point. If your edit/addition was lost or you have more to add, just contact me directly and I ll give you access to edit. I ll be compiling the results into a prettier chart and doing a rather long post with summaries of each editor. This is going to be a great snapshot of currently-available iOS text editors, and I will do my best to keep it updated as new editors come (and old editors add new features). Thanks to everyone for your help so far!",
"keywords": ["editor","editors","evernote","freeware","shareware","windows","thanks","access","additions","available","breaking","chart","comparison","compiling","contact","crowdsourced","deletions","directly","doing","editor","editors","edits","everyone","features","froze","going","great","happened","happening","impressive","individual","major","morning","point","prettier","rather","replace","response","restore","results","reverted","since","snapshot","spreadsheet","summaries","updated"]
},{
"title": "Experiment: CSV to MMD tables with color coding",
"url": "/2012/03/29/experiment-csv-to-mmd-tables-with-color-coding/",
"tags": ["googledocs","multimarkdown"],
"date": "Mar 29th, 2012",
"ts": "1333068480",
"summary": "This is a quick experiment with Google Docs, CSVs, MultiMarkdown tables and CSS3 selectors. It s really hackish, but it s a start. I wanted to take Google Docs spreadsheet output and turn it into a clean table with color coding and my own styling. Here s what I ve done so far (example output here ): Downloaded the iOS text editor spreadsheet as a CSV Opened in Numbers for minor edits Added a row of alignment syntax under first (header) row Removed long text (HTML tables are a pain with wrapping and overflow) Exported a new CSV with changes Regex magic to convert CSV to MMD table (almost automatically, still 5 minutes of hand editing) Applied basic CSS3 using inline tags in the Markdown turn empty cells dark grey highlight any cell with content (minus first column) in green cells with a full-width colspan (tailored to this table, 11 columns) turn lighter grey Load it up in Marked and output the results with embedded style You can view a truncated version of the output here . Please note that this comparison chart is not complete and does not include even half the apps in the spreadsheet. It s just for testing! You can also see the raw MMD code here . It s straight from the conversion script but has been run through Fletcher Penney s table cleanup script to make it readable.",
"keywords": ["cascading","comma","element","google","markdown","multimarkdown","separated","sheets","style","values","added","applied","downloaded","exported","fletcher","google","markdown","marked","multimarkdown","numbers","opened","penney","regex","removed","stdin","alignment","almost","automatically","basic","cells","changes","chart","clean","cleaned","cleanup","coding","color","colspan","column","columns","comparison","content","contents","conversion","convert","converted","editing","editor","edits","embedded","empty","example","experiment","first","green","hackish","header","highlight","inline","input","lighter","magic","minor","minus","minutes","output","overflow","pictures","quick","readable","results","script","selectors","spreadsheet","straight","style","styling","syntax","table","tables","tailored","takes","testing","through","truncated","under","using","version","wanted","width","wrapping"]
},{
"title": "Crowdsourcing iOS Text Editor comparisons",
"url": "/2012/03/29/crowdsourcing-ios-text-editor-comparisons/",
"tags": ["itexteditors","texteditor"],
"date": "Mar 29th, 2012",
"ts": "1333022820",
"summary": "Update: The spreadsheet has been frozen for now , results coming soon! I m working on a big iOS text editor comparison post, but the number of things to check and test is a bit overwhelming. I d like to crowdsource it, and I m looking for your help. I ve set up a Google spreadsheet with public access and would love contributions. The editors listed on the first sheet are the ones that I already own (and can remember right now). Obviously, I have enough that keeping all the features straight is something I could use a little help with. The second sheet is for you to add additional editors I may have missed. Please stick to plain text/Markdown editors. For each editor there s a list of features for comparison, as well as space to add notes about special features. For your favorite editor(s) (or any that you re familiar with), just x in the box for the standard features listed or leave blank if it the feature is unsupported. Feel free to add columns for editors I missed, and use the Special features to list as many as you like. If a special feature is common enough across the editors, I ll add a row for it under standard features. If your favorite editors are already filled in, take a look over and correct/append to existing answers. There s also a sheet called Contributors. I d like to thank anyone who helps out on this, so be sure to add your name and an optional URL if you d like to be linked. If you re willing to jump in and contribute, just head to the iOS Text Editors spreadsheet and fill in what you can.",
"keywords": ["editor","editors","google","shareware","spreadsheet","windows","contributors","editors","google","markdown","special","access","across","answers","anyone","append","blank","called","check","columns","coming","common","comparison","contribute","contributions","crowdsource","editor","editors","enough","familiar","favorite","feature","features","filled","first","frozen","helps","keeping","leave","linked","listed","little","looking","missed","notes","optional","overwhelming","public","remember","results","right","second","sheet","space","special","spreadsheet","standard","stick","straight","thank","under","unsupported","willing","working"]
},{
"title": "Web excursions: March 17, 2012 - March 28, 2012",
"url": "/2012/03/28/web-excursions-march-17-2012-march-28-2012/",
"tags": ["bookmarks"],
"date": "Mar 28th, 2012",
"ts": "1332961200",
"summary": "Links of interest from March 17, 2012 through March 28, 2012: hammer.js This is a really handy little jQuery plugin for touch events, even for desktop browsers where you want to capture holds, drags and double-clicks. Lightweight with a good API. jQuery Scroll Path I have no practical use (that I can think of) for this Canvas/jQuery-based scrolling plugin that lets you cause standard scroll gestures to weave around in any direction(s) you choose. I love it anyway. Everything you always wanted to know about touch icons Really great post on touch icons ( favicons for iOS website/app display). Up-to-date with new iPad retina info. Sexy Code Snippet Management With Gists I ve been treading down this path myself lately. Sublime Text 2 on Github action is kind of hot. Download, Install, Use iphome - elastic threads Elastic Thread s sweet self-serve (Dropbox or web server) iPod/iPhone homepage with multiple search engines and shortcuts for your most-used sites.",
"keywords": ["cascading","dropbox","github","interface","javascript","jquery","programming","search","sheets","style","canvas","download","dropbox","elastic","everything","gists","github","install","lightweight","links","management","scroll","snippet","sublime","thread","action","anyway","based","browsers","capture","cause","choose","clicks","desktop","direction","display","double","drags","elastic","engines","events","favicons","gestures","great","hammer","handy","holds","homepage","iphone","icons","interest","iphome","jquery","little","multiple","myself","plugin","practical","retina","scroll","scrolling","search","serve","server","shortcuts","sites","standard","think","threads","through","touch","treading","wanted","weave","website","where"]
},{
"title": "Had Enough?",
"url": "/2012/03/26/had-enough/",
"tags": ["bookreview","books","minimalism"],
"date": "Mar 26th, 2012",
"ts": "1332812160",
"summary": "I m not a minimalist. By no stretch of the imagination is anything about my personality minimal, nor have I lived a life that indicates any of the discipline required to say enough. Take my workspace as a micro-example of my entire life. My desk is a perpetual mess maybe neater than some, but despite its large size, desktop space here is a luxury. By the end of a work week I have accrued at least 8 coffee and tea cups despite feeble attempts to reuse what s already on my desk. Papers, cables and other miscellany strewn everywhere. I accepted it a while ago. I surrendered to chaos (and weekly cleanings). I know where things are and I know how to get things done in this space, but there s plenty of friction. Despite my proclivity for disorder, I have always read Patrick Rhone s blog Minimal Mac with great fascination, marveling at the clean, empty desktops and tiny computing setups. It s intriguing to me from an aesthetic standpoint, but also because I correlate these desktops with a peace of mind that I don t currently possess. It was with this prior interest that I picked up a copy of Enough, Patrick s collection of essays on the delicate balance between want and need. The book opened my eyes to facets of the minimalist philosophy that I hadn t thought about before, and made me reconsider my ability to utilize its tenets. What I found most intriguing was Patrick s descriptions of the things he finds joy in, such as the act of washing one s hands with fine soaps. As odd as the examples seemed to me at first, they revealed a patience and mindful consideration that I know very well I need more of in my life. Growing up, my parents taught me to budget. They taught me and my siblings to be happy with second-hand clothes and not having the latest Trapper Keeper. Not because we were poor we weren t but because my parents believed in living below their means. At 17, I left home and promptly rebelled against everything I d ever been taught. After a decade on the ocean of excess, my parents helped me get back on my feet and regain my land legs. I was first struck by their compassion and the unconditional love they offered me. Shortly after, I was struck by the understanding that my parent s financial ability to help me recover from the train wreck of my late teens and early 20 s was due to their ability to recognize enough. Patrick s writing reminds me of the characteristics I admire most in my parents: taking the time to consider every addition to your",
"keywords": ["keeper","macbook","minimal","minimalism","parent","patrick","rhone","trapper","apparently","enough","growing","keeper","looking","macbook","minimal","papers","patrick","rhone","shortly","since","trapper","ability","accepted","accrued","admire","aesthetic","against","anyone","attempts","balance","because","before","believed","below","between","budget","cables","carefully","chaos","characteristics","clean","cleanings","clothes","coffee","collection","compassion","computing","consider","correlate","decade","delicate","descriptions","desktop","desktops","discipline","disorder","empty","enjoy","enough","enoughbook","entire","essay","essays","everyone","everything","everywhere","example","examples","extra","facets","fascination","feeble","figure","financial","finds","finishing","first","found","friction","grasping","great","hands","happy","having","helped","however","imagination","implications","important","indicates","interest","internalize","intriguing","knowing","latest","learned","learning","little","lived","living","longer","luxury","marveling","maybe","micro","mindful","minimal","minimalism","minimalist","miscellany","mistakes","money","myself","neater","nothing","ocean","offered","office","often","opened","parent","parents","patience","peace","perpetual","personality","philosophy","picked","plenty","proclivity","rebelled","recognize","recommend","recover","regain","reminds","required","reuse","revealed","saying","second","seemed","setups","shelves","siblings","soaps","space","standpoint","stretch","strewn","struck","surrendered","taking","taught","teens","tenets","thinking","thought","through","train","unconditional","understanding","utilize","washing","weekly","weren","where","while","wooden","workspace","wreck","writing","years"]
},{
"title": "MultiMarkdown Quick Look with Style",
"url": "/2012/03/19/multimarkdown-quick-look-with-style/",
"tags": ["macos","markdown","multimarkdown","quicklook"],
"date": "Mar 19th, 2012",
"ts": "1332200580",
"summary": "I added a little hack to Fletcher Penney s MultiMarkdown Quick Look generator to give it a default style (Github CSS) and allow for customization via a file located in your home folder. Full details and download available on Github . I have found that some Markdown tools which come with their own Quick Look generators will always override my custom one, even when they aren t the file s owner (e.g. iA Writer). I don t know how to get around this short of the brute force hack: open the inside the qlgenerator file within the offending app s bundle and delete the entry for . That, or just delete the .qlgenerator bundle in the app entirely. That only works until the next time you upgrade, though, and it s not recommended. If anyone knows a better solution, please shout.",
"keywords": ["computer","fletcher","formats","github","markdown","multimarkdown","penney","screenshot","citizen","fletcher","github","markdown","multimarkdown","penney","quick","screenshot","upstanding","writer","added","allow","anyone","available","brute","bundle","custom","customization","default","details","download","entirely","entry","folder","force","found","generator","generators","inside","knows","little","located","offending","override","owner","preview","qlgenerator","recommended","short","shout","solution","style","tools","upgrade","using","within","works"]
},{
"title": "Marked 1.4 Teaser",
"url": "/2012/03/17/marked-1-4-teaser/",
"tags": ["marked","video"],
"date": "Mar 17th, 2012",
"ts": "1332032160",
"summary": "I ve been working tirelessly on Marked since 5pm on Friday. I ve wrapped up fixing almost all of the bugs I ve created in this development cycle, so I ve been sprucing things up. I especially needed to revamp the Welcome popup for Marked s upcoming release. I ripped off the design idea 1 because I m too tired to come up with anything cool by myself today. Besides, I really dig the way it came out. All CSS3, all the time: Out of all the coolness that s been added in Marked 1.4, the Scrivener/mmdmerge/Leanpub integrations are my favorite. You can now drop a Scrivener project, an mmdmerge file or a Leanpub index file and get a full preview of your document or book. There s also an all-purpose include syntax for both external files and code blocks. Page break syntax for printing, automatic syntax highlighting, an updated Github style, more keyboard commands, more polish. Oh, and I got Scroll to first edit working. I ll keep you posted",
"keywords": ["formats","github","highlighting","publishing","sheets","style","syntax","tutorial","tutorials","besides","friday","github","leanpub","marked","scrivener","scroll","tutorial","welcome","added","almost","automatic","because","blocks","break","commands","coolness","created","cycle","design","development","document","especially","external","favorite","files","first","fixing","highlighting","index","integrations","keyboard","merge","myself","needed","polish","popup","posted","preview","printing","project","release","revamp","ripped","since","sprucing","style","syntax","tired","tirelessly","today","upcoming","updated","working","wrapped"]
},{
"title": "Web excursions: March 4, 2012 - March 14, 2012",
"url": "/2012/03/14/web-excursions-march-4-2012-march-14-2012/",
"tags": ["bookmarks"],
"date": "Mar 14th, 2012",
"ts": "1331737200",
"summary": "Links of interest from March 4, 2012 through March 14, 2012: How I effortlessly draft and maintain squeaky-clean CSS with SASS and Compass.app Seriously for real going to get serious about SASS. Seriously. Force Hardware Acceleration in WebKit with translate3d Webkit-only, but a really handy trick. HTML5 Clear on Vimeo Nifty replication of the Clear app for iPhone, in HTML5. Hazel Import Into Aperture My iPhone, Dropbox, Hazel and Aperture. Nice combo. Mix this with a Flickr upload action and it s complete! md2man - markdown to manpage md2man is a Ruby library and command-line program that converts Markdown documents into UNIX manual pages (really Roff documents) using Redcarpet.",
"keywords": ["command","dropbox","interface","iphone","markdown","vimeo","acceleration","aperture","clear","compass","dropbox","flickr","force","hardware","hazel","import","links","markdown","nifty","redcarpet","seriously","vimeo","webkit","webkit","action","clean","combo","command","converts","documents","draft","effortlessly","going","handy","iphone","interest","library","maintain","manpage","manual","markdown","pages","program","replication","serious","squeaky","through","translate","trick","upload","using"]
},{
"title": "Dropbox Collection Service fixed",
"url": "/2012/03/14/dropbox-collection-service-fixed/",
"tags": ["dropbox","service"],
"date": "Mar 14th, 2012",
"ts": "1331737020",
"summary": "For those who downloaded the original Create Dropbox Collection service and experienced errors, a new version has been posted (all download links updated). The issue was that if the files were in the root of the Public folder, it was trying to find a sub-path that wasn t there. All patched up. Create Dropbox Collection v1.1 Download Create Dropbox Collection v1.1 An OS X System Service for creating an HTML file with lists of links to files in your public Dropbox folder. Published 03/07/12. Updated 03/07/12. Changelog Donate More info Your support is greatly appreciated! Or me on GitHub!",
"keywords": ["android","downloading","dropbox","resource","shared","sharing","uploading","windows","changelog","collection","create","donate","download","dropbox","github","public","published","service","system","updated","appreciated","creating","download","downloaded","errors","experienced","files","folder","greatly","links","lists","original","patched","posted","public","service","support","trying","updated","version"]
},{
"title": "Byword for iOS!",
"url": "/2012/03/14/byword-for-ios/",
"tags": ["appreview","byword","productivity","writing"],
"date": "Mar 14th, 2012",
"ts": "1331732100",
"summary": "Markdown lovers rejoice, Byword for iOS is here! I ve been beta testing it for a while now and it s my new favorite way to write Markdown on my iPad. There s also full iCloud (and Dropbox) sync with the desktop version, so the writing circle is complete (at least for me). For background, see some of my previous thoughts on Byword . The Markdown features I love in the desktop version all translated wonderfully, and with MetaClassy s usual attention to subtlety and elegance. Go check it out . At the starting price of $2.99, it s a steal. It will make it up to $4.99 eventually, so grab it while it s hot! The desktop version is still $9.99, and that s a bargain for the best writing app out there (at least for pieces that aren t Scrivener -sized). By the way, Byword works really well with Marked for previewing and export, and there s a Byword theme available on the Extras page!",
"keywords": ["byword","dropbox","extras","icloud","markdown","software","testing","byword","dropbox","extras","markdown","marked","metaclassy","scrivener","available","background","bargain","check","circle","desktop","elegance","eventually","export","favorite","features","icloud","lovers","pieces","previewing","price","rejoice","sized","starting","steal","subtlety","testing","theme","thoughts","translated","version","while","wonderfully","works","write","writing"]
},{
"title": "A Service for sharing Dropbox link collections",
"url": "/2012/03/07/a-service-for-sharing-dropbox-link-collections/",
"tags": ["dropbox","service"],
"date": "Mar 7th, 2012",
"ts": "1331128560",
"summary": "I wrote this Service a while ago for a friend who kept all of his mockups in Dropbox folders to share. He shared the public links to a group of people who didn t all use Dropbox, so he d spend a fair amount of time grabbing links and pasting them into emails. I made this to save him some time, but thought it might help a few of you out, too. It takes a selection of files in your Dropbox public folder and creates a web page with links to each, as well as a button for opening them all in tabs. It doesn t move them to Dropbox for you, it just makes the links once they re there and in your public folder (or any subfolder of it). Once it s run, there s a dated HTML file in the root public folder that you can send a public link to. You only need to configure your Dropbox ID, which you can find as a string of numbers in any public url (the long version) that you create. Open up the Service in Automator and edit the very first line. After that, it s good to go. The style of the page is in a compressed format, not to obscure it, just to keep things optimized. If you want to edit it, either replace the section, or run the chunk of text through a CSS formatter and get the pretty version. To install, just drop it into or double click the file and let it install itself. It will show up in your Services menu when you right click after selecting some files. The final output looks like this, and works with as many files as you want to share at once: If your workflow involves sharing collections of files where just sharing a Dropbox folder is inconvenient or not an option, I hope this saves you some time! Create Dropbox Collection v1.1 Download Create Dropbox Collection v1.1 An OS X System Service for creating an HTML file with lists of links to files in your public Dropbox folder. Published 03/07/12. Updated 03/07/12. Changelog Donate More info",
"keywords": ["computer","dropbox","facebook","filesharing","management","automator","changelog","collection","create","donate","download","dropbox","published","service","services","system","updated","amount","button","chunk","click","collections","compressed","configure","create","creates","creating","dated","doesn","double","either","emails","files","first","folder","folders","format","formatter","friend","grabbing","group","inconvenient","install","involves","itself","links","lists","looks","makes","mockups","numbers","obscure","opening","optimized","output","pasting","people","public","replace","right","saves","section","selecting","selection","share","shared","sharing","spend","string","style","subfolder","takes","thought","through","version","where","while","workflow","works","wrote"]
},{
"title": "Cheaters: customizable cheat sheet system",
"url": "/2012/03/04/cheaters-customizable-cheat-sheet-system/",
"tags": ["cheaters","productivity"],
"date": "Mar 4th, 2012",
"ts": "1330891800",
"summary": "First and foremost, this is a total ripoff of an idea by Gabe Weatherhead over at Macdrifter . I just expanded on the idea a little bit. Cheaters is a collection of HTML-based cheat sheets meant for display in an Automator-based popup browser which can float on your screen while you work in other apps. Most of the time I create TextExpander snippets for commonly-forgotten formats, but having an overall reference can be handy. I ve included a collection of hastily made sheets as examples for you to create your own. Sheets are easy to create with minimal markup and are, for the most part, automatically styled and made to fit in with Cheaters overall aesthetic. Download the Cheaters.zip file below and put it anywhere on your computer (I keep mine in Dropbox so that my cheat sheets are available on other machines). Open Automator in your Applications folder. Create a new project with the type Application. You can also use a Workflow, which can be launched easily from the command line, but I m using an Application for now because it s easiest to launch with a hotkey program. Drag two actions from the library on the left into the blank area on the right: Get Specified URLs and Website Popup, in that order. You can find them quickly by selecting Library on the left and using the filter to locate them. Double click the default URL in the Get Specified URLs action and set it to the file path to your Cheaters folder. This will be in the format . Set a size in the Website Popup action. I m using a custom size of 700x800, which works well on my setup with two large monitors. The popup is resizable after opening, so it s not critical. Cheaters has a responsive design that will mutate into a single column with a dropdown menu at smaller sizes, so if you have a small screen, use the iPhone preset. Save the application to your /Applications folder (or ~/Applications). You can add a hotkey or other launch method using Launchbar, Keyboard Maestro, Alfred, Apptivator, etc. Lots of choices. When the application launches, it automatically becomes a floating HUD, and you can dismiss it by focusing it and using Escape or -Q. You can also use Cheaters in a web browser, just put it on your disk and point your browser to the location. If you know a little HTML, adding and editing sheets is easy. Take a look at the existing documents in the included cheatsheets folder. The markup varies but a lot of cases are already handled by the CSS. I stole most of the",
"keywords": ["cascading","element","howbert","iphone","jquery","markdown","sheets","style","adding","alfred","applications","apptivator","automator","cheaters","create","customizing","double","download","dropbox","escape","first","github","keyboard","launchbar","library","macdrifter","maestro","markdown","popup","sheets","textexpander","using","weatherhead","website","workflow","action","actions","adding","aesthetic","anywhere","augment","automatically","available","based","because","becomes","below","between","blank","bottom","browser","change","cheat","cheatsheets","choices","class","cleaner","click","collection","column","command","commonly","completely","computer","container","containing","contrast","convert","converted","create","credits","critical","custom","default","design","different","directly","dismiss","display","documents","dropdown","dynamically","easiest","easily","editing","enough","entirely","example","examples","expanded","files","filter","first","float","floating","focusing","folder","foremost","forgotten","format","formats","great","handled","handy","hastily","having","hotkey","iphone","ideal","image","included","index","inside","inverted","items","jquery","latest","launch","launched","launches","library","light","links","little","loaded","loads","location","machines","markup","meant","method","minimal","monitors","mutate","offended","opening","output","overall","override","permanent","point","popup","preset","program","project","promise","quickly","rearrange","referenced","relative","remove","replace","resizable","responsive","right","ripoff","ripped","scale","screen","scroll","selecting","setup","sheet","sheets","shows","single","sizes","small","smaller","snippets","sources","specific","stole","stored","styled","styles","stylesheet","unique","unordered","unreadable","upper","useful","using","varies","version","viewport","while","width","within","works"]
},{
"title": "A word about Magic Launch and nvALT",
"url": "/2012/03/02/a-word-about-magic-launch-and-nvalt/",
"tags": ["utility"],
"date": "Mar 2nd, 2012",
"ts": "1330716360",
"summary": "Here s a quick tip about two apps that I love: nvALT and Magic Launch . I m not sure about the project status of Magic Launch, or how it will fare with Mountain Lion, but for now it s one very useful app. This is more of a multi-tip than a review, but take it as you will. You probably know of nvALT, so I ll describe Magic Launch. Magic Launch overrides the default file handlers and processes them based on rules, allowing you to specify conditions under which to launch certain apps when certain filetypes are double-clicked. It s really handy. For example, you can see my Markdown rules below. Short files, like this post, are opened in Byword as the default app for the filetype. Longer files are opened in MultiMarkdown Composer , which has a great table of contents feature for navigating while editing. Here s where nvALT comes in: if the file is in my nvALT notes folder, it opens nvALT and jumps straight to that note. It s a neat trick if you make use of your note files in ways other than just nvALT. From the command line, instead of you can just . Not a huge difference, but a nifty tool. There are a lot more clever things you can do with Magic Launch. If you ve ever been frustrated with dealing with UTI s and what file opens what app, here s a very easy solution. It s relatively expensive for a utility ($20), so you ll only be interested if the cost is equal to or greater than your frustration with assigning default applications. Another useful app in the same vein is RCDefault . This one handles all kinds of things, including UTIs and URL handlers. It s free, and I use both Magic Launch and RCDefault. The primary reason Magic Launch is superior for file handling is conditional rules, which RCDefault doesn t have. The URL handling is great fun, though, and you can see all of the url handlers assigned by apps on your system. I bet you didn t even know some of them were available. Have fun.",
"keywords": ["format","identifier","locator","markdown","multimarkdown","resource","another","byword","composer","launch","longer","magic","markdown","mountain","multimarkdown","rcdefault","short","allowing","applications","assigned","assigning","available","based","below","certain","clever","clicked","comes","command","conditional","conditions","contents","dealing","default","describe","difference","doesn","double","editing","example","expensive","feature","files","filetype","filetypes","folder","frustrated","frustration","great","greater","handlers","handles","handling","handy","including","interested","jumps","kinds","launch","multi","navigating","nifty","notes","nvalt","opened","opens","overrides","primary","processes","project","quick","relatively","rules","solution","specify","status","straight","superior","system","table","trick","under","useful","utility","where","while"]
},{
"title": "nvALT 2.2 public beta",
"url": "/2012/02/28/nvalt-2-2-public-beta/",
"tags": ["nvalt"],
"date": "Feb 28th, 2012",
"ts": "1330482120",
"summary": "So it s happening. nvALT 2.2 is being released tonight as a beta. Before you get too excited and implode, please read this. Note the word beta above. It s not finished. It has a lot of fixes and a ton of new editing features, but there s plenty left to do before we finish a stable release. Here s the advise in our release notes: Please back up your databases and save a copy of your current nvALT.app. The main database files are in . Make a copy of that directory for safekeeping. If you store your notes as text files in a folder, back that up too. Just to be safe. We haven t experienced any data loss in testing, but we can t be held responsible if something should happen. Speaking of release notes, rather than try to fit them in here I ll give them their own page . If you want the new goodness, please read through that first. Full props go to Elastic Threads on this. My contribution was, to say the least, minimal. All of the sweet new Markdown editing features are entirely him. All hail David! Then, download nvALT 2.2b94 right here . This release is on its own Sparkle Update channel, so you ll get updates to the beta automatically, but it won t affect people who choose to stick with the current version for now. Have fun, be safe. Oh, and follow the new nvALT account on Twitter. 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 More info Enjoying nvALT? Or me on GitHub!",
"keywords": ["cycle","david","downloading","markdown","notes","release","software","twitter","uploading","before","changelog","david","donate","download","elastic","enjoying","github","markdown","multimarkdown","notational","published","release","sparkle","speaking","threads","twitter","updated","velocity","above","account","advanced","automatically","before","capabilities","channel","choose","contribution","database","databases","directory","download","editing","entirely","excited","experienced","features","files","finish","finished","first","fixes","folder","goodness","happen","happening","haven","implode","minimal","notes","nvalt","people","plenty","preview","props","rather","release","released","responsible","right","safekeeping","stable","stick","store","stuff","testing","through","tonight","updates","version"]
},{
"title": "Automating TaskPaper to Day One logs",
"url": "/2012/02/25/automating-taskpaper-to-day-one-logs/",
"tags": ["dayone","productivity","taskpaper"],
"date": "Feb 25th, 2012",
"ts": "1330233120",
"summary": "This is just a quick post to mention a new idea I had while working on Marked today. I was, as usual, using TaskPaper to organize the project and track my progress. I use a different TaskPaper file in the main folder for each project I have going. The last script I posted is effective enough, and I should probably leave well enough alone, but I had to try one other thing. I basically wanted to run a script with at 11pm every night that would find all of my TaskPaper files and locate tasks finished during the previous 24 hours, creating a single log entry for them in Day One . So that s what I did. I put a gist up on GitHub , and everything you need to know is in the comments at the top. It s pretty simple: to Spotlight for recently-changed TaskPaper files, a little string scanning and then create an XML entry in the Day One folder. There are some caveats and potentially necessary customizations, but if you re at all interested in running something like this, I ll assume you re capable of making a couple of tweaks. By the way, did you see Jered Benoit s script for logging the day s completed OmniFocus tasks to Day One? Beautiful! Also, Gabe over at MacDrifter has found Day One to be most useful for it s intended purpose (personal journaling). Weird, I know 1 , but a really great post you should take a moment to read . I kid. It s weird that I m using it for more technical things. I feel a need to more eloquently explain why I ve opted to keep these logs in Day One and how I differentiate the various types of notes in my life, but that s another post.",
"keywords": ["computer","github","iphone","launchd","omnifocus","spotlight","taskpaper","beautiful","benoit","github","jered","macdrifter","marked","omnifocus","spotlight","taskpaper","weird","alone","another","assume","capable","caveats","changed","comments","completed","couple","create","creating","customizations","different","differentiate","effective","eloquently","enough","entry","everything","explain","files","finished","folder","found","going","great","hours","intended","interested","journaling","leave","little","logging","making","mention","necessary","night","notes","opted","organize","personal","posted","potentially","project","quick","recently","running","scanning","script","simple","single","string","tasks","technical","today","track","tweaks","types","useful","using","various","wanted","weird","while","working"]
},{
"title": "Web excursions: February 1, 2012 - February 24, 2012",
"url": "/2012/02/24/web-excursions-february-1-2012-february-24-2012/",
"tags": ["bookmarks"],
"date": "Feb 24th, 2012",
"ts": "1330095600",
"summary": "Links of interest from February 1, 2012 through February 24, 2012: Plain Text to OmniFocus This is great stuff. I ve been wanting an easy way to bridge the gap between the plain-text project management I do with Taskpaper files in my project folders, and the daily life/work task management I do in OmniFocus (switched back last week). Exciting! dotfiles Opinionated Dotfiles for zsh and MacVim. Lots of good stuff in here. Address Book URLs Now if I can make nvALT recognize addressbook:// urls, you could make round-trip links to connect notes to Address Book entries HTML5 Please - Use the new and shiny responsibly A very handy reference for HTML5 and CSS3 with notes about browser compatibility and other pitfalls. Dumping Google Search Hooray, MacSparky is a DuckDuckGo convert! I haven t used Google search for about a year now, and have never missed it.",
"keywords": ["applescript","google","group","iphone","macvim","management","omnifocus","taskpaper","address","dotfiles","duckduckgo","dumping","exciting","google","hooray","links","macsparky","macvim","omnifocus","opinionated","search","taskpaper","addressbook","between","bridge","browser","compatibility","connect","convert","daily","dotfiles","entries","files","folders","great","handy","haven","interest","links","management","missed","notes","nvalt","pitfalls","project","recognize","responsibly","round","search","shiny","stuff","switched","through","wanting"]
},{
"title": "Log TaskPaper archives to Day One",
"url": "/2012/02/23/log-taskpaper-archives-to-day-one/",
"tags": ["applescript","dayone","logging","productivity"],
"date": "Feb 23rd, 2012",
"ts": "1330047480",
"summary": "I wrote a while back about some Day One geekery , and shared the git wrapper I set up for bagging some of my larger commit messages to Day One entries automatically. Then Rob went and asked me if I could do something similar with TaskPaper , logging archived tasks to Day One on the fly. Had to try it. I built the script using the newer query syntax, and I find it a little more stable than the old project-by-project parsing method (nice work, Jesse). To use it, you just need a TaskPaper document with at least one project and an Archive: section, and Day One with the CLI tool installed . Using the frontmost document in TaskPaper, it grabs all the @done tasks 1 (with or without a date) that aren t already in the Archive project for processing. It goes through a few of my common in-process tags (@na, @priority, @waiting) and removes them if they exist on a @done task (they re meaningless after completion). Then it looks to see if there s a @project tag, and if not, it adds one for the project the task was in when it was archived (I think this is default TaskPaper behavior ). The full text content of each task (complete with Markdown-style list delimiter and all of the project/date tags you d want in a log entry) is added to a string. Each @done task is then moved to the Archive project. The name of the parent file and the list of all the tasks you just archived are sent as a single entry to Day One using the CLI tool. I m not certain that the end results of using this are superior to logging commit messages. With commit messages I m talking about what I just did and noting any issues just being more verbose in general. This technique is a really convenient way to log, though, if you re already a TaskPaper (and Day One) user, and works perfectly as a supplement to other logging methods. As you archive your tasks, they get dropped into a calendar view in ready-to-display Markdown format. It s faster and prettier than to trying to maintain and sort archives of finished tasks in TaskPaper. Given that this is pretty much automatic in my current workflow, I m just going to let both logging systems churn for a while and see if one or the other isn t pulling its weight. The script is thoroughly commented. Probably unnecessarily so for such a short task (I m pretty sure there s more comment than code in there). See below for brief installation instructions. Just copy the script into AppleScript Editor and save it as a compiled script in (",
"keywords": ["apple","applescript","fastscripts","launchbar","markdown","preferences","system","taskpaper","again","applescript","applications","archive","editor","fastscripts","jackson","jesse","keyboard","launchbar","maestro","markdown","preferences","system","taskpaper","terminal","thanks","using","access","added","allows","archive","archived","archives","asked","automatic","automatically","available","bagging","behavior","below","brief","built","calendar","certain","churn","comment","commented","commit","common","compiled","content","convenient","creating","dayone","default","delimiter","directory","display","document","dropped","enabled","entries","entry","exist","faster","finished","folder","format","frontmost","geekery","general","going","grabs","hotkey","inclusion","installation","installed","instructions","issues","larger","linked","little","logged","logging","looks","maintain","meaningless","menubar","messages","method","methods","modify","moved","newer","notes","noting","parent","parsing","perfectly","poison","preferences","prettier","priority","process","processing","project","pulling","query","ready","removes","results","revision","script","section","shared","short","similar","single","stable","standard","string","style","superior","syntax","systems","talking","tasks","technique","think","thoroughly","through","trying","unnecessarily","using","verbose","waiting","weight","whatever","while","within","workflow","works","wrapper","wrote"]
},{
"title": "Markdown Service Tools get blockquotes, self-links and more",
"url": "/2012/02/22/markdown-service-tools-get-blockquotes-self-links-and-more/",
"tags": ["markdown","markdownservices","service"],
"date": "Feb 22nd, 2012",
"ts": "1329971580",
"summary": "I needed some relaxing regular expression fun tonight, so I ve updated a couple of services in the Markdown Service Tools and made some small additions. The main new feature is for handling blockquotes, and there are two versions of the Service. I m providing some brief explanations after the jump, but feel free to skip to the Markdown Service Tools page and just check the changelog . The first of the blockquoting tools, Blockquote Selection, just adds a and a space before every line in the selection which contains text. It preserves existing indentation and is best for quoting single paragraphs quickly or for large chunks with code blocks and other indented text you want to keep that way. The second version, Convert Indents to Quote Levels, is for turning hierarchically-indented text (using tabs, not spaces) into nested blockquotes in Markdown format. In essence, it swaps tabs for s. You can turn a conversation like this: The other big feature, and probably the one that took me the most time this evening, is a service for converting standalone URLs into hyperlinks. If a URL isn t part of an HTML or Markdown (reference or inline) link, it gets turned into a Markdown-style self-link, which will preview/convert as a hyperlink with the URL itself as the text. This is done by surrounding the URL with angle brackets (). This service will ignore anything in an href attribute, anything preceded by ]( (assumed to be an inline link), anything on a line that starts with a reference ( The Service currently only looks for http, https and ftp links. If you have another use case I should consider, let me know. The Unwrap Paragraphs service I added the other day has had a small dose of smart added to it. It won t mess with your code blocks or other specially-formatted text now, and should do a much better job of concatenating words that were hyphenated when the text was hard-wrapped to begin with. Let me know how it goes, I m definitely looking to improve this one. All of them, really, so don t be shy with the feedback. You can grab the whole pack of Services and read up on the rest of the included tools on the Markdown Service Tools project page. There s a readme included in the download (and I just updated it and the documentation) with the full contents of that page, so feel free to download directly below and browse that on your own. Your support is greatly appreciated! Or me on GitHub! This took a lot of bending over backward because I need it to",
"keywords": ["element","expression","inline","ipsum","linking","locator","lorem","markdown","regular","resource","block","blockquote","convert","download","github","indents","levels","markdown","paragraphs","quote","selection","service","services","tools","unwrap","added","additions","angle","another","apologize","appreciated","assumed","attribute","backward","because","becomes","before","begin","beginning","below","bending","blockquotes","blockquoting","blocks","brackets","breaking","brief","browse","brutally","changelog","character","check","chunks","comma","common","concatenating","consider","contains","contents","conversation","conversion","convert","converting","converts","couple","default","definitely","directly","doesn","download","essence","evening","exists","explanations","expression","expressions","feature","feedback","first","format","formatted","greatly","handling","hierarchically","https","hyperlink","hyperlinks","hyphenated","ignore","improve","included","indentation","indented","inelegance","inline","itself","linked","linking","links","lookbehinds","looking","looks","machine","marks","moved","needed","negative","nested","occurence","paired","paragraphs","parenthesis","preceded","preserves","prettier","preview","previews","project","providing","punctuation","quickly","quotes","quoting","readme","recognize","regular","relaxing","removes","removing","second","selection","separated","service","services","single","small","smart","space","spaces","specially","standalone","standard","starts","style","support","surrounding","swaps","tonight","tools","turned","turning","updated","using","version","versions","whole","wikipedia","words","wrapped"]
},{
"title": "A Fluid icon for ThinkUp",
"url": "/2012/02/20/a-fluid-icon-for-thinkup/",
"tags": ["design","fluid"],
"date": "Feb 20th, 2012",
"ts": "1329768000",
"summary": "I love ThinkUp for managing what there is of my social presence, as well as for archiving my Twitter and Facebook posts. So much so that it gets its own Fluid 1 app. The favicon for the web app (which Fluid uses as the app icon by default) is really sad-looking in the Dock, though, so I whipped up an icon and thought I d share it. Nothing special, just a little more pleasing to me than the blurry mess the favicon creates. Running a local copy of ThinkUp isn t terribly difficult, but I won t go into a full list of instructions here. There are great instructions on the ThinkUp site for both local installations and running it in the cloud. If you have web sharing turned on, though, and you put it in your Sites folder, you re most of the way there. I point a virtual host 2 named think to it, and make that the home URL for my Fluid browser. Click the icon image above to get the full version (or right click and save the linked file). In the general preferences for a Fluid ThinkUp SSB, just use the Change button under Application Icon and select the png file you downloaded. You ve heard of Fluid, right? If you regularly use web apps such as Facebook, GMail, Google Reader or any web-based site, you need this. The best part of the registered version is separate cookies, which is extremely useful if you have, say, multiple Google accounts. Just get it! By the way, managing virtual hosts is way more fun with VirtualHostX . If you do local development or run local websites, I highly recommend it.",
"keywords": ["facebook","gmail","google","locator","reader","resource","thinkup","twitter","change","click","facebook","fluid","gmail","google","nothing","reader","running","sites","thinkup","twitter","virtualhostx","above","accounts","archiving","based","blurry","browser","button","click","cloud","cookies","creates","default","development","difficult","downloaded","favicon","folder","general","great","heard","highly","hosts","image","installations","instructions","linked","little","local","looking","managing","multiple","named","pleasing","point","posts","preferences","presence","recommend","registered","regularly","right","running","separate","share","sharing","social","special","terribly","think","thought","turned","under","useful","version","virtual","websites","whipped"]
},{
"title": "Auto-pairing for MarsEdit and TextEdit using TextExpander",
"url": "/2012/02/20/auto-pairing-for-marsedit-and-textmate-using-textexpander/",
"tags": ["experiments","marsedit","scripting","snippet","textexpander"],
"date": "Feb 20th, 2012",
"ts": "1329750000",
"summary": "Chetan Kunte recently sent me a TextExpander experiment he was working on, and I thought I d post it and my explorations of it. It s designed to add auto-pairing for bracket and quote characters to MarsEdit, and it s based on a bit of information that I hadn t been aware of before. The basis for the script is the fact that little to my knowledge TextExpander traps a delimiter sequence and leaves the selection in place while it expands it. This means that if your shell/AppleScript snippet wants to access the selected text after a single-character trigger, it can. It doesn t store this information within TextExpander, so it takes some AppleScript shenanigans to get the selection from any given program. This is hugely frustrating because selected text is handled differently in almost every app, leading to a thousand permutations if you want a universally-capable snippet. However, it works, and the solution that Chetan came up with is a great start on this. The experiment also makes use of a trick I learned from Joe Workman which allows you to call a library shell snippet within other snippets to create a require statement and reuse code within other snippets. In this case, it s calling an AppleScript to get the selection from MarsEdit and insert it between characters. If there s no selection, you get paired characters. Chetan s first version is available on github . My first addition to this script was to add a % cursor placement so that your cursor was between the paired characters after expansion. I also added a block to check the frontmost app and allow the script to be expanded to any AppleScript-able application. TextEdit is the only additional app I ve worked out so far. My version is available as a fork of Chetan s on github. You can download or subscribe to it using the raw version of the TextExpander group . Set up the group so that it only expands in the applications you have scripted for by default this is just MarsEdit and TextEdit. The application-specific settings are available when you select the group s folder icon after installing it in TextExpander. As you can see in the screenshot to the right, the group consists of one AppleScript for gathering the selection (load the TextExpander group to see the actual script), and a series of plain text snippets that call the AppleScript snippet using the syntax. In mine (shown), the places the cursor before the right character of the pair after expansion. Each snippet is triggered",
"keywords": ["apple","applescript","howbert","marsedit","snippets","textedit","textexpander","textmate","applescript","chetan","however","kunte","marsedit","textedit","textexpander","textmate","tools","workman","access","added","adding","allow","allows","almost","another","anyone","applications","available","aware","based","basis","because","before","between","biggest","block","bracket","brackets","branch","calling","capable","character","characters","check","consists","control","create","cursor","default","delimiter","designed","differently","doesn","download","expanded","expands","expansion","experiment","experiments","explorations","finds","first","folder","frontmost","frustrating","gathering","github","great","group","handled","hugely","impossible","information","installing","intelligent","invested","knowledge","leading","learned","leaves","library","little","makes","myself","nearly","paired","pairing","permutations","placement","places","point","program","project","proved","pulled","quote","rabbit","recently","repeat","repos","requests","reuse","rewrite","right","screenshot","script","scripted","selected","selection","sequence","series","settings","shell","shenanigans","shown","single","snippet","snippets","solution","specific","square","statement","store","style","subscribe","syntax","takes","thought","thousand","traps","trick","trigger","triggered","universally","using","version","wanted","wants","while","whole","within","worked","working","works","wouldn","wrapped"]
},{
"title": "TextExpander tools for AppleScript editing",
"url": "/2012/02/19/textexpander-tools-for-applescript-editing/",
"tags": ["scripting","snippet","textexpander","tools"],
"date": "Feb 19th, 2012",
"ts": "1329675660",
"summary": "I added a new group to the TextExpander Tools collection this morning: a set of snippets for working in AppleScript editor. The group is pretty barebones right now, but handy nonetheless. Feel free to submit any additions or expansions you come up with, I ll gladly include them in the set (and credit you publicly). I was actually working on a more complex set of snippets involving some AppleScripting when I decided to build a few of these. I ll try to post the results of that later today. The snippets cover basic syntax for , , and setting variables and properties. For and , following the trigger ( if or tell ) with a space will create a one-liner and reposition your cursor, following immediately with minus symbol () will create a block with an end block and put your cursor back in position for continuing the statement. and will use the Fill dialog to create statements and declarations, respectively. You can pick up the group using the te-snippets tool , which will allow you to download directly or give you a url you can subscribe to in TextExpander to automatically get updates as the group grows. Addendum: If it doesn t come through in the file, I should mention that I have the group set up in TextExpander to expand Only in AppleScript Editor. Just select the group in the TextExpander window and set Expand in: as needed.",
"keywords": ["apple","applescript","dropbox","howbert","macintosh","snippets","textexpander","addendum","applescript","applescripting","editor","expand","textexpander","tools","added","additions","allow","automatically","barebones","basic","block","build","collection","complex","continuing","cover","create","credit","cursor","decided","declarations","dialog","directly","doesn","download","editor","expand","expansions","gladly","group","grows","handy","involving","later","liner","mention","minus","morning","needed","nonetheless","position","properties","publicly","reposition","respectively","results","right","setting","snippets","space","statement","statements","subscribe","symbol","syntax","through","today","trigger","updates","using","variables","window","working"]
},{
"title": "Unbelievable fortune",
"url": "/2012/02/15/unbelievable-fortune/",
"tags": ["personal"],
"date": "Feb 15th, 2012",
"ts": "1329319860",
"summary": "I do not understand or comprehend these things, but I am thankful for them every day.",
"keywords": ["forgiveness","groups","health","jesus","mental","states","support","united","accept","believe","cannot","comprehend","forgiven","girlfriends","parents","scalp","simple","supportive","survived","teens","thankful","through","twenties","unbelievable","understand","worst","young"]
},{
"title": "Unwrap Paragraphs for the Markdown Service Tools",
"url": "/2012/02/14/unwrap-paragraphs-for-the-markdown-service-tools/",
"tags": ["markdown","markdownservices","service"],
"date": "Feb 14th, 2012",
"ts": "1329233880",
"summary": "Inspired by a Twitter request this morning, I ve updated the Markdown Service Tools to version 1.3.1 to include an experimental version of a new service: Unwrap Paragraphs. Opposite from the Preserve line breaks service, this one will look for consecutive lines and merge them together into one paragraph. It handles hyphenated words and won t mess up em/en dashes in Markdown style ( or ). If there s a newline between two lines, it assumes it s a new paragraph and treats it as such. Note: this does currently unwrap list items and code blocks as well. It should be used selectively on paragraph text. I ll eventually put in the time to come up with a regular expression that will avoid this. Version 1.3.1 is available on the Markdown Service Tools project page . Somebody owes me a box of Aussie Tim Tams .",
"keywords": ["communities","expression","markdown","networking","newline","online","paragraph","regular","service","social","tools","twitter","aussie","inspired","markdown","opposite","paragraphs","service","somebody","tools","twitter","unwrap","version","assumes","available","avoid","between","blocks","breaks","consecutive","dashes","eventually","experimental","expression","handles","hyphenated","items","merge","morning","newline","paragraph","project","regular","selectively","service","style","together","treats","unwrap","updated","version","words"]
},{
"title": "Markdown Service Tools 1.3",
"url": "/2012/02/11/markdown-service-tools-1-3/",
"tags": ["markdown","markdownservices","service"],
"date": "Feb 11th, 2012",
"ts": "1328994000",
"summary": "Notably, Force Line Breaks has become Preserve Line Breaks, a slightly more elegant service for getting github-style linebreaks in your documents. If you have a block of text with hard returns in it (Multi)Markdown will generally concatenate those into a single paragraph. This service looks for these and adds the two spaces at the end of the line required to convert it into a and preserve your formatting. Lucky Link is now Auto-link web search, the same idea but it functions a little better. Select some text and run it to get a Markdown link to the top result from a web search for that text. There are a couple of inclusions, such as cleanup scripts for tables and lists, and minor revisions for other commands. Download it from the Markdown Services project page .",
"keywords": ["document","engine","formats","markdown","multimarkdown","search","service","tools","breaks","download","force","lucky","markdown","multi","notably","service","services","tools","block","cleanup","commands","concatenate","convert","couple","developed","documents","elegant","formatting","functions","generally","getting","github","inclusions","linebreaks","lists","little","looks","minor","paragraph","project","recently","required","returns","revisions","scripts","search","service","services","single","slightly","spaces","style","tables","today","updated"]
},{
"title": "The Bro Show 94",
"url": "/2012/02/08/the-bro-show-94/",
"tags": ["interview","podcast"],
"date": "Feb 8th, 2012",
"ts": "1328752020",
"summary": "I had a great time today with Myke and Terry on The Bro Show . We talked about Macworld, some of my current projects, and a lot of things that I don t know as much as I probably should about. Have a listen !",
"keywords": ["android","apple","cutts","design","development","google","iphone","macworld","macworld","terry","great","listen","projects","talked","today"]
},{
"title": "Fountain is released, works with Marked!",
"url": "/2012/02/08/fountain-is-released-works-with-marked/",
"tags": ["fountain","marked"],
"date": "Feb 8th, 2012",
"ts": "1328751540",
"summary": "The next evolution of Screenplay Markdown (SPMD) is out, now part of a project called Fountain . It s quite the collaborative effort: Fountain comes from several sources. John August and Nima Yousefi developed Scrippets, which used simple markup to embed screenplay-formatted material in websites. Stu Maschwitz drafted a more extensive spec known as Screenplay Markdown or SPMD, designed for full-length screenplays. Stu and John discovered that they were simultaneously working on similar text-based screenplay formats, and merged them into what you see here. Other contributors to the spec include Martin Vilcans, Brett Terpstra, Jonathan Poritsky, Kent Tessman, and Clinton Torres. As did its predecessor, Fountain works great with Marked , thanks to hard work by Martin Vilcans (screenplain) and Jonathan Poritsky . Check it out on the Candler blog .",
"keywords": ["fountain","maschwitz","resources","screenplay","writers","yousefi","brett","candler","check","clinton","fountain","jonathan","markdown","marked","martin","maschwitz","poritsky","screenplay","scrippets","terpstra","tessman","torres","vilcans","yousefi","based","called","collaborative","comes","contributors","designed","developed","discovered","drafted","effort","embed","evolution","extensive","formats","formatted","great","length","markup","merged","predecessor","project","screenplain","screenplay","screenplays","several","similar","simple","simultaneously","sources","thanks","websites","working","works"]
},{
"title": "Introducing Gather, a Cocoa Markdownifier",
"url": "/2012/02/05/introducing-gather-a-cocoa-markdownifier/",
"tags": ["macos","markdown"],
"date": "Feb 5th, 2012",
"ts": "1328496180",
"summary": "I wrote something a couple of nights ago that I thought I d share. I m calling it Gather, and it s basically an appified version of my Readability/Markdownify work. A Cocoa version of Marky the Markdownifier , if you will. You can paste in a URL and it will attempt to find the core text of the page, download it and turn it into Markdown for clean web clipping. It displays the result in a field you can copy from, and it can optionally auto-copy the result to your clipboard. It s a little shaky, especially on sites with bad markup. I d say that right now it has about a 60% success rate. As I have time to work on it I ll be improving this and adding a bevy of features that may eventually become an App Store submission. We ll see. This proof-of-concept version 1 , however, is free to download. I ll ask nicely that you please not steal the idea and beat me to the punch . This build is Lion-only it won t run at all on Snow Leopard. I m not really taking any feature suggestions right now, as I already have an extensive roadmap for it that will turn it into something highly useful in many situations (and I m quite aware of what it lacks in this state). I would enjoy hearing from you with your reactions, though. This version uses GGReadability by Curtis Hard. You should definitely check out his work-in-progress app, Caffeinated . It s an RSS reader with Google Reader support and some serious potential. I m also using HTML2Text for markdownifying. Gather v0.1 Download Gather v0.1 Turn web pages into clean Markdown for clipping. Published 02/06/12. Updated 02/06/12. Changelog Donate More info Your support is greatly appreciated! Or me on GitHub! I know the icon is pretty terrible. I liked my first version when it was in Photoshop, but it looked horrible in the Dock. It ll get better.",
"keywords": ["aggregator","google","leopard","locator","markdown","reader","resource","store","caffeinated","changelog","cocoa","credit","curtis","donate","download","enjoy","ggreadability","gather","github","google","leopard","markdown","markdownifier","markdownify","marky","photoshop","published","readability","reader","store","updated","adding","appified","appreciated","aware","build","calling","check","clean","clipboard","clipping","concept","couple","definitely","displays","download","enjoy","especially","eventually","extensive","feature","features","field","first","greatly","hearing","highly","horrible","however","improving","lacks","liked","little","looked","markdownifying","markup","nicely","nights","optionally","pages","paste","potential","proof","punch","reactions","reader","right","roadmap","serious","shaky","share","sites","situations","steal","submission","success","suggestions","support","taking","terrible","thought","useful","using","version","wrote"]
},{
"title": "Connecting nvALT and Address Book",
"url": "/2012/02/02/connecting-nvalt-and-address-book/",
"tags": ["applescript","macos","nvalt"],
"date": "Feb 2nd, 2012",
"ts": "1328238660",
"summary": "Here s a quick, simple AppleScript to help you hook Notational Velocity / nvALT into Address Book. I sometimes want to attach a note or list of links to an entry in my address book, but I don t like using the notes field. I tend to keep all of my notes 1 in nvALT, and I prefer not to scatter them too far. All I needed was a way to quickly create and link an nvALT note to each address As of recent versions, Notational Velocity and nvALT have a URL handler for nv:// (or nvalt://). Using the parameter allows you to initiate a search in NV from a link, e.g. . If you use a unique prefix and full name, you can pinpoint a single note without having to create a file or locate the note s ID. The first time you click the link, it will open a search in NV, and pressing Return will create the note and begin editing. Once the note is there, it will locate it instantly the next time you click the link. I m using the prefix abnote: on my notes. This AppleScript will create the URL entry automatically from the selected entries first and last names, and you can edit the prefix in the script to be anything you like. Just save it as Add NV Note.scpt in and it will show up in your script menu 2 when you re in Address Book. You can run it on a bunch of entries (it s not optimized to run on an entire large address book, though), or one at a time as you need it. I wrote this on Lion. I honestly have no idea if it works on anything earlier. It might 3 . Notes, for me, are different from log entries . I actually like keeping those separate most of the time. Enabled in AppleScript Editor, Preferences- General- Show Script menu in menubar. Or better, use FastScripts . It might not.",
"keywords": ["address","applescript","contacts","information","managers","notational","personal","velocity","address","applescript","editor","enabled","fastscripts","general","notational","notes","preferences","return","script","using","velocity","abnote","address","allows","attach","automatically","begin","bunch","click","create","different","earlier","editing","entire","entries","entry","field","first","handler","having","honestly","instantly","keeping","links","menubar","names","needed","notes","nvalt","nvalt","optimized","parameter","pinpoint","prefer","prefix","pressing","quick","quickly","recent","scatter","script","search","selected","separate","simple","single","sometimes","unique","using","versions","works","wrote"]
},{
"title": "ScrivWatcher, one more time",
"url": "/2012/01/31/scrivwatcher-one-more-time/",
"tags": [],
"date": "Jan 31st, 2012",
"ts": "1328018400",
"summary": "I ve updated ScrivWatcher (a utility for previewing compiled Scrivener documents live in Marked) to 1.5. This version has better error handling and a progress bar showing compile progress. It s still a droplet, you just drop onto the progress bar window instead of a drop pad, or drop a .scriv file directly onto the icon. For the command line savvy, the gist has been updated as well. Run it with -h to see all of the options. There s even a progress bar in the terminal (default setting). The big news, though, is that I have this working within Marked . The next version will be able to accept dropped Scrivener projects and provide a compiled preview that updates with changes from Scrivener. No external application needed! That release should be ready relatively soon, I m putting out a beta for testing this week. ScrivWatcher v1.5 Download ScrivWatcher v1.5 Watch a Scrivener project and preview it in Marked by dragging the .scriv file to this droplet. Published 01/26/12. Updated 01/26/12. Changelog Donate More info",
"keywords": ["compiler","downloading","jquery","scrivener","shareware","uploading","windows","changelog","donate","download","marked","published","scrivwatcher","scrivener","updated","watch","accept","changes","command","compiled","default","directly","documents","dragging","droplet","dropped","error","external","handling","latest","needed","options","preview","previewing","project","projects","putting","ready","relatively","release","savvy","scriv","setting","showing","terminal","testing","updated","updates","utility","version","window","within","working"]
},{
"title": "From my Macworld Diary",
"url": "/2012/01/26/from-my-macworld-diary/",
"tags": ["macworld","personal"],
"date": "Jan 26th, 2012",
"ts": "1327630320",
"summary": "My Tech Talk this morning, 40 Tips in 40 Minutes with David Sparks and Merlin Mann went really well, I think. I had fun doing it, anyway. I put up some show notes at the soon-to-change 40tips.com , if you re interested. I m looking forward to seeing David and Merlin with Rob Corddry tomorrow . If you re around Macworld, you should probably get there early! Lunch with Shawn Blanc , Stephen Hackett , Brett Kelly , Ben Brooks , and Thomas Brand was awesome 1 . Great to meet so many cool people all at once. I just got back from a clandestine meeting at the Samovar Tea Lounge (I love that place). I had tea. We had laughs. I was shown software. It was amazing. I will pimp the hell out of it when it comes out in the next couple of months. Until then, all I can say is just prepare to have core elements of your workflow change drastically, for the better. That s the second game-changer I ve been shown lately but can t disclose yet. I will go insane if this keeps happening. Also, if you are in San Francisco right now, swing down to Jillian s tonight before 11pm and catch up with the TUAW crew. It s going to be a good time. Low-key, good conversation, and probably drink tickets. Sorry, total nerd namedrop linkfest. Really fun bunch, though.",
"keywords": ["corddry","francisco","iphone","jillian","macworld","merlin","blanc","brand","brett","brooks","corddry","david","diary","francisco","great","hackett","jillian","kelly","lounge","lunch","macworld","merlin","minutes","samovar","shawn","sorry","sparks","stephen","thomas","amazing","anyway","awesome","before","bunch","catch","change","changer","clandestine","comes","conversation","couple","doing","drastically","drink","elements","going","happening","insane","interested","keeps","laughs","linkfest","looking","meeting","morning","namedrop","notes","people","prepare","right","second","seeing","shown","software","swing","think","tickets","tomorrow","tonight","workflow"]
},{
"title": "ScrivWatcher droplet, an easier live Scrivener preview",
"url": "/2012/01/26/scrivwatcher-droplet-an-easier-live-scrivener-preview/",
"tags": [],
"date": "Jan 26th, 2012",
"ts": "1327586160",
"summary": "I got the droplet for ScrivWatcher working, so you don t need to run the script from the command line if you don t want to. I made some further updates to the script 1 , and the version on GitHub will stay in sync with this application as it develops, so you can choose to go either way. Just unzip the download below and put the app in your Applications folder (or wherever). Then drop a Scrivener project on it and it will open the compiled file as a Marked preview and start watching. You can also launch the application and you ll get a droppable window that you can drag Scrivener projects to, or put it in your Dock for easy access. Let me know how it works. If everything s groovy, I ll be adding this and some other updates to the Bonus Pack as soon as possible. I ll probably try to get droplets for the MarsEdit, nvALT, etc. watchers working as well. I present at Macworld iWorld at 10am today, so that s going to have to wait while I rehearse! ScrivWatcher v1.5 Download ScrivWatcher v1.5 Watch a Scrivener project and preview it in Marked by dragging the .scriv file to this droplet. Published 01/26/12. Updated 01/26/12. Changelog Donate More info Your support is greatly appreciated! Or me on GitHub! Script detects whether it s running on the command line or in the droplet. If it s on the command line, adds progress bar support for caching and concatenating. Error catcher for some XML parsing issues on more complex document structures Rewrote the whole system to cache conversions and only update when the rtf version is newer than the text version. It can now handle files with many sections much, much faster. Turned off headline generation from page titles by default. If you want it back, you can edit the script inside the app bundle and set titlesasheaders to true. I ll try to build a more external configuration for it soon. mostly just in error handling, but it also quits when Marked quits now. That s handy if you re running in the background.",
"keywords": ["github","leopard","macworld","marsedit","scrivener","applications","bonus","changelog","donate","download","error","github","leopard","macworld","marked","marsedit","names","opens","published","rewrote","script","scrivwatcher","scrivener","store","turned","updated","watch","watches","access","adding","appreciated","avoid","background","based","below","build","built","bundle","cache","caching","catcher","changes","choose","command","compiled","complex","concatenating","configuration","conversions","default","detects","develops","document","download","dragged","dragging","droplet","droplets","droppable","either","error","everything","external","faster","files","folder","functionality","generation","going","greatly","groovy","handle","handling","handy","headers","headline","iworld","inside","issues","launch","mostly","newer","nvalt","overwriting","parsing","possible","preview","previews","project","projects","quits","rehearse","running","script","scriv","sections","sorting","structures","support","system","titles","today","unzip","updates","useful","users","version","watchers","watching","wherever","while","whole","window","working","works"]
},{
"title": "Preview a full Scrivener document in Marked, live",
"url": "/2012/01/25/preview-a-full-scrivener-document-in-marked-live/",
"tags": [],
"date": "Jan 25th, 2012",
"ts": "1327519500",
"summary": "BooneJS tweeted me a script yesterday that takes my original scrivwatch script and makes it handle full Scrivener documents. It scrapes the XML file to get the order of RTF files in the document, then used the original method to convert and concatenate all of it into a plain text file. If you write in Scrivener using Markdown, you get a file that Marked can preview as a rendered document with any theme. It uses the original datestamp polling to watch for any change in any of the files in the project and update Marked within a second or two. I took the script and ran with it this morning, switching it over to REXML parsing and adding in titles for sections and pages. The original script broke on a couple of my projects, but the recursive XML handler I set up fixes the issue. To run it, you just need to save the script on your drive and make it executable (). Then you can run . Marked will open automatically and changes will be reflected every time you save. To stop the script, you need to type Control-c in the terminal window you ran it from. I m going to try to wrap this into a droplet that you can just drop a Scrivener project on and launch both Scrivener and Marked with scrivwatcher syncing the two. Once I ve determined whether that s win or fail, I ll update the Marked Bonus Pack with it. Yes, I will eventually find time to build this functionality into Marked, along with the rest of the Bonus Pack scripts. The script is currently a gist on GitHub if you want to play with it. I ll be updating the gist as I have time to clean it up and make a few things (much) more elegant. If you want to fork and help me out, it s always appreciated!",
"keywords": ["format","formats","github","scrivener","bonus","boonejs","control","github","markdown","marked","rexml","scrivener","adding","appreciated","automatically","broke","build","change","changes","clean","concatenate","convert","couple","datestamp","determined","document","documents","drive","droplet","elegant","eventually","executable","files","fixes","functionality","going","handle","handler","launch","makes","method","morning","original","pages","parsing","polling","preview","project","projects","recursive","reflected","rendered","scrapes","script","scripts","scrivwatch","scrivwatcher","second","sections","switching","syncing","takes","terminal","theme","titles","tweeted","updating","using","watch","window","within","write","yesterday"]
},{
"title": "Web excursions: January 20, 2012 - January 24, 2012",
"url": "/2012/01/25/web-excursions-january-20-2012-january-24-2012/",
"tags": ["bookmarks"],
"date": "Jan 25th, 2012",
"ts": "1327471260",
"summary": "Links of interest from January 20, 2012 through January 24, 2012: Magnus iPad stand Via Justin Blanton , a new item for my wishlist. A better Photoshop grid for responsive web design Elliot Jay Stocks gives us an awesome Photoshop template for a responsive web design layout. filmgirl/TextMate-Themes Christina Warren s TextMate theme compliation (they work with Sublime Text 2, as well). Some classics and some greats. Some previews can be seen here . Git Todo This is great. I plan to incorporate it with my prompt_command to work like , but I love the simplicity. codr.cc Awesome little pastebin with live code editing/viewing capabilities. It uses CodeMirror extensions for various languages and provides public, read-only viewing urls. Cool stuff.",
"keywords": ["adobe","christina","elliot","photoshop","stocks","sublimetext","textmate","warren","awesome","blanton","christina","codemirror","elliot","justin","links","magnus","photoshop","stocks","sublime","textmate","themes","warren","awesome","capabilities","classics","command","compliation","design","editing","extensions","filmgirl","gives","great","greats","incorporate","interest","languages","layout","little","pastebin","previews","prompt","provides","public","responsive","simplicity","stand","stuff","template","theme","through","various","viewing","wishlist"]
},{
"title": "A Service for writing MultiMarkdown footnotes inline",
"url": "/2012/01/24/a-service-for-writing-multimarkdown-footnotes-inline/",
"tags": ["markdown","markdownservices","multimarkdown","scripting","service"],
"date": "Jan 24th, 2012",
"ts": "1327423920",
"summary": "I get a lot of one-off requests for scripts and tips on how to handle tasks specific to people s workflow or writing style. I generally keep myself pretty busy, so I usually reply with a quick idea or thought and leave it up to them to run with it. David Coleman emailed me this morning, though, with a request that struck me as an interesting enough idea to whip up a script before work. What David wanted to do was take the idea behind my Inline Links to References command in the Markdown Service Tools and do something similar for footnotes, allowing him to write footnotes inline in a paragraph and have them converted before processing with MultiMarkdown. It s not such a chore to skip a few lines and drop in the footnote syntax that this should be part of the spec, but it is something I would find handy in several situations. So The Service can handle footnotes inside of lines, at the end of lines, spanning multiple lines with breaks (creates paragraphs) and does fine with Markdown within the footnote. One nice thing about this syntax is that if you re previewing as you write it italicizes the output to differentiate it until you ve used the service to move it out of the main text. Multi-line footnotes need to begin at the end of a line of text, and just use double-newlines to separate paragraphs within the footnote, e.g.: Here s the script, also available as a Service download at the end of the post. I m in San Francisco for an AOL Tech code jam right now, so I don t have a lot of time to thoroughly test this. Please let me know about any bugs that need fixing. If you re in San Francisco and like coffee or beer, hit me up on Twitter . If you re here for Macworld, then you d better be at my 40 Tips in 40 Minutes talk with David Sparks and Merlin Mann on Thursday! Convert Inline Footnotes Service v1.2 Download Convert Inline Footnotes Service v1.2 Convert inline footnotes in (Footnote to be created) format to MultiMarkdown footnotes. Published 01/24/12. Updated 01/24/12. Changelog Donate More info Your support is greatly appreciated! Or me on GitHub!",
"keywords": ["coleman","david","francisco","macworld","markdown","merlin","multimarkdown","twitter","changelog","coleman","convert","david","donate","download","footnote","footnotes","francisco","github","inline","links","macworld","markdown","merlin","minutes","multi","multimarkdown","published","references","service","sparks","thursday","tools","twitter","updated","added","allowing","appreciated","available","before","begin","behind","below","breaks","chore","coffee","command","converted","created","creates","differentiate","document","double","download","duplicated","emailed","enough","fixing","footnote","footnotes","format","formatted","generally","greatly","handle","handy","happens","inline","inside","interesting","italicizes","leave","making","morning","mornings","multiple","myself","newlines","output","paragraph","paragraphs","people","picked","previewing","processing","quick","reply","requests","right","script","scripts","separate","service","several","similar","situations","spanning","specific","struck","style","support","syntax","tasks","thoroughly","thought","titled","titles","usually","wanted","within","workflow","write","writing"]
},{
"title": "iOS-inspired popup box CSS",
"url": "/2012/01/20/ios-inspired-popup-box-css/",
"tags": ["webdesign"],
"date": "Jan 20th, 2012",
"ts": "1327093200",
"summary": "I tweeted the other day that I had made some CSS buttons in a sleep-deprived haze that I really dug. The only reason I even remembered they were there was a command-line-generated entry in Day One that linked to the file. This is why I log . Anyway, I polished them up a little and threw up a GitHub page for them. If you re a web designer and you re looking for an iOS-like popup style, they might be of use to you. You can see the demo, the markup and classes and download the CSS (and minified version) at http://ttscoff.github.com/popupsCSS/ . Late I-forgot-to-mention addendum: These styles were developed primarily with Marked in mind, meaning there are no non-webkit vendor prefixes I guess I put in prefixless and moz versions in my sleep again and they are not at all cross-browser tested. I ll put up a more complete version when I get a chance. If you take matters into your own hands, please fork on github or send me your updates for inclusion!",
"keywords": ["cascading","changelog","design","formats","github","javascript","sheets","style","anyway","github","marked","addendum","again","browser","buttons","chance","classes","command","cross","deprived","designer","developed","download","entry","forgot","generated","github","guess","hands","inclusion","linked","little","looking","markup","matters","meaning","mention","minified","polished","popup","popupscss","prefixes","prefixless","primarily","remembered","sleep","style","styles","tested","threw","ttscoff","tweeted","updates","vendor","version","versions","webkit"]
},{
"title": "System Service: Clip to Day One",
"url": "/2012/01/19/system-service-clip-to-day-one/",
"tags": ["dayone","productivity","service"],
"date": "Jan 19th, 2012",
"ts": "1327013580",
"summary": "I m enjoying logging with Day One right now, and getting geeky with it . To that end, I put this project together during the few breaks I ve had over the last couple of days leading up to the new Engadget live blog launch today 1 . The result is a practical proof of concept in the form of a System Service for clipping any text to Day One. I figured that this could actually be really handy for more people than just me, so here it is. Dayone uses a very simple XML format in separate files to store your entries. It s easy to replicate the structure using a script, allowing you to directly generating your own Day One entries from any part of your workflow. I m bypassing the CLI and dropping the updates in directly for added flexibility. Don t get me wrong, I absolutely love that Day One comes with a CLI, I just wanted to experiment around it. I m using the new iCloud support for sync, and this Service is built to work with that folder structure by default. The version below (and in the download) looks in ~/Library/Mobile Documents/ (where iCloud stores documents) for a folder containing the word dayoneapp. I don t know offhand what the bizarre names of the folders indicate, but they differ between accounts, so we have to grep out the matching folder. Assuming your Journal is called Journal_dayone (default) and you re using iCloud, you shouldn t have to edit anything. If it doesn t work, run this in Terminal and copy the resulting path into the dayonepath variable: If you re using Dropbox, you ll just need to make a minor alteration to the dayonepath variable. Delete the line starting with dayonedir and hardcode the Unix (POSIX) path to the entries folder, located directly inside of the Journal.dayone bundle in your Dropbox root folder. It will most likely be if you haven t changed any defaults in Dropbox or Day One. The service itself is available for download at the end of the post, or you can take the script below and home-roll your own in Automator. It should work out of the box, no need for ruby gems or symlinked CLIs. The only configuration you may want to edit is the starred variable. This defaults to off because Services aren t interactive and you probably don t want to star every entry you clip. If you do, though, just change starred = false to starred = true and it will make your calendar look like a planetarium. The Service will use to strip out any rich text artifacts. I m not certain this is necessary, but I found that when clipping",
"keywords": ["documents","dropbox","evernote","growl","icloud","posix","assuming","automator","changelog","dayone","documents","donate","download","dropbox","engadget","evernote","github","growl","journal","library","markdown","mobile","posix","published","service","services","system","terminal","updated","accounts","added","adding","allowing","almost","alteration","artifacts","attempting","available","because","before","below","between","bizarre","blogging","break","breaks","brianstucki","built","bundle","bypassing","calendar","called","certain","certainly","change","changed","check","checks","clipping","comes","concept","configuration","contain","containing","contents","couple","created","customize","dayone","dayoneapp","dayonedir","dayonepath","default","defaults","differ","directly","documents","doesn","download","dropping","easily","either","enjoying","entries","entry","equation","events","excited","experiment","export","extract","false","figured","files","flawlessly","flexibility","folder","folders","format","formatting","found","geeky","generating","getting","going","handles","handy","hardcode","haven","icloud","indents","ingredients","inside","installing","instructions","interactive","itself","journal","keyboard","launch","leading","likely","located","logging","looks","markdownify","matching","mentioned","minor","missed","names","necessary","notes","notification","notifications","offhand","opening","opportunities","parse","passing","people","planetarium","polite","posted","practical","preserving","project","proof","realized","remove","replicate","resulting","right","running","saying","script","section","seems","separate","service","shortcut","shouldn","simple","solution","solve","sometimes","starred","starting","store","stores","strip","structure","style","support","symlinked","syntax","tested","through","today","together","updates","using","variable","version","versions","wanted","where","whole","workflow","works","wrong"]
},{
"title": "Logging with Day One, geek style",
"url": "/2012/01/16/logging-with-day-one-geek-style/",
"tags": ["dayone","logging","productivity"],
"date": "Jan 16th, 2012",
"ts": "1326763020",
"summary": "I have long kept a journal more precisely, a log using VoodooPad with the Scratchpad scripts by Ian Beck. It s been a great system, but after years of usage it s started to become a bit cumbersome. VoodooPad can handle the load, but running the custom scripts is inconvenient on a document with thousands of pages. In the interest of trying new things (and fiddling away some time this evening), I decided to try switching the system over to Day One. Day One is a gorgeous app for keeping a personal journal. I discovered it, if I recall correctly, via David Sparks . It has iOS companion apps and iCloud syncing. It also has excellent search capabilities, likes MultiMarkdown and can export my entries to plain text at any time. I like it because it s good-looking and concise just what I need, with no feature bloat. Plus, it s specifically designed to do exactly what I want: keep a timestamped journal of what I m working on, have accomplished or have just discovered in my digital travels. Day One already has a quick entry palette in the menubar. It also has a command line interface () 1 which provides some geeky options (try in Terminal) and the flexibility needed to replace my current logging system. You can create entries quickly with either method, but I wanted just a little bit more out of it. I built a quick script which allows a basic syntax for starring entries and defining dates (using natural language) inline in the entry itself. It can be used from the command line, from LaunchBar (or similar) and can be incorporated into just about any scriptable workflow. The natural language portion of the script is built on the Chronic Ruby gem, so running this script as is requires that you have that installed. If you don t have it available, just run to add the gem. If you run into errors doing that, try and provide your system password. Here s the script, complete with some explanation in the comments. You can star an entry by beginning it with an exclamation point. I m not sure how I ll use stars yet, but I figured the option was there, so I d add a syntax for it. I often end up logging things after the fact but before I forget what I was doing , so it s important for me to be able to enter an approximate date and time for the sake of organization. Date strings are entered in square brackets at the beginning (or after an exclamation point) of the entry. The natural language accepts basic strings such as yesterday 3pm or noon and converts them to Day One",
"keywords": ["command","icloud","interface","launchbar","multimarkdown","voodoopad","action","alfred","beyond","chronic","david","first","launchbar","macworld","merlin","multimarkdown","quicksilver","scratchpad","sparks","terminal","voodoopad","accepts","access","accessible","accomplished","action","alias","allows","applies","approximate","assist","assuming","available","basic","because","before","beginning","below","between","bloat","brackets","built","bundle","capabilities","carried","chronological","command","commands","comments","commit","commits","companion","compatible","complex","concise","convenient","converted","converts","correctly","covers","create","cumbersome","custom","daily","dates","dayone","decided","defining","designed","digital","directory","discovered","document","doing","downloaded","easily","either","enter","entered","entries","entry","errors","evening","excellent","exclamation","explanation","export","feature","fiddling","field","figured","first","flexibility","forget","forgot","found","function","geeky","generic","gorgeous","great","habit","handle","icloud","iworld","important","inconvenient","incorporated","information","inline","installed","interest","interface","itself","journal","keeping","language","likes","little","local","logging","looking","making","mentioned","menubar","message","method","natural","needed","nnutter","normal","nvalt","often","operators","options","organization","originally","pages","palette","parses","password","personal","personally","point","portion","precisely","preparing","project","provides","quick","quickly","recall","relying","replace","requires","running","scratchpad","script","scriptable","scripts","search","searchable","shortens","significantly","silly","similar","simple","smarter","space","specifically","specify","square","starring","stars","started","strings","switching","symlink","syncing","syntax","system","thanks","thought","thousands","timestamped","topic","travels","trying","typical","universally","usage","useful","using","utility","wanted","where","while","workflow","working","wrapper","wraps","years","yesterday"]
},{
"title": "Web excursions: January 4, 2012 - January 15, 2012",
"url": "/2012/01/15/web-excursions-january-4-2012-january-15-2012/",
"tags": ["bookmarks"],
"date": "Jan 15th, 2012",
"ts": "1326645780",
"summary": "Links of interest from January 4, 2012 through January 15, 2012: Profiling CSS for fun and profit. Optimization notes. Some interesting results from testing and profiling browser performance with CSS3 properties and transforms. Getting away from CES 2012 A few of my favorite moments not on the CES show floor in Vegas. Twitter Bootstrap Generator Kick-start your Twitter Bootstrap project the way you want. Interesting -webkit CSS Properties Wow, I knew there were some great properties in webkit, but these could prove to be spectacularly useful, especially in mobile applications MASHA A rather nifty script you can run on your site which lets you mark points of interest on a page and receive a link you can send. When someone follows that link, your selected text is highlighted and scrolled to.",
"keywords": ["bootstrap","cascading","formats","javascript","sheets","style","twitter","bootstrap","generator","getting","interesting","links","masha","optimization","profiling","properties","twitter","vegas","applications","browser","especially","favorite","floor","follows","great","highlighted","interest","interesting","mobile","moments","nifty","notes","performance","points","profiling","profit","project","properties","prove","rather","receive","results","script","scrolled","selected","spectacularly","testing","through","transforms","useful","webkit"]
},{
"title": "Scripting Readability and Markdownify for clipping web pages",
"url": "/2012/01/04/scripting-readability-markdownify-for-clipping-web-pages/",
"tags": ["markdown","productivity"],
"date": "Jan 4th, 2012",
"ts": "1325689620",
"summary": "I wanted to share a handy tool that I realized I use daily but rarely talk about. I call it Read2Text, but it s really just a Frankenstein script which combines Python Readability ( license ) with html2text ( license ). The combination allows you to grab web pages, process them with a port of Arc90 s Readability and convert the HTML to Markdown, ready for pasting or piping to a text file. nvALT has this built in, but it s been a little crashy lately. I find it more reliable to just do this from the command line. If you install it in your path (both the script and the readability folder), you can run . You ll get a Markdown-ified version of the page, with links, image links, headers, code blocks and text intact, but no comments, sidebars, ads, etc. It s not perfect, but it does a solid job and cleanup only takes me a minute, even on huge sites. I use this most of the time instead of clipping to Evernote these days. I alias it in my .bash_profile to , and often redirect the output straight to a text file in my nvALT folder: Now I have a new note that automatically shows up in nvALT with the text of the zsh-lovers page (yeah, I tried switching to zsh this morning. I ll have to come back to that). Anyway, I thought others might find this hack of use, so I m making the download available below. Gather CLI v2.1.6 Download Gather CLI v2.1.6 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 09/18/23. Changelog Donate More info By the way, I also have a web service for this. You can get raw markdown or a nice interface for previewing and copying. There s also an API and bookmarklets for integration into your favorite browser. Have fun! Your support is greatly appreciated! Or me on GitHub!",
"keywords": ["evernote","interface","markdown","programming","python","shell","anyway","changelog","donate","download","evernote","frankenstein","frankenstinian","gather","github","markdown","published","python","readability","updated","alias","allows","appreciated","automatically","available","below","blocks","bookmarklets","browser","built","cleanup","clipping","combination","combines","command","comments","convert","copying","crashy","daily","download","favorite","folder","greatly","handy","headers","ified","image","install","intact","integration","interface","license","links","little","lovers","makes","making","markdown","minute","morning","nvalt","often","others","output","pages","pasting","piping","previewing","process","profile","rarely","readability","ready","realized","redirect","reliable","script","service","share","shows","sidebars","simple","sites","solid","straight","support","switching","takes","thought","tried","version","wanted"]
},{
"title": "Web excursions: December 27, 2011 - January 3, 2012",
"url": "/2012/01/04/web-excursions-december-27-2011-january-3-2012/",
"tags": ["bookmarks"],
"date": "Jan 4th, 2012",
"ts": "1325657100",
"summary": "Links of interest from December 27, 2011 through January 3, 2012: skratchdot/github-code-search.user.js A very handy userscript that adds a per-repo search box to GitHub pages. Also led me to discover NinjaKit . Fullscreen Background Image Slideshow with CSS3 Pretty sweet. Code Highlighting and Marked Preview Styles in nvALT This works really, really well. Thanks Chris! impress.js presentation tool based on the power of CSS3 transforms and transitions in modern browsers Via Mr. jxpx777 , the coolest CSS3/JavaScript presentation I ve ever seen. robbyrussell/oh-my-zsh Via @ryur , an intriguing framework for zsh configuration management. Now I just have to make the switch to zsh. themeleon :: Twitter Profile Designer This is among the most dangerous tools on the Internet.",
"keywords": ["cascading","configuration","github","management","sheets","shell","style","twitter","background","chris","designer","fullscreen","github","highlighting","image","internet","javascript","links","marked","ninjakit","preview","profile","slideshow","styles","thanks","twitter","among","based","browsers","configuration","coolest","dangerous","discover","framework","github","handy","impress","interest","intriguing","management","modern","nvalt","pages","presentation","robbyrussell","search","skratchdot","switch","themeleon","through","tools","transforms","transitions","userscript","works"]
},{
"title": "Some of my favorite Mac apps in 2011",
"url": "/2011/12/31/some-of-my-favorite-mac-apps-in-2011/",
"tags": ["roundup"],
"date": "Dec 31st, 2011",
"ts": "1325368020",
"summary": "I ve compiled a list of some of my favorite apps from 2011. I wrote a TextMate command to link all of these 1 (60+ links in four minutes!), so if you spot any misfire links that I missed, let me know in the comments. This isn t an all-inclusive list (despite its length), but it s a good chance to highlight some gems that may have passed under the radar of the big sites. No fancy awards here, just a grateful mention of apps that make my life better. Glaring ommisions (like the unbeatable 1Password ) are only because I assume you ve already heard of them. Absolutely no slight intended to anyone not on this list. Well, except for a few. You know who you are. Skitch - My favorite way to quickly communicate screen-based information with annotations. flickery - The best Flickr experience I ve found. Acorn - I rarely open Photoshop these days. Acorn suits my needs beautifully and is super-fast. AppControls - Great little GUI for creating CSS3 buttons. Carousel - Instagram when you re not on your phone. ColorSchemer Studio 2 - I love this app . Gradient - This new app is awesome , and is only going to get better. Icon Slate - The best way I ve found to quickly create ICNS files for Mac apps. Pochade - A great toolbar color picker for when you need a color fast. HSB, RGB(A), NSColor, UIColor and more at the click of a button. AppStar - Selling anything on the App Store? This is an amazing tool for tracking sales, rankings, ratings and more. TextMate - With v2 running now, I can safely say it s doubtful I m switching away any time soon. Espresso - Espresso fulfills a different need than TextMate for me: HTML editing with a more robust live preview, CSS X-Ray and prettier remote project handling. CodeRunner - Great app for developers in almost any language. HTTP Client - Todd Ditchendorf s tool for working with REST APIs. Simple, effective and very handy. Kaleidoscope - One of the prettiest diff tools I ve ever seen. Missing built-in merge, but it does do image diffs. iTerm - Makes me love my terminal even more. Split screens, tabs, awesome keyboard-based text selection and tons more. RegExRX - I love Patterns , but when I need submatches and more extensive highlighting, I go here. Hopefully Patterns will catch up on that front soon. MailTags - Yes, I still use Mail.app. This and Mail Act-on are why. MailPluginFix - When Apple updates Mail, everything goes to hell. Easily fixed from the Terminal, but even easier with",
"keywords": ["apple","appstore","iterm","itunes","macintosh","software","store","textmate","acorn","alfred","appcontrols","appstar","apple","apptivate","bettertouchtool","blogsmith","bluemango","boinx","browsers","byword","carousel","clarify","client","cocktail","coderunner","colorschemer","composer","definitely","delibar","design","desktop","developer","ditchendorf","droplr","dropzone","easily","espresso","fantastical","finder","flash","fletcher","flickr","fluid","fotomagico","glaring","google","gradient","graphics","great","grooveshark","growl","growlvoice","handles","happy","highly","honorable","hopefully","infinite","instagram","kaleidoscope","keyboard","lasthistory","launchbar","mailpluginfix","mailtags","makes","markdown","mentions","mindmanager","mindmeister","mindnode","mindjet","missing","multimarkdown","music","musicality","nscolor","pandora","password","patterns","penney","permute","photoshop","pinboard","pochade","productivity","quickcal","quicksilver","raven","reeder","regexrx","screenflow","screensteps","scrivener","scrobble","selling","separate","seriously","serving","simple","simplify","single","skitch","slate","solid","sounds","split","spotify","spout","store","studio","syntax","taskpaper","terminal","textexpander","textmate","totalfinder","tunesque","twitter","uicolor","unbelievably","userscripts","userstyles","utilities","video","voice","wrapper","writing","yoink","accurate","addon","adjusts","admit","affordable","almost","amazing","annotations","another","anyone","approach","arena","artwork","assume","audience","awaited","awards","awesome","backup","based","beautifully","because","before","between","bloat","brilliant","bring","building","built","bundle","button","buttons","calendar","capabilities","catch","chance","check","choice","choose","click","client","cloud","coding","color","combinations","comes","command","comments","community","compiled","completely","computer","concerted","conflicts","control","conversion","cookies","couple","create","creating","cross","daily","deadly","dearly","default","depth","developers","development","devices","different","diffs","distracting","doesn","doubtful","easier","editing","effective","effort","elegant"]
},{
"title": "Desktop Quotes Geeklet",
"url": "/2011/12/31/desktop-quotes-geeklet/",
"tags": ["geeklet","geektool","nerdtool"],
"date": "Dec 31st, 2011",
"ts": "1325341800",
"summary": "Well, here it is: my last Geeklet post of 2011. I think it s the simplest Geeklet I have, but it s kind of fun. It uses the I Quotes API to put a random quote on your desktop. There s a variety of quote categories to choose from, ranging from geeky to humorous, religious to sci-fi. See the API page for a list and replace literature in the url with whatever you like. You can pull from multiple categories by separating them with a + in the url. There s even a category to play with. The first part (before the first pipe) just uses to grab a random quote from the literature section of the Quotes site (the makes it operate silently with no additional feedback). The url query parameters limit the quotes to a maximum of two five 1 lines, just to maintain a somewhat consistent length and make it easier to set up fonts and styles. The result of the API call is sent to to remove the credit line at the end of the response, and then on to for a little typographic cleanup (replace quote entities and convert double hyphens to an em dash). The two statements at the end will first remove any line breaks, and then, if there s a double-hyphen (which almost always means an attribution line in these API responses), it adds a double newline and converts that to an em dash 2 . Have fun with it, and have a Happy New Year! I upped this from two to five because, with the new rewrapping I m doing, I could fit a lot more text into a wider geeklet. The only time this causes problems is when there s a double-hyphen actually used as an em dash in the quote, which I ve only had happen once so far.",
"keywords": ["languages","newline","programming","python","author","geeklet","happy","nerdlet","quotes","updated","added","almost","attribution","because","before","break","breaks","categories","category","causes","choose","cleanup","command","consistent","convert","converts","credit","desktop","doing","double","easier","entities","feedback","first","fonts","geeklet","geeky","happen","humorous","hyphen","hyphens","length","limit","literature","little","maintain","makes","maximum","multiple","newline","output","parameters","preserving","problems","putting","query","quote","quotes","random","ranging","religious","remove","replace","response","responses","rewrap","rewrapping","right","script","section","separating","shell","silently","simplest","single","somewhat","statements","stick","styles","think","typographic","upped","variety","whatever","while","wider","worrying"]
},{
"title": "A simple but handy Bash function: console",
"url": "/2011/12/28/a-simple-but-handy-bash-function-console/",
"tags": ["scripting","terminal"],
"date": "Dec 28th, 2011",
"ts": "1325064600",
"summary": "I ve long had an alias in my called . It simply tailed the system log with alias console=`tail -f /var/log/system.log . I decided to amp it up a little for added convenience. The function below allows me to add additional arguments which are translated into a regular expression for filtering the log output. Arguments, separated by spaces on the command line, are joined into a regular expression as OR matches. You can specify as many as you like to track each as a keyword. It s case insensitive and you can use basic regular expression syntax in each parameter. Examples: Just stick this in your file, run and try it out. If you want to track more than just the file, you can just add additional filenames, separated by a space, after system.log for each command in the function. There, that was handy.",
"keywords": ["command","expression","interface","javascript","languages","programming","regular","arguments","examples","terminal","added","alias","allow","allows","arguments","basic","below","called","command","console","convenience","decided","easily","expression","filenames","filter","filtering","function","handy","insensitive","joined","keyword","little","matches","messages","older","output","parameter","quick","regular","separated","simply","space","spaces","specify","stick","syntax","system","tailed","track","translated"]
},{
"title": "Web excursions: December 26, 2011 - December 27, 2011",
"url": "/2011/12/27/web-excursions-december-26-2011-december-27-2011/",
"tags": ["bookmarks"],
"date": "Dec 27th, 2011",
"ts": "1324998120",
"summary": "Links of interest from December 26, 2011 through December 27, 2011: Chris Grant is leaving Joystiq, and other crazy clarifications/confessions I work with Darren and Engadget, and I can confirm that everything in this piece is 100% true. I had never heard of the AOL Way before the Verge snafu. If you ve read what the outsiders have to say, do yourself a favor and read the inside story. It s sad to see Chris Grant go, but I m with Darrent in whishing him the best in his new endeavors. A good smartphone comes but once a year Chris Ziegler: [ ]Apple owns the entirety of the hype machine that surrounds the iPhone at almost all times a hype machine that s predictable and whole, never fragmented. All iPhone users know this, consciously or not, but it s one more thing I appreciate about Apple s business strategy. Get more out of meetings with TextExpander Via Eddie Smith , some TextExpander inspiration. Easier Plugin Development by Moving Plugin Directory - WP Engineer I can t believe I didn t think of this. I don t share a lot of plugins and certainly don t make any money on them, so anything that saves me time back-testing them is golden. scratch.tmbundle Just discovered this bundle in the TextMate 2 bundle manager. It s just a scratchpad you can easily save snippets to, kind of a multi-clipboard with a nifty manager built on the Safari RSS Reader markup. Great idea, nifty implementation. WP Engine I looked into WP Engine based on at tip from David Chartier. It s very, very tempting. When they add support for version control and deployment (which they state they are working on), I think I m in.",
"keywords": ["apple","chris","directory","eddie","engadget","iphone","plugin","smith","textmate","wordpress","ziegler","apple","chartier","chris","darren","darrent","david","development","directory","easier","eddie","engadget","engine","engineer","great","joystiq","links","moving","plugin","reader","safari","smith","textexpander","textmate","verge","ziegler","almost","appreciate","based","before","believe","built","bundle","business","certainly","clarifications","clipboard","comes","confessions","confirm","consciously","control","crazy","deployment","discovered","easily","endeavors","entirety","everything","favor","fragmented","golden","heard","iphone","implementation","inside","inspiration","interest","leaving","looked","machine","manager","markup","meetings","money","multi","nifty","outsiders","piece","plugins","predictable","saves","scratch","scratchpad","share","smartphone","snafu","snippets","story","strategy","support","surrounds","tempting","testing","think","through","times","tmbundle","users","version","whishing","whole","working"]
},{
"title": "Web excursions: December 20, 2011 - December 25, 2011",
"url": "/2011/12/25/web-excursions-december-20-2011-december-25-2011/",
"tags": ["bookmarks"],
"date": "Dec 25th, 2011",
"ts": "1324854000",
"summary": "Links of interest from December 20, 2011 through December 25, 2011: Ordered List Acquired by GitHub Nice. I d love to be assimilated by GitHub. Competing With an Archetype It s insane that so few competitors have been able to do what Apple does, yet: look beyond the market and see the problem. Then solve it. This is what I ve been thinking for a while, but much more eloquent. From Idea to Market: How We Built Gradient I ve mentioned Gradient before it s a great app and this is a good story. djungelvral/rpeg-multimarkdown Nice hack of rpeg-markdown to make a Ruby module wrapper for MultiMarkdown. Textmate 2 Tips Great tips for getting the most out of TextMate 2 and its new options and features.",
"keywords": ["apple","github","markdown","multimarkdown","programming","textmate","acquired","apple","archetype","built","competing","github","gradient","great","links","market","multimarkdown","ordered","textmate","textmate","assimilated","before","beyond","competitors","djungelvral","eloquent","features","getting","great","insane","interest","markdown","market","mentioned","module","multimarkdown","options","problem","solve","story","thinking","through","while","wrapper"]
},{
"title": "Markdown QuickTags 0.8 for Christmas",
"url": "/2011/12/25/markdown-quicktags-0-8-for-christmas/",
"tags": ["wordpress","markdown","plugin","quicktags"],
"date": "Dec 25th, 2011",
"ts": "1324849080",
"summary": "We re having a low-key holiday this year. I mean really low-key. Aditi s napping on the couch, the dogs are all sleeping, the cats and the bird are lazily preening themselves and I just fixed Markdown QuickTags. Markdown QuickTags , my WordPress plugin which adds a massive number of Markdown-editing features to the built-in post/page editor had broken with the release of WordPress 3.3. Basically, the file which generates the buttons in the HTML editor changed completely. For the better, of course, but that s what Markdown QuickTags (hackishly) overrides to work its magic, and the change pulled the rug out from under the plugin. I had to rewrite a good portion of the JavaScript, and it took me a while just to figure out what was going on, but it s back in action. I m writing this post with it right now. I added some new font options (served via Google Fonts), more size choices and a live editor preview from the settings page. I m working on adding a few themes to the editor and making it a little more customizable, but it s lower on my list than things like, um, working. Eventually I ll make a video of it in action, I think I ve probably snuck in a few features that I ve done a poor job of documenting, anyway. I revamped the look this time, too (much more Byword -esque) so a screenshot refresh is in order as well. But that s for after Christmas. Happy Holidays, hope you re all having great times. If you write in Markdown and use WordPress, you d be insane not to try this out. Version 0.8 just became available in the WordPress Plugin Repository .",
"keywords": ["aditi","google","javascript","markdown","publishers","tools","wordpress","aditi","byword","christmas","eventually","fonts","google","happy","holidays","javascript","markdown","plugin","quicktags","repository","version","wordpress","action","added","adding","anyway","available","became","broken","built","buttons","change","changed","choices","completely","couch","customizable","documenting","editing","editor","esque","features","figure","fixed","generates","going","great","hackishly","having","holiday","insane","lazily","little","lower","magic","making","massive","napping","options","overrides","plugin","portion","preening","preview","pulled","refresh","release","revamped","rewrite","right","screenshot","served","settings","sleeping","snuck","themes","themselves","think","times","under","video","while","working","write","writing"]
},{
"title": "Running a website with VoodooPad",
"url": "/2011/12/24/running-a-website-with-voodoopad-pro/",
"tags": ["voodoopad","webdesign"],
"date": "Dec 24th, 2011",
"ts": "1324751100",
"summary": "VoodooPad is a powerful note-collecting, wikifying, productivity machine. With the right scripts, you can make just about anything happen, at least within the realm of text, images and web pages. VoodooPad has a built in web server, and can export your notebook as a full website, with links intact. I like the web export the best, because it gives me a crazy amount of control over the output. To that end, I built a website using nothing but VoodooPad, hopped up on some custom scripts. I can update it just by editing in the awesome auto-linking editor, and click one button to update my live site. That s what this post is going to be about. It s showing its age (I ve come to loathe the design), but the site I m talking about is the Blogsmith Bundle Documentation site. Peek around, you ll see how easily everything gets cross-linked and how quickly you can navigate a fair amount of information. Keep in mind that you can make a VoodooPad site look any way you please, don t judge the possibilities based on my aging design. Why would you want to do this? Once you get the pieces in place (it s no more complicated than any other ground-up website build-out), it s a great way to statically generate up-to-date content. It s easy to make changes to existing content and update the live site with the click of a button, plus VoodooPad is flexible enough to allow for separate testing and production output. Page links are always current and automatically update as you change things around, and the Wiki-linking features of VoodooPad make it great for reference content. Which leads to the second question What kind of website is right for this? Well, if it makes a good VoodooPad document, and doesn t need to do anything terribly dynamic, it s probably a good candidate. Remember that the output from VoodooPad is going to be flat (all in one directory), so if for some reason your proposed website requires a directory structure, you d be better off building it another way. With that said, the flat structure has never been an issue for me I do all of my organizing and editing in VoodooPad for this site, visual modifications are made in the template, I have automated scripts for pushing content live I never actually touch the myriad files in that directory. First, I built the whole notebook in plain text, using Markdown. VoodooPad does a pretty decent job converting Rich Text to HTML, but if you re as picky about markup as I am, using Markdown on plain text is the way to",
"keywords": ["format","leopard","markdown","multimarkdown","python","voodoopad","adding","blogsmith","bundle","choose","closing","colorbox","contents","create","creating","docksend","document","editing","either","export","extra","files","first","getting","index","installing","javascript","leopard","markdown","media","multimarkdown","newpagetemplate","notebook","package","pages","palettes","plugins","point","python","quotes","remember","right","script","scriptsitemap","scriptwebexport","scripts","sitemap","smart","special","terminal","unfortunately","voodoopad","whenever","while","window","ability","access","added","adding","adventurous","aging","ahead","allow","amount","animation","another","anyone","audio","automated","automatic","automatically","available","avoid","awesome","backup","based","basics","because","before","begin","blank","blend","blocks","brave","browse","browser","bubbles","build","building","built","button","called","candidate","capabilities","change","changed","changes","choose","classes","click","clutter","collecting","command","commits","complicated","consistently","contains","content","control","converting","copied","copying","cover","crazy","create","creates","cross","curate","curated","curious","custom","decent","default","deleted","depending","deployment","design","designing","detail","development","different","directly","directory","display","document","documents","doesn","doing","duplicate","dynamic","dynamically","easier","easily","editing","editor","elegant","elements","embed","enabled","ended","enough","entire","entirely","entities","environment","erasing","everything","excluded","excludes","export","exported","exporting","exports","extension","extensions","extra","favorite","features","feels","fenced","figure","files","flexible","folder","footer","footnote","footnotes","formatting","friendly","generated","generators","gives","going","great","gritty","ground","handled","handling","handy","happen","having","header","headers","highlighting","homepage","hopped","hover","images","imagination","included","includes","index","information","informational","inside","install"]
},{
"title": "na: per-project todos in Terminal",
"url": "/2011/12/24/na-per-project-todos-in-terminal/",
"tags": ["productivity","scripting","taskpaper","terminal"],
"date": "Dec 24th, 2011",
"ts": "1324735200",
"summary": "As I ve mentioned before, I keep todo.taskpaper files in my web and code project folders. These allow me to keep track of bugs, ideas, notes, etc., and the archive it creates helps me remember what I did, when I did it and how it worked. I like having them separated per project it s the way my one-track mind works. I like the plain-text format because I can use any variety of methods (including TaskPaper itself) to manipulate and quickly update the files. This gave me the idea to have Terminal just notify me of current todos whenever I switched to a project. Thus, was born. Whether or not it s useful to anyone else remains to be seen, but I figured I d share it anyway. Yesterday at 5:30pm, this little project was working fine with about eight lines of code. Then I had an idea or two, and by morning it was 160 lines of code. It definitely got out of hand, but I rather like the final product. The bulk of the script is straight bash and UN*X commands, but I shelled a lot of the more complex string handling out to Ruby. I m too lazy to deal with and past a certain point. Feel free to skip to the GitHub repo , peek at the readme.md file and start playing. I welcome any revisions/iterations of this, so feel free to fork and let me know what you do with it! is a bash function designed to make it easy to see what your next actions are for any project, right from the command line. It works with TaskPaper-format files (but any plain text format will do), looking for @na tags (or whatever you specify) in todo files in your current folder. It can also auto-display next actions when you enter a project directory, automatically locating any todo files and listing their next actions when you to the project (optionally recursive). You can list next actions in files in the current directory by typing . By default, looks for .taskpaper files and extracts items tagged @na and not @done . All of these can be changed in the configuration. features intelligent project matching. Every time it locates a todo file, it adds the project to the database. Once a project is recorded, you can list its actions by using any portion of the parent directories names. If your project is in ~/Sites/dev/markedapp, you could quickly list its next actions by typing . It will always look for the shortest match. can also recurse subdirectories to find all todo files in child folders as well. Use the switch to do a recursive search on the current directory. with no arguments will",
"keywords": ["computer","directory","folder","github","management","recursion","source","taskpaper","working","adding","features","github","inbox","maximum","recursion","sites","taskpaper","terminal","yesterday","actions","allow","allows","anyone","anyway","archive","arguments","assigned","automatically","because","before","called","certain","changed","child","command","commands","complex","config","configuration","controlled","create","creates","database","default","definitely","depth","designed","details","directories","directory","display","doesn","download","eight","enter","examples","exist","extension","extracts","features","figured","files","folder","folders","format","found","fragments","function","handling","having","helps","ideas","including","intelligent","items","iterations","itself","listing","lists","little","locates","locating","location","looking","looks","manipulate","markedapp","match","matched","matching","mentioned","methods","morning","names","notes","optionally","parent","playing","point","portion","product","project","quickly","rather","readme","recorded","recurse","recursion","recursive","remains","remember","revisions","right","script","search","separated","share","shelled","shortest","specify","straight","string","subdirectories","switch","switched","tagged","taskpaper","tasks","title","todos","track","typing","usage","useful","using","variety","welcome","whatever","whenever","worked","working","works"]
},{
"title": "Marked 1.3.2 is live!",
"url": "/2011/12/22/marked-1-3-2-is-live/",
"tags": ["marked"],
"date": "Dec 22nd, 2011",
"ts": "1324558800",
"summary": "Marked 1.3.2 is up and includes all of the features I mentioned a couple of days ago . If you already have Marked, open up the App Store and check for updates. If you ve been waiting to pick up a copy, now s a good time! Also, watch Marked on Twitter for a few giveaway codes over the Christmas weekend!",
"keywords": ["apple","christmas","communities","facebook","networking","online","social","store","twitter","christmas","marked","store","twitter","check","codes","couple","features","giveaway","includes","mentioned","updates","waiting","watch","weekend"]
},{
"title": "A little KeyBinding sanity",
"url": "/2011/12/21/a-little-keybinding-sanity/",
"tags": ["keybindings","scripting"],
"date": "Dec 21st, 2011",
"ts": "1324519380",
"summary": "I finally got around to writing a script to auto-generate the documentation for my DefaultKeyBinding.dict file. The script now reads my comments in the file and creates tables of keystrokes and descriptions ready for GitHub. From now on, my fickle changes will be reflected in the readme.md file in the repo and the keystrokes will stay current. You can see the current output here . If you ve taken off with KeyBindings already and your file wildly diverges from mine, the script is available for use by anyone. It requires a certain format in the file (I built it specifically for my own needs), but a little modification and you should be able to generate quick cheat-sheets for your own bindings. You can find the script in the KeyBindings repo (it s called ). You ll want to modify the various sections of the output, so you ll need to know a little Ruby to dink around with it. It s not a bulletproof script by any means, but if you know a few regular expressions and some basic logic you ll be able to make it do what you want. Note that by default it reads from DefaultKeyBinding.dict in the same directory as the script, and writes out to readme.md (in the same directory). Any top-level commands (not in a group) will be gathered and output at the top of the output. You can modify the script to title that table any way you like. The output table is currently in MultiMarkdown format but converted to HTML (using , so you ll need that installed) before writing to the readme.md file. You can change or remove all of the prefixed verbage just by editing the INTRO variable. Hopefully this will help keep things cleaner and minimize the number of explanations I have to send out in emails. Something about sharing a complicated trick and then modifying the steps without updating the documentation seems to throw people off. Fancy that.",
"keywords": ["format","github","keybindings","keyboard","multimarkdown","shortcut","commands","defaultkeybinding","fancy","github","groups","hopefully","intro","keybindings","multimarkdown","added","anyone","available","basic","before","beginning","bindings","bracket","built","bulletproof","called","certain","change","changes","cheat","cleaner","combination","comes","command","commands","comment","comments","complicated","converted","creates","default","defined","definitions","description","descriptions","directory","diverges","doesn","editing","emails","explanations","expressions","fickle","finally","format","gathered","group","handle","ignored","installed","keystrokes","level","little","logic","minimize","modify","modifying","needs","notes","output","parenthetical","people","prefixed","quick","readme","reads","ready","reflected","regular","remove","requires","script","sections","seems","sharing","sheets","single","spaced","specifically","starting","steps","table","tables","taken","throw","title","trick","updating","using","variable","various","verbage","wildly","within","writes","writing"]
},{
"title": "Marked 1.3.2 in review",
"url": "/2011/12/19/marked-1-3-2-in-review/",
"tags": ["markdown","marked","multimarkdown"],
"date": "Dec 19th, 2011",
"ts": "1324309680",
"summary": "Marked v1.3.2 has been uploaded and is waiting for review. This release, despite being an incremental version number, has some exciting new features. Here s a preview of the changelog: The new location of the Table of Contents avoids a lot of overlap concerns. When there are headers (h2-h6) in the document, a button will appear next to the gear menu (to the left) and clicking it will slide up a list of those headers. Clicking a header in the list will navigate the document to that header and temporarily highlight it. The increased file size limit will allow massive text files to be loaded, presenting a warning about decreased performance one time. Save/Copy as RTF should be handy for people composing emails and other documents in Marked. It will maintain most aspects of the current custom style when creating the Rich Text version. The Copy as RTF has a little trouble with blockquotes right now, and I m not sure I can do much about it, but beyond that it s a quick way to get your preview into another document. Word count for selection is pretty darn nifty: when you make a selection with the mouse, a small popup at the mouse cursor location will tell you the word and character count for just the selected text. Word repetition visualization allows you to see words repeated by paragraph or across the entire document. You can click on a bolded (repeated) word and dim everything else so that it s easy to see where the repetitions are located. It uses a stemming algorithm so that various forms of the same word are dectected, including plurals and conjugations. The keyboard navigation is fairly extensive, with home-key controls for scrolling, the ability to use up to nine numeric bookmarks for rapid return, navigation by header and more. Pressing h in the preview will show all available shortcuts. Fletcher Penney has been really great about providing some updates to the MultiMarkdown processor to handle a few edge cases. People who ve experienced rendering anomolies should be quite satisfied! Readability statistics are experimental, but Marked attempts to provide a grade level and Fog Index for your document. There are a few new options in Preferences to cover some more requests for control over the preview and rendering. I ve also updated the help system and added a Markdown reference you can keep open while working. It s a big release with a little version number I ll update the Marked website and post here as soon as it s approved. Special",
"keywords": ["contents","count","format","keyboard","markdown","multimarkdown","shortcut","table","clicking","contents","fixed","fletcher","increased","index","keyboard","markdown","marked","moved","multimarkdown","penney","people","preferences","pressing","readability","smartypants","special","statistics","table","updated","ability","across","added","algorithm","allow","allows","anomolies","another","appear","approved","aspects","attempts","available","avoids","beyond","blockquotes","blocks","bolded","bookmarks","button","careful","changelog","character","click","clicking","comes","complex","composing","concerns","conjugations","control","controls","count","cover","creating","cursor","custom","decreased","dectected","development","disable","document","documents","elements","emails","emphasis","entire","everything","exciting","executable","experienced","experimental","extension","extensive","fairly","features","feedback","files","forms","grade","great","handle","handling","handy","header","headers","highlight","including","increased","incremental","javascript","keyboard","level","limit","little","loaded","located","location","locations","maintain","massive","mouse","multimarkdown","navigate","navigation","nifty","numeric","offers","options","overlap","paragraph","people","performance","plurals","popup","presenting","press","preview","processor","providing","quick","range","rapid","release","rendering","repeated","repetition","repetitions","requests","responsive","return","right","satisfied","scrolling","selected","selection","shortcuts","slide","small","statistics","stemming","stripping","style","system","temporarily","testers","thanks","toolbar","trouble","typography","updated","updates","uploaded","various","version","visualization","waiting","warning","website","where","while","wider","words","working"]
},{
"title": "Productive Macs Bundle",
"url": "/2011/12/17/productive-macs-bundle/",
"tags": ["deals"],
"date": "Dec 17th, 2011",
"ts": "1324141440",
"summary": "I mentioned it on Twitter a while ago, but an email from a reader just prompted me to mention it again. As a perfect follow-up to my tagging article yesterday, some of the best apps for OpenMeta tagging are on sale through the Productive Macs Bundle ! The bundle is eight amazing apps for US $39.99. I ve paid full price for every app in that bundle (totaling $246) over the years, and I don t regret any of them. I don t use Notebook much these days, but it s an excellent way to collect and organize (and link) notes. Fantastical (similar to QuickCal ) is gorgeous and highly functional (review coming soon), and Home Inventory and Cashculator both serve their intended purposes in top-notch fashion. I ve met the guys behind BusyCal and their dedication to making their software the easiest fully-syncing iCal replacement is outstanding. Most relevant, though, are the apps that make my tagging life easier. I use and love these apps every day: Tags : I mention this app frequently, and its original price is almost the full amount of the bundle. If you tag or want to tag, just get this. Default Folder X : Aside from providing myriad features to make save/open dialogs exponentially more useful, it also allows OpenMeta tagging at the time you save your file (as well as Finder comments), including autocompletion of existing tags. Launchbar : Not directly a tagging application (though it can do some great tricks with a little scripting), this is what replaced Quicksilver for me back in the day. A lot of people have come to love Alfred, and rightly so, but I ve tried both and Launchbar is still the way to go for me. The value of these three apps alone make this bundle worth picking up (assuming you don t already own them), and you will not be disappointed with the other apps included. It s definitely the best (nerd) bundle I ve seen in a long, long time. It s only available for two more days, so check it out soon!",
"keywords": ["finder","launchbar","quicksilver","twitter","alfred","aside","bundle","busycal","cashculator","default","fantastical","finder","folder","inventory","launchbar","notebook","openmeta","productive","quickcal","quicksilver","twitter","again","allows","almost","alone","amazing","amount","article","assuming","autocompletion","available","behind","bundle","check","collect","coming","comments","dedication","definitely","dialogs","directly","disappointed","easier","easiest","eight","email","excellent","exponentially","fashion","features","fully","functional","gorgeous","great","highly","included","including","intended","little","making","mention","mentioned","myriad","notch","notes","organize","original","people","picking","price","prompted","providing","reader","regret","relevant","replaced","replacement","rightly","scripting","serve","similar","software","syncing","tagging","through","totaling","tricks","tried","useful","value","while","worth","years","yesterday"]
},{
"title": "Web excursions: December 10, 2011 - December 17, 2011",
"url": "/2011/12/17/web-excursions-december-10-2011-december-17-2011/",
"tags": ["bookmarks"],
"date": "Dec 17th, 2011",
"ts": "1324139520",
"summary": "Links of interest from December 10, 2011 through December 17, 2011: Swipe JS - a lightweight mobile web slider A very cool library-agnostic javascript slider for touchscreen platforms. Features 1:1 touch movement, resistant bounds, and scroll prevention. nanoScroller.js An excellent jQuery plugin for replacing default scrollbars. Works with IE8+, Firefox, Chrome, Safari and iOS. HTML Elements and Attributes One of the best resources I ve found for fast reference of HTML5 elements and their uses. lpenz/atdtool - GitHub I found this while flirting with adding After the Deadline to Marked a command line tool with Vim QuickFix integration capabilities. Python Facts Did you know that? Learning Python? I am. Or trying. Here s a handy flashcard-style reference for getting started.",
"keywords": ["element","firefox","github","jquery","python","safari","slider","attributes","chrome","deadline","elements","facts","features","firefox","github","learning","links","marked","python","quickfix","safari","swipe","works","adding","agnostic","atdtool","bounds","capabilities","command","default","elements","excellent","flashcard","flirting","found","getting","handy","integration","interest","jquery","javascript","library","lightweight","lpenz","mobile","movement","nanoscroller","platforms","plugin","prevention","replacing","resistant","resources","scroll","scrollbars","slider","started","style","through","touch","touchscreen","trying","while"]
},{
"title": "Some suggestions for better tagging",
"url": "/2011/12/16/some-suggestions-for-better-tagging/",
"tags": ["openmeta","spotlight","tagging"],
"date": "Dec 16th, 2011",
"ts": "1324077840",
"summary": "Since publishing my first article on tagging and appearing on MacPowerUsers , I ve been asked many times for more specifics on my tagging system. I ll start by telling you that I don t have all of the answers what I m sharing here is what I ve learned after a few years of constant tagging. OpenMeta is the most useful tool in my tagging toolbox. It allows me to attach tags to anything with a filesystem representation: websites, documents, photos, source code, emails and more. Before OpenMeta we had to make do with whatever fields Spotlight would search, which was Finder comments on files, and really no options on emails and other items accessed outside of Finder. Now that we have OpenMeta 1 and a plethora of tools (I highly recommend Tags.app ) to work with, tagging is a real option. We just have to figure out the best way to make use of it. The goal of tagging is to associate files into groups that wouldn t be feasible using a folder hierarchy. As I ve mentioned before, I still use a shallow hierarchy, especially for grouping project files together. The idea of one big pile is as frightening to me as it is to most people. I use tags to create additional groups that might not otherwise be possible, bringing together files and other objects that might be related in ways that a folder reflects. The primary problem you run into is that tag collections get out of control, and navigating them isn t any faster than drilling through folders and mailboxes. This happens because multiple forms of a tag are used, or long after the object is tagged the original associations are forgotten. I ve learned this the hard way, and on multiple occasions. Tag with anything and everything you could possibly associate with the object (file, email, photo, etc.). It s a free-association tag-for-all that results in a huge collection of tags. This is navigable, but often results in messy tagging. Tag sparingly, only using tags that will be easy to associate other objects with. Anything that is searchable in text or other metadata is left out of the tags. This is the method I ve come to use. What I ve learned is to do follow three obvious-sounding rules: tag intuitively, intelligently, and consistently. I typically limit myself to three levels of tags. Top-level tags encompass an overall topic or broad scope that the object falls into. For example, if it s a website, I tag it with the primary keyword that led me to the page, or the subject I was interested in when",
"keywords": ["apple","cascading","finder","openmeta","sheets","spotlight","style","apple","autocomplete","before","choose","consistently","desktop","drill","exceptions","finder","folders","however","intelligently","intuitively","macpowerusers","openmeta","second","since","smart","spotlight","third","unlike","warning","ability","accessed","across","allows","almost","another","answer","answers","anymore","anyway","appearing","applications","approaches","approved","article","articles","asked","associate","association","associations","assuming","attach","attended","attributes","autocomplete","automatically","available","avoid","backup","based","basic","beauty","because","before","begin","benefit","bookmark","bookmarks","bother","bringing","broad","browse","browsing","bucket","build","calendar","capital","capitalized","casing","changes","check","choice","choices","circumstances","client","collection","collections","comes","comments","common","communication","completed","complex","consider","consistently","constant","content","control","counterparts","covers","create","cross","dates","dealt","decide","definitely","design","dialogs","different","divide","documents","doesn","double","drill","drilling","easily","element","elements","elsewhere","email","emails","encompass","enough","entry","especially","events","everything","example","exceptions","exists","experience","explanation","extended","falls","fashion","faster","feasible","fields","figure","figured","filed","files","filesystem","filetypes","filing","first","flagged","folder","folders","followed","forgotten","forms","found","frightening","front","general","generally","going","group","grouping","groups","guarantee","handled","happens","hierarchy","highly","hyphenation","identical","identifier","implementation","importance","important","imposed","impossible","inconsistent","increases","intelligently","intercaps","interested","intuitively","items","javascript","keeping","keeps","keyword","labels","later","learned","letter","letters","level","levels","limit","links","looking","lowercase","mailboxes","maintain","management","manager","manually","maybe","mentioned","messy","metadata","method","money","mostly"]
},{
"title": "Calling screenwriter nerds",
"url": "/2011/12/08/calling-screenwriter-nerds/",
"tags": ["marked"],
"date": "Dec 8th, 2011",
"ts": "1323378060",
"summary": "I ve been working with Jonathan Poritsky , Stu Maschwitz and Martin Vilcans on bringing Stu s Screenplay Markdown proposal to Marked . It may eventually be incorporated directly into Marked, but for now we have a working solution as a custom processor/custom CSS combination. Basically, Screenplay Markdown (SPMD) lets screenwriters use a Markdown-like syntax while working on their screenplay, and have it converted into standard screenplay formatting. Martin created Screenplain , and we ve been customizing it to work with Marked s specific needs. Jonathan worked hard on the CSS, and I just pulled it all together. I didn t know much about screenplay formatting going into this (and Martin and Jonathan handled most of the details), but I ve learned a lot about the somewhat archaic style rules involved. It was a fun process. Print output is very important in screenwriting and we ve done our best to work toward consistent output. Marked uses a webkit element to display output, though, and printing from a web page is always less than predictable. As I m able to improve print output and options in Marked, this will get better. The details are available on the Marked support site , where you can download the package and find complete installation instructions. You can also download it directly at this link and find instructions in the included README file. More information on Jonathan s site as well.",
"keywords": ["maschwitz","resources","screenplay","screenwriting","writers","jonathan","markdown","marked","martin","maschwitz","poritsky","print","readme","screenplain","screenplay","vilcans","archaic","available","bringing","combination","consistent","converted","created","custom","customizing","details","directly","display","download","element","eventually","formatting","going","handled","important","improve","included","incorporated","information","installation","instructions","involved","learned","needs","options","output","package","predictable","print","printing","process","processor","proposal","pulled","rules","screenplay","screenwriters","screenwriting","solution","somewhat","specific","standard","style","support","syntax","together","toward","webkit","where","while","worked","working"]
},{
"title": "Web excursions: December 1, 2011 - December 5, 2011",
"url": "/2011/12/05/web-excursions-december-1-2011-december-5-2011/",
"tags": ["bookmarks"],
"date": "Dec 5th, 2011",
"ts": "1323126000",
"summary": "Links of interest from December 1, 2011 through December 5, 2011: Metakine - Magic Launch It s not new, but I wanted to mention this utility as it s saved me a ton of grief. Control what apps files open when double-clicked with granular rulesets (including restored creator codes). You can even have a file run a shell script to open it in a command line editor! Exquisite Tweets This is really well-executed. View full Twitter conversations with each tweet with the tweeter s background. Just enter a single URL from the conversation via @onethingwell . sprint.ly - Make beautiful products. This project management solution looks pretty brilliant. Python and the Mac Clipboard Nice hack! bazaarlabs/gitdocs Very cool. I m having fun dissecting this for nefarious purposes. Via @onethingwell",
"keywords": ["click","communities","double","locator","networking","online","python","resource","script","shell","social","twitter","clipboard","control","exquisite","launch","links","magic","metakine","python","tweets","twitter","background","bazaarlabs","beautiful","brilliant","clicked","codes","command","conversation","conversations","creator","dissecting","double","editor","enter","executed","files","gitdocs","granular","grief","having","including","interest","looks","management","mention","nefarious","onethingwell","products","project","restored","rulesets","saved","script","shell","single","solution","sprint","through","tweeter","utility","wanted"]
},{
"title": "Quick Tip: repeat Cocoa text actions, Emacs/Vim style",
"url": "/2011/12/04/quick-tip-repeat-cocoa-text-actions-emacsvim-style/",
"tags": ["cocoa","keybindings","quicktip"],
"date": "Dec 4th, 2011",
"ts": "1323007200",
"summary": "I just stumbled upon another keybinding tip from Jacob Rus 1 . It allows you to enter a numeric string before running a text command and repeat the command the specified number of times 2 . Emacs and Vim do it turns out that any Cocoa text field can, too. The tip is from 2006, so this is old news, but still new to me. It uses the NSRepeatCountBinding default in the Text System, which is defined exactly for this reason. You just have to give it a binding so you can let the system know you re about to enter a number to apply to the command that comes after it. To enable this, you can use the command to affect the global defaults: In the example I m using C6;u (Control-U) as the binding 3 . This setting will conflict with any other defaults and custom settings you have, so be sure to pick a combination that s not already used on your system, or that you never do use 4 . What can you do with it? Say you want to move the cursor down exactly 20 times. You would just type (assuming my shortcut above) and hit the down arrow. It can apply to any of the usual text features type a letter to repeat that the specified number of times, or delete 5 words back with then opt-shift-delete (or C6;w). It also works with all of my custom keybindings , making them quite a bit more extensible. All of the cut, copy and motion keybindings work wonderfully, but my favorite is my list continuation keybinding. Now I can create an empty Markdown list of a specified length with any prefix using just a few keystrokes. My day has been made. Try it out! Remember, you can change your shortcut at any time just by repeating the command above with a different shortcut, or use a blank string to clear it out (). His old posts have been a guiding light for me in the dark world of KeyBindings. And Lri, of course. This is also a huge timesaver for people with OCD symptoms. Need to do everything exactly three times? This will make your life easier. Jacob s recommendation as well, and with Emacs heritage. Control-U is an Emacs keybinding that actually is used in the text system to kill to beginning of line. I only use this regularly on the command line, though, having become accustomed to more Mac-like commands in Cocoa text fields. These don t affect either Terminal or iTerm, so it works out for me. Choose wisely.",
"keywords": ["cocoa","command","emacs","interface","iterm","jacob","keyboard","shortcut","choose","cocoa","control","emacs","jacob","keybindings","markdown","nsrepeatcountbinding","remember","system","terminal","above","accustomed","allows","another","apply","arrow","assuming","before","beginning","binding","blank","change","clear","combination","comes","command","commands","conflict","continuation","create","cursor","custom","default","defaults","defined","different","easier","either","empty","enter","everything","example","extensible","favorite","features","field","fields","global","guiding","having","heritage","iterm","keybinding","keybindings","keystrokes","length","letter","light","making","motion","numeric","people","posts","prefix","recommendation","regularly","repeat","repeating","running","setting","settings","shift","shortcut","string","stumbled","symptoms","system","times","timesaver","turns","using","wisely","wonderfully","words","works","world"]
},{
"title": "LiveReload addendum",
"url": "/2011/12/03/livereload-addendum/",
"tags": ["appreview","webdesign"],
"date": "Dec 3rd, 2011",
"ts": "1322920800",
"summary": "I thought a couple of additional discoveries after my LiveReload review yesterday were worth mentioning in a second post. First, Andrey Tarantsov (the developer) stopped by the post and let me know that the planned price is US $9.99 when it gets to the App Store. He s charging almost exactly what I think will value his work but not freak out potentially valuable customers. I m excited to purchase the final release. He also mentioned that contrary to a statement in my post the JavaScript method of handling browser updates is quite useful and doesn t require any browser extensions . You just put a JavaScript snippet in your file and it works in all your browsers. I put it to the test last night and was floored. I had 5 browsers refreshing all at once, making live CSS modifications on the page and I had the iPhone Simulator up and running with my work getting the same treatment there as in all of the other browsers. That was cool. A little PHP (or JavaScript) can make the snippet only function in the development environment, so it s easy to stick in and forget. There s a lot more in the pipeline on this one, too. If you design for web and think you ll be able to muster up $10 when the time comes, by all means you should be trying this out !",
"keywords": ["browser","cascading","extension","javascript","livereload","sheets","store","style","andrey","first","javascript","livereload","simulator","store","tarantsov","almost","browser","browsers","charging","comes","couple","customers","design","developer","development","discoveries","doesn","environment","excited","extensions","floored","forget","freak","function","getting","handling","iphone","little","making","mentioned","mentioning","method","modifications","muster","night","pipeline","planned","potentially","price","refreshing","release","running","second","snippet","statement","stick","stopped","think","thought","treatment","trying","updates","useful","valuable","value","works","worth","yesterday"]
},{
"title": "App Review: LiveReload",
"url": "/2011/12/02/app-review-livereload/",
"tags": ["appreview","macos","webdesign"],
"date": "Dec 2nd, 2011",
"ts": "1322834400",
"summary": "I linked LiveReload on Twitter the day I discovered it, but I haven t given it a truly thorough test until tonight. Suffice to say I was impressed enough to take some time out to write it up. LiveReload is a tool for web designers. It watches for changes in a given folder and in a way similar to what Marked does for Markdown files it updates your web browser(s) whenever files with certain extensions change. Yes, you can ( and I have ) script your way to something similar, but LiveReload brings a few extra refinements to the job. You have the option of adding a JavaScript snippet to the head of your HTML files on your development server, or (far better) you can use browser extensions in Safari, Firefox and Chrome. With either of these options in place, the coolest part of LiveReload becomes available: any changes to images or CSS are reflected live and instantly on the page without a reload. It s not quite as live as Espresso , but it brings instant-preview editing to any of your favorite editors. Just add the watch folder, turn on the browser extensions and start saving. It also makes it possible to see previews in Gecko and Webkit browsers simultaneously without manually refreshing. LiveReload has some powerful customizable options. You start by telling it which folders to watch, but you can get specific about which filetypes to watch as well. You can have it automatically compile SASS, LESS, CoffeeScript and others and control the output location for every individual file (if you like). You can also specify any shell command to run after changes are processed but before the browser refreshes. There s really not much you can t do with a setup like this. LiveReload is in beta right now, but the development schedule appears to be on track. It s ultimately headed for the App Store, and I don t know what it will cost. If the price is reasonable for an app that I consider to be very useful but could live without I ll definitely be picking up a copy when the time comes. There s also a Windows version in the works, which might even help me solve some IE testing conundrums. We ll see. For now, check out the beta , grab the browser extensions and see what you think.",
"keywords": ["browser","cascading","coffeescript","extension","javascript","livereload","sheets","store","style","twitter","chrome","coffeescript","espresso","firefox","gecko","javascript","livereload","markdown","marked","safari","store","suffice","twitter","webkit","windows","adding","appears","automatically","available","becomes","before","brings","browser","browsers","certain","change","changes","check","comes","command","consider","control","conundrums","coolest","customizable","definitely","designers","development","discovered","editing","editors","either","enough","extensions","extra","favorite","files","filetypes","folder","folders","haven","headed","images","impressed","individual","instant","instantly","linked","location","makes","manually","options","others","output","picking","possible","powerful","preview","previews","price","processed","reasonable","refinements","reflected","refreshes","refreshing","reload","right","saving","schedule","script","server","setup","shell","similar","simultaneously","snippet","solve","specific","specify","telling","testing","think","thorough","tonight","track","truly","updates","useful","version","watch","watches","whenever","works","write"]
},{
"title": "Read & Trust",
"url": "/2011/12/01/read-trust/",
"tags": ["blogging","readandtrust","writing"],
"date": "Dec 1st, 2011",
"ts": "1322770380",
"summary": "I am proud (and humbled) to announce that I ve been included in the Read Trust network. Founded by Aaron Mahnke , Read Trust is a group of writers who have been carefully selected as trustworthy beacons of news and opinions. The ranks include my good friends Dave Caolo and David Chartier , along with many bloggers I admire, such as Patrick Rhone , Ben Brooks , Brett Kelly , Shawn Blanc , and Marco Arment . This is a great privilege! This also means I ll be writing in the Read Trust newsletter , a weekly circulation that includes a long-form article from one of the Read Trust writers. Subscriptions are $5/month, and you get exclusive content from some of the best writers in the blogosphere. Each month has a theme (e.g. Creativity, Quality vs. Quantity, Fear Loss ) and the authors rotate each week (I ll be up next week). Sign up and you won t miss any of the great contributions from the Read Trust writers!",
"keywords": ["aaron","arment","blanc","caolo","chartier","david","iphone","mahnke","marco","resources","shawn","writers","aaron","arment","blanc","brett","brooks","caolo","chartier","creativity","david","founded","kelly","mahnke","marco","patrick","quality","quantity","rhone","shawn","subscriptions","admire","announce","article","authors","beacons","bloggers","blogosphere","carefully","circulation","content","contributions","exclusive","friends","great","group","humbled","included","includes","network","newsletter","opinions","privilege","proud","ranks","rotate","selected","theme","trustworthy","weekly","writers","writing"]
},{
"title": "Mac App Giveaway: PDFpen",
"url": "/2011/12/01/mac-app-giveaway-pdfpen/",
"tags": ["appreview","giveaway","macappstore","macos","productivity"],
"date": "Dec 1st, 2011",
"ts": "1322762400",
"summary": "This is the last of this run of Thanksgiving giveaways. There will be more soon, I promise, but Smile was generous enough to donate in addition to the TextExpander licenses I gave away yesterday three codes for PDFpen as well. I don t usually run giveaways on apps I haven t specifically reviewed, so I ll try to roll both together here. PDFpen is an amazing tool for anyone who works with PDF files. It can do OCR (Optical Character Recognition) on scanned documents to turn them into editable text, and it provides tools for correcting, annotating and redacting that text. It can handle digital signatures, too, so you can sign and return a PDF contract or paperwork without ever having to print or scan. It can fill forms, compress files, merge documents it s a workhorse and on par with Adobe Acrobat Pro in just about every regard (except for the areas it s even better at). The standard license for PDFpen on the App Store is US $59.99, and there s a Pro version available for US $99.99 which adds form creation, website saving and table of contents generation. I have three App Store codes for the standard version to give away. As always, just leave a comment on this post and you ll be added to the list for the Giveaway Robot to randomly select from. One comment per person, please, and use a unique name to make announcing the winners easier. The drawing will take place at noon on Monday, December 5th. Drop a comment before then for a chance at a $60 app, free!",
"keywords": ["acrobat","adobe","character","digital","document","format","icloud","optical","pdfpen","portable","recognition","signature","store","acrobat","adobe","character","giveaway","monday","optical","pdfpen","recognition","robot","smile","store","textexpander","thanksgiving","added","amazing","annotating","announcing","anyone","areas","available","before","chance","codes","comment","compress","contents","contract","correcting","creation","digital","documents","donate","drawing","easier","editable","enough","except","files","forms","generation","generous","giveaways","handle","haven","having","leave","license","licenses","merge","paperwork","person","print","promise","provides","randomly","redacting","return","reviewed","saving","scanned","signatures","specifically","standard","table","together","tools","unique","usually","version","website","winners","workhorse","works","yesterday"]
},{
"title": "Quick Link: Bro Show #85",
"url": "/2011/11/30/quick-link-bro-show-85/",
"tags": ["interview","podcast","quicklink"],
"date": "Nov 30th, 2011",
"ts": "1322689020",
"summary": "I was invited to join Terry and Myke on the Bro Show this week . It was great to meet them (digitally) and we had a really fun chat. Be sure to check it out! I have one more awesome giveaway coming tomorrow, so watch for that (it s from Smile, and it s not TextExpander). In the meantime, there s still time to get in on the MultiMarkdown Composer , Byword and Marked giveaways, so leave a comment before it s too late!",
"keywords": ["apple","design","development","finder","hosting","howbert","markdown","textexpander","byword","composer","marked","multimarkdown","smile","terry","textexpander","awesome","before","check","coming","comment","digitally","giveaway","giveaways","great","invited","leave","meantime","tomorrow","watch"]
},{
"title": "Web excursions: November 17, 2011 - November 30, 2011",
"url": "/2011/11/30/web-excursions-november-17-2011-november-30-2011/",
"tags": ["bookmarks"],
"date": "Nov 30th, 2011",
"ts": "1322665560",
"summary": "Links of interest from November 17, 2011 through November 30, 2011: Gradient App for OS X Version 1.0 is in the App Store now, CSS coders will definitely want to pick this up. WorkFlowy - Organize your brain. Cool TaskPaper-esque outliner in web app form. It can export outlines to plain text, too. How To Set Up A Print Style Sheet - Smashing Coding Some good tips for handling print stylesheets. I m studying up as I improve Marked s print capabilities, so this was good timing. Calepin Want dead simple static blogging with Dropbox and Markdown, without the hassle of running Jekyll? Here s a hosted solution to do just that. Via @MikeTRose Asciiflow - ASCII Flow Diagram Tool Ok, so maybe there is a place for plain text in brainstorming after all.",
"keywords": ["dropbox","jekyll","markdown","sheets","store","style","taskpaper","ascii","asciiflow","calepin","coding","diagram","dropbox","gradient","jekyll","links","markdown","marked","miketrose","organize","print","sheet","smashing","store","style","taskpaper","version","workflowy","blogging","brain","brainstorming","capabilities","coders","definitely","esque","export","handling","hassle","hosted","improve","interest","maybe","outliner","outlines","print","running","simple","solution","static","studying","stylesheets","through","timing"]
},{
"title": "Quick Link: Macdrifter interview",
"url": "/2011/11/29/quick-link-macdrifter-interview/",
"tags": ["interview","quicklink"],
"date": "Nov 29th, 2011",
"ts": "1322575800",
"summary": "I completed an interview with MacDrifter recently which goes into specific details of my writing workflow. If you re interested in what apps and processes I m currently using, have a read ! I notified the Reading List winners yesterday, and I ll be drawing the WriteUp winners today at noon. If you entered, watch your email. Names of the winners will be posted as soon as I get a chance.",
"keywords": ["consulting","design","development","products","workflow","macdrifter","names","reading","writeup","chance","completed","details","drawing","email","entered","interested","interview","notified","posted","processes","recently","specific","today","using","watch","winners","workflow","writing","yesterday"]
},{
"title": "The second Marked giveaway!",
"url": "/2011/11/28/the-second-marked-giveaway/",
"tags": ["giveaway","macos","markdown","marked","multimarkdown"],
"date": "Nov 28th, 2011",
"ts": "1322488800",
"summary": "Following up on the 50% off Marked sale over the weekend, I m putting three more Marked promo codes up for grabs. Marked is my own MultiMarkdown preview app which works with any text editor to provide an updated preview every time you save your file. There s a new version of Marked on the horizon with a few new features, and one a little down the road with built-in support for more applications (that aren t necessarily straight text editors). Enter for a promo code (by leaving a comment on this post) and you ll have a chance at a free copy ($3.99). In addition to a fine app, winners will, of course, get free updates as they come out. Winners will be drawn at random from the comments on this post at noon on Saturday, December 3rd. Good luck!",
"keywords": ["editor","editors","markdown","microsoft","multimarkdown","shareware","windows","enter","marked","multimarkdown","saturday","winners","applications","built","chance","codes","comment","comments","editor","editors","features","grabs","horizon","leaving","little","necessarily","preview","promo","putting","random","straight","support","updated","updates","version","weekend","winners","works"]
},{
"title": "Mac App Giveaway: Byword",
"url": "/2011/11/27/mac-app-giveaway-byword/",
"tags": ["giveaway","macappstore","macos","markdown","writing"],
"date": "Nov 27th, 2011",
"ts": "1322402400",
"summary": "I m really excited to be putting this one up: Five promo codes for Byword for Mac. It s US $9.99 on the App Store , but leave a comment on this post and have a chance to pick up a copy for free! I ve mentioned Byword before , and it s one of my favorite writing tools on my Mac. It has great tools for Markdown writers, too, and some very handy keyboard shortcuts . Leave a comment below to be entered in the drawing. The robot will be randomly selecting winners from the list on Friday, December 2nd at noon. The lucky winners will be notified by email (so use a valid address on your comment). Good luck, and be sure to check out all of the other great giveaways running right now!",
"keywords": ["apple","friday","keyboard","markdown","shareware","shortcut","store","windows","byword","friday","leave","markdown","store","address","before","below","chance","check","codes","comment","drawing","email","entered","excited","favorite","giveaways","great","handy","keyboard","leave","lucky","mentioned","notified","promo","putting","randomly","right","robot","running","selecting","shortcuts","tools","valid","winners","writers","writing"]
},{
"title": "Speaking at Macworld",
"url": "/2011/11/26/speaking-at-macworld/",
"tags": ["macworld"],
"date": "Nov 26th, 2011",
"ts": "1322330400",
"summary": "I thought I d mention that I ll be joining David Sparks and Merlin Mann on stage at Macworld this year (well, next year, technically). We ll be presenting 40 tips in 40 minutes (it will be more than 40). Tickets to the conference track are only US $75 this year, so I highly recommend getting in on this! Prices go up a little after December 5th, so get your pass to all of the Tech Talks now! Rob Corddry is also going to be doing a workflow presentation with Merlin, David and Katie Floyd, which is another talk you won t want to miss. I recently learned that Rob is an nvALT user, which makes me want to meet him all the more. I m looking forward to the whole experience. For those who can t attend, there will be a website version of our presentation, too, and it will probably continue to grow afterward. Hope to see you there!",
"keywords": ["bodies","corddry","darren","macworld","merlin","corddry","david","floyd","katie","macworld","merlin","prices","sparks","talks","tickets","afterward","another","conference","continue","doing","experience","getting","going","highly","joining","learned","little","looking","makes","mention","minutes","nvalt","presentation","presenting","recently","recommend","stage","technically","thought","track","version","website","whole","workflow"]
},{
"title": "Mac App Giveaway: MultiMarkdown Composer",
"url": "/2011/11/26/mac-app-giveaway-multimarkdown-composer/",
"tags": ["giveaway","macappstore","macos","markdown","multimarkdown"],
"date": "Nov 26th, 2011",
"ts": "1322316000",
"summary": "Continuing the very exciting Thanksgiving giveaways today I have five promo codes for Fletcher Penney s MultiMarkdown Composer ( reviewed here ). It s a text editor packed with features for editing Markdown and MultiMarkdown, including syntax highlighting, document header navigation, shortcuts for adding MultiMarkdown syntax and much more. A HUD panel shows a list of labels that have been defined in your document that can be used when creating links, footnotes, citations, etc. This can be used to remind yourself of which label you used previously to define an element by reference. Another HUD panel shows word, paragraph, and character counts for your documents. A group of new key commands for selecting and moving parts of your document around without using the mouse, as well as for creating and cleaning up lists automatically. Composer now uses UTIs to define which documents it can open/save. This will have several behind-the-scenes benefits when it comes to saving, opening, previewing, and indexing documents for Spotlight searches. Significant improvements to responsiveness when working with long documents (e.g. using the ToC to scroll). Improved support for and in stylesheets. These will help my own themes work more smoothly. Plenty more! Picking up a license now gets you free access to all of the new features when they re released. Comment below for a chance at one of the five licenses ( App Store US $9.99). Winners will be drawn at random (by the Giveaway Robot) on Thursday, December 1st at noon. Notification is via email, so be sure to use a valid address. It s also helpful to use a unique name (first and last preferred, but anything to help avoid duplicates) so announcements of the winners don t get the other Rob or Jim all excited, only to be disappointed when they figure out it wasn t them. There are still a few more (very exciting) giveaways coming up over the next couple of days, so keep checking back. There s no rule against entering for all of them (once each, please, or the robot gets angry. You don t want to see him angry), so keep at it!",
"keywords": ["composer","document","editor","fletcher","markdown","multimarkdown","penney","store","another","comment","composer","continuing","fletcher","giveaway","improved","markdown","multimarkdown","notification","penney","picking","plenty","robot","significant","spotlight","store","thanksgiving","thursday","winners","access","adding","address","against","angry","announcements","automatically","avoid","behind","below","benefits","chance","character","checking","citations","cleaning","codes","comes","coming","commands","counts","couple","creating","define","defined","development","disappointed","document","documents","duplicates","editing","editor","element","email","entering","excited","exciting","features","figure","first","footnotes","giveaways","group","header","helpful","highlighting","improvements","includes","including","indexing","label","labels","latest","license","licenses","links","lists","mouse","moving","navigation","opening","packed","panel","paragraph","parts","preferred","previewing","previously","promo","random","released","remind","responsiveness","reviewed","robot","saving","scenes","scroll","searches","selecting","several","shortcuts","shows","smoothly","stylesheets","support","syntax","themes","today","unique","using","valid","version","winners","working"]
},{
"title": "Mac App Giveaway: TextExpander",
"url": "/2011/11/25/mac-app-giveaway-textexpander/",
"tags": ["giveaway","macappstore","macos","textexpander"],
"date": "Nov 25th, 2011",
"ts": "1322244000",
"summary": "Since it s Black Friday, I m going to run a second giveaway today: TextExpander . It s one of my all-time favorite Mac utilities, and I have quite a few free snippets available to demonstrate its usefulness. It s available in the Mac App Store for US $34.99, and it s worth every penny. Today, though, you can comment below and be entered for a chance at one of three free licenses. Winners will be drawn at noon on Wednesday, November 30th and notified by email. Please use a valid email address and a unique name (to make announcing the winners easier). One entry per person per giveaway, but feel free to enter for every giveaway I m running this week! I have a lot of amazing applications to share right now keep checking back, there are at least three more coming before this madness ends! Smile, the company behind TextExpander, is also running their own special for Black Friday. Today only, get PDFPen or PDFPenPro for 50% off . It s the perfect time to jump on one of the most powerful tools available for creating fillable forms and working with PDF files.",
"keywords": ["apple","document","format","howbert","pdfpen","portable","smile","store","textexpander","black","friday","pdfpen","pdfpenpro","since","smile","store","textexpander","today","wednesday","winners","address","amazing","announcing","applications","available","before","behind","below","chance","checking","coming","comment","company","creating","easier","email","enter","entered","entry","favorite","files","fillable","forms","giveaway","going","licenses","madness","notified","penny","person","powerful","right","running","second","share","snippets","special","today","tools","unique","usefulness","utilities","valid","winners","working","worth"]
},{
"title": "Mac App Giveaway: Dropzone",
"url": "/2011/11/25/app-giveaway-dropzone/",
"tags": ["giveaway","macos"],
"date": "Nov 25th, 2011",
"ts": "1322229600",
"summary": "Well, it s Black Friday. If you re not trampled outside of some big box store somewhere, I have a special surprise for you. Five App Store codes for Dropzone (US $13.99), to be precise. It s one of my favorite Mac utilities and if you don t already have it I recommend jumping on this chance for a free copy! Leave a comment on this post to enter. Five winners will be randomly selected from the comments on Thursday, December 1st at noon and notified by email.",
"keywords": ["apple","black","camerabag","dropzone","finder","friday","howbert","black","dropzone","friday","leave","store","thursday","chance","codes","comment","comments","email","enter","favorite","jumping","notified","outside","precise","randomly","recommend","selected","somewhere","special","store","surprise","trampled","utilities","winners"]
},{
"title": "Get Marked: 50% off for Black Friday",
"url": "/2011/11/25/get-marked-50-off-for-black-friday/",
"tags": ["markdown","marked"],
"date": "Nov 25th, 2011",
"ts": "1322200800",
"summary": "I caved and jumped on the Black Friday bandwagon. Marked is 50% off ($1.99, was $3.99) in the App Store from Friday through Sunday. The price will jump back up on Monday, so grab it while it s cheap! Erica Sadun asked, is that a markdown? Yes, it s a markdown. Ba-dum ching. In case you haven t seen it, Marked is my app for previewing Markdown and MultiMarkdown as rendered HTML. Marked watches the file you re editing in any text editor and updates the preview after every save. It can handle custom CSS (four built-in styles), custom processor (Textile, Wiki, GitHub flavored Markdown and more) and plenty of features especially for writers. More information on the Marked website .",
"keywords": ["editor","erica","github","markdown","multimarkdown","sadun","store","textile","black","erica","friday","github","markdown","marked","monday","multimarkdown","sadun","store","sunday","textile","asked","bandwagon","built","caved","cheap","ching","custom","editing","editor","especially","features","flavored","handle","haven","information","jumped","markdown","plenty","preview","previewing","price","processor","rendered","styles","through","updates","watches","website","while","writers"]
},{
"title": "iOS App Giveaway: WriteUp",
"url": "/2011/11/24/ios-giveaway-writeup/",
"tags": ["giveaway","iphone","markdown"],
"date": "Nov 24th, 2011",
"ts": "1322143200",
"summary": "As part of my Thanksgiving holiday giveaways, I have five promo codes for the iOS Markdown editor, WriteUp . It s a slick Dropbox-powered editor for both iPhone and iPad that I recently reviewed . It s definitely worth a look if you want to edit Markdown files on the go. Leave a comment for a chance to win one of five WriteUp promo codes ($3.99). Winners will be drawn on Tuesday, November 29th at noon!",
"keywords": ["apple","dropbox","iphone","markdown","store","thanksgiving","dropbox","leave","markdown","thanksgiving","tuesday","winners","writeup","chance","codes","comment","definitely","editor","files","giveaways","holiday","iphone","powered","promo","recently","reviewed","slick","worth"]
},{
"title": "iOS App Giveaway: Reading List",
"url": "/2011/11/23/ios-app-giveaway-reading-list/",
"tags": ["giveaway","iphone"],
"date": "Nov 23rd, 2011",
"ts": "1322074920",
"summary": "I hate Black Friday. I hate the whole idea, what with the crowds and the rushing and my internal instinct to avoid both. Instead of leaving my house, I ll be posting a series of app giveaways, starting today with Reading List (my review here ). Watch for a couple more over the Thanksgiving holiday. Leave a comment on this post for a chance to win a promo code for Reading List for iPhone ($2.99), a great app for tracking the books you re reading, have read, plan to read and are wishing for. Ten winners will be drawn at random on Monday, November 28th and notified by email!",
"keywords": ["apple","black","friday","google","iphone","store","thanksgiving","black","friday","leave","monday","reading","thanksgiving","watch","avoid","books","chance","comment","couple","crowds","email","giveaways","great","holiday","house","iphone","instinct","internal","leaving","notified","posting","promo","random","reading","rushing","series","starting","today","tracking","whole","winners","wishing"]
},{
"title": "\"Open URLs\" Dropzone Destination",
"url": "/2011/11/21/open-urls-dropzone-destination/",
"tags": ["dropzone","scripting"],
"date": "Nov 21st, 2011",
"ts": "1321893000",
"summary": "I just added a pull request for my latest Dropzone ( review ) Destination. It s called Open URLs, and with it you can open text urls from any number of text files, drag text straight from any application, or just click it to scan your clipboard. The files, text or clipboard contents are scanned for any http(s) links and they re sent to your default browser using the system command. Open URLs is ideal if you collect browsing sessions in text files or notes in any format (possibly using tools such as TabLinks or EverSave ). I often use TabLinks to save a collection of same-subject links to a note in nvALT and then drag and drop the text to re-open the whole session. It s also very handy when someone emails you a list of urls that you want to open all at once (e.g. a design project with multiple versions and they couldn t be bothered to make it a Dropbox gallery). If you re on a page with a list of links and you want to open them all in tabs quickly, just view source, select the section with the links and drag the selection to the Destination in Dropzone. It will ignore duplicates and open one tab per unique link. I expect this Destination will be available soon from the GitHub repo , but you can download it directly below if you re using Dropzone and it happens to sound useful. Update: before I even got this post out, John Winter of Aptonic got this Destination on the Extend page of the Dropzone website. You can grab it there, too! Open URLs Dropzone Destination v1 Download Open URLs Dropzone Destination v1 A Destination for Dropzone that allows you to drag files, text or click to scan your clipboard. All links found in the text are sent to your default browser to open in tabs. Published 11/20/11. Updated 11/20/11. Changelog Donate More info Your support is greatly appreciated! Or me on GitHub!",
"keywords": ["clients","dropbox","dropzone","github","locator","resource","aptonic","changelog","destination","donate","download","dropbox","dropzone","eversave","extend","github","published","tablinks","updated","winter","added","allows","appreciated","available","before","below","bothered","browser","browsing","called","click","clipboard","collect","collection","command","contents","couldn","default","design","directly","download","duplicates","emails","expect","files","format","found","gallery","greatly","handy","happens","ideal","ignore","latest","links","multiple","notes","nvalt","often","possibly","project","quickly","scanned","section","selection","session","sessions","sound","source","straight","support","system","tools","unique","useful","using","versions","website","whole"]
},{
"title": "App Review: Dropzone",
"url": "/2011/11/21/app-review-dropzone/",
"tags": ["appreview","dropzone"],
"date": "Nov 21st, 2011",
"ts": "1321882200",
"summary": "Dropzone recently showed up on the Mac App Store . I ve been using the previous incarnation daily for years now, and I was ecstatic to see it hit the App Store and still be under active development. As with any pre-App Store app that makes a 100% conversion to the App Store environment, plenty of users are bitching and moaning about having to pay again (as well as changes that were necessary to comply with Apple s guidelines), but I m not among them 1 . It s worth every penny and supporting continued development is something I m more than happy to do. Dropzone is an app with a simple concept: provide an easily-accessible palette for Destinations where you can drop text or files and have any number of operations performed on them. Zip them, install them, email them, add them to Dropbox, get a shortened link a wide variety of default Destinations is available, plus there s an easy Ruby API with which you can extend Dropzone to do anything you like. You can also include straight application destinations that will open the app when clicked, or open any files dragged to the icon with the target application. When you click the Dropzone icon in the menubar (it used to be in the Dock, but the implementation had to change for the Mac App Store version) or drag files or text over it, a palette pops up with large (size customizable) icons that you can drop on or click. Different Destinations have different responses when clicked or dropped on. A filer that works with my OpenMeta tagging system . Dropping tagged files on it sorts them into target folders based on their tags. A media filer that sorts pdf, audio and video files into a date-based filing system. An app installer that handles DMG, zip and app bundles, installing the application and updating older files. A Dropbox destination that will zip multiple files or copy single files into my public Dropbox folder and place a public link in my clipboard. A shortcut to create a GitHub gist from contents dropped on it. Diff shortcuts to open multiple files for comparison, one for Changes and one for Kaleidoscope . One drop point to zip multiple files and one to Zip and create an email with the archive attached. Shorten a url with bit.ly. One to upload pictures to Flickr. One to set my Desktop picture to a dropped image. One to mount/unmount all of my Firewire drives at once. One to find all the links on my clipboard and create a Markdown reference list with them. One that s just a link",
"keywords": ["apple","dropbox","dropzone","flickr","github","store","apple","changes","desktop","destination","destinations","different","dropbox","dropping","dropzone","firewire","flickr","github","imageoptim","kaleidoscope","markdown","openmeta","shorten","store","while","above","accepts","accessible","active","again","allows","among","anywhere","archive","attached","audio","available","based","because","bitching","bloggers","bothered","brought","browser","bundles","change","changes","click","clickable","clicked","clipboard","coming","comparison","compresses","concatenates","concept","contained","contents","continued","contributing","contribution","control","conversion","create","creates","creating","custom","customizable","daily","default","definitely","destination","destinations","development","different","dragged","drives","dropped","easily","ecstatic","email","environment","extend","filer","files","filing","folder","folders","forum","freely","friend","functions","grasp","guidelines","handles","happen","happens","happy","having","icons","image","implementation","incarnation","includes","including","indicator","input","install","installer","installing","invaluable","latest","links","listed","makes","media","menubar","moaning","mount","multiple","necessary","older","opening","opens","operations","optimizes","palette","penny","people","performed","picture","pictures","plenty","point","pointed","public","publicly","recently","responses","resulting","script","scripted","scripts","several","shock","short","shortcut","shortcuts","shortened","showed","simple","single","sorts","specifically","stated","straight","supporting","system","tagged","tagging","target","through","under","understanding","unmount","updating","upgrades","upload","users","using","variety","version","video","website","whatever","where","workflow","working","works","worth","years"]
},{
"title": "Nest: initial impressions",
"url": "/2011/11/20/nest-initial-impressions/",
"tags": ["hardware"],
"date": "Nov 20th, 2011",
"ts": "1321801800",
"summary": "I received my Nest (advanced learning thermostat) on Friday. I was on my way out the door to see WITS in St. Paul 1 , Minnesota. I opened the package and read the 8-page setup manual on the way. I got home late, so I tackled the installation the next day. First, let me say that it s as beautiful as the website presents it to be. I recently bought my first house and my wife had mentioned that she wanted a new thermostat. The next week the Nest was announced and I jumped on it I already had the excuse, it wouldn t be hard to justify later (it was harder than I thought, but I pulled it off). There s a compatibility check on the support website that you can (and should) use to make sure the $249 hardware will work with your system. It s really not picky, and would work with every system I ve ever seen (admittedly few). Installation took me about ten minutes, five of which were spent looking for a wire stripper that I ended up not needing. The Nest comes with wire labels to add to the wires in your existing thermostat before you pull it out, then you just match up the one or two letter codes with the Nest. It comes with optional mounting plates, but I attached mine directly to the wall (as suggested) and it looks amazing. The package also comes with drywall and wood screws, and a cute ergonomic screwdriver (the handle of which opens to reveal a set of bits covering every size you d need to remove your old thermostat and install the Nest). Once the Nest is wired up, you just tap it and setup begins. The longest part of the installation was entering my wifi password using the dial, and even that was under a minute. It asks you a few questions about your system (gas or electric, forced air or non, etc.) and boom, it s ready to go. It can turn on as you approach it using the built-in motion detector. The motion detector also keeps track of activity around it, learning when you get up, when you go to bed, etc. Once you ve told it your preferred temperatures, maximum and minimum ranges, it immediately starts taking things into its own hands. This is an intrinsic energy saver, as even if you usually remember to turn the thermostat down when you re leaving and program a sleep pattern, this offers more precise control and deals with times you may forget. Personally, I always forget. I don t like to think about the thermostat, so this works perfectly with my habits (or lack thereof). The motion detector also seems to automatically ignore my three cats, two dogs",
"keywords": ["goats","hodgman","iphone","mountain","munson","thermostat","addendum","cities","corbett","first","friday","gaiman","goats","hodgman","installation","kevin","macbook","minnesota","mountain","munson","murphy","personally","saturday","seriously","setting","statler","waldorf","account","accurate","activity","adjustments","admittedly","advanced","amazing","amazingly","announced","approach","aside","attached","automatically","automation","beautiful","before","begins","between","bought","breeze","built","change","check","classy","codes","comes","comforting","compatibility","contacted","control","controlled","covering","database","deals","detector","device","directly","driving","drywall","electric","electronics","enabled","ended","energy","entering","ergonomic","excuse","fairly","featuring","feelings","first","forced","forget","going","guest","habits","handle","hands","harder","hardware","homes","hosted","house","human","iphone","ignore","impressive","information","install","installation","installations","instant","interested","interface","intrinsic","itself","joints","jumped","justify","keeps","knowing","labels","landlord","later","learning","leaving","letter","lives","logged","longest","looking","looks","makes","manual","match","matched","maximum","mentioned","message","minute","minutes","missed","motion","mounting","multiple","music","needing","nerdfest","night","offers","opened","opens","optional","package","parrot","password","pattern","perfectly","personal","picky","piece","plates","played","precise","preferred","presents","program","promise","protected","pulled","purchased","questions","ranges","ready","received","recently","remember","remove","responded","reveal","right","saver","schedule","screwdriver","screws","seems","settings","setup","sharing","sleep","software","special","spent","starts","store","stripper","strong","suggested","sunrise","sunset","support","system","tackled","taking","temperature","temperatures","thermostat","think","thought","times","track","under","using","usually","wanted","watch","weather","website","weren"]
},{
"title": "iOS App Review: WriteUp",
"url": "/2011/11/18/ios-app-review-writeup/",
"tags": ["appreview","editor","iphone","markdown","writing"],
"date": "Nov 18th, 2011",
"ts": "1321641000",
"summary": "If you re still looking for a slick Markdown editor for iOS, there s a new candidate up for your vote. WriteUp is a polished editor that covers the basics well. With Dropbox support and available as a universal app for both iPad and iPhone, it makes a nice addition to your all-around writing workflow. WriteUp comes with a few color styles (including Solarized light and dark), which work well in its full-screen editing mode. Some of the colors clash a little with the default chrome of the app, so I do wish that the brown menubars and such changed with the editor style, but the options are great to have. You can control the font and font size as well. One very nice feature that just showed up in the latest release is versioning. You can time travel between revisions of your piece and restore a version from any point in its history. You get a full preview of the text of the document in the versions window (available from the box/arrow icon), and it s easy to traverse. Dropbox support is a must these days, and WriteUp supports subfolders for organization. You can show multi-line previews in the document list, and subfolders have indicators to show how many documents they contain. You can export or email both text and HTML versions just by swiping the document in the left-hand list. My workflow generally involves post-processing a document, so exporting text is ideal for me. Being able to email HTML, though, is also a requirement as it allows me to generate better-looking emails than the default email client can. The auxiliary keyboard above the normal keys offers hashmarks (for headlines), asterisk (for bullet lists), hyphens, underscores and square brackets. There s also a tab key for quick indentation. Notably, it s missing parentheses, which would be quite helpful, but the basic tools of Markdown writing are available without having to go to a nested keyboard layout. Overall, WriteUp is a great editor. It exists in a growing field with a lot of competition, so I m hoping that new features are consistently added to help differentiate it from the competition. WriteUp is $3.99 on the App Store .",
"keywords": ["document","dropbox","iphone","markdown","store","dropbox","markdown","notably","overall","solarized","store","writeup","above","added","allows","arrow","asterisk","auxiliary","available","basic","basics","between","brackets","brown","bullet","candidate","changed","chrome","clash","client","color","colors","comes","competition","consistently","contain","control","covers","default","differentiate","document","documents","editing","editor","email","emails","exists","export","exporting","feature","features","field","generally","great","growing","hashmarks","having","headlines","helpful","history","hoping","hyphens","iphone","ideal","including","indentation","indicators","involves","keyboard","latest","layout","light","lists","little","looking","makes","menubars","missing","multi","nested","normal","offers","options","organization","parentheses","piece","point","polished","preview","previews","processing","quick","release","requirement","restore","revisions","screen","showed","slick","square","style","styles","subfolders","support","supports","swiping","tools","travel","traverse","underscores","universal","version","versioning","versions","window","workflow","writing"]
},{
"title": "Web excursions: November 4, 2011 - November 16, 2011",
"url": "/2011/11/17/web-excursions-november-4-2011-november-16-2011/",
"tags": ["bookmarks"],
"date": "Nov 17th, 2011",
"ts": "1321560840",
"summary": "Links of interest from November 4, 2011 through November 16, 2011: MindMeister for iPad 4.1 arrives! This is now my favorite iPad mind mapping tool. Sync with the MindMeister web app is awesome. Just need OPML support and I m 100% in. Introducing Evernote Clearly: One Click for Distraction-Free Online Reading Nice, and a perfect complement to the way I use Evernote these days. Responsive Web Design Templates and Frameworks A collection of great templates and frameworks for responsive web design. Redesigning the Country Selector I ve never met a country selector in a form that I liked. This is brilliant, in my estimation. Shapecatcher Draw your best representation of a unicode character and Shapecatcher gives you hex codes for the closest matches it can find. Nifty. feedstail for RSS feeds. Original Hover Effects with CSS3 Some really nice effects that work in Firefox, Chrome and Safari quite well. Demystifing Nth-Child in CSS It makes so much more sense when you see it like this. Check out the Visual Calculator.",
"keywords": ["cascading","chrome","design","evernote","firefox","mindmeister","safari","sheets","style","calculator","check","child","chrome","clearly","click","country","demystifing","design","distraction","effects","evernote","firefox","frameworks","hover","introducing","links","mindmeister","nifty","online","original","reading","redesigning","responsive","safari","selector","shapecatcher","templates","visual","arrives","awesome","brilliant","character","closest","codes","collection","complement","country","design","effects","estimation","favorite","feeds","feedstail","frameworks","gives","great","interest","liked","makes","mapping","matches","representation","responsive","selector","sense","support","templates","through","unicode"]
},{
"title": "KeyBindings: new, improved \"surround\" commands",
"url": "/2011/11/15/keybindings-new-improved-surround-commands/",
"tags": ["keybindings","keyboard","macos"],
"date": "Nov 15th, 2011",
"ts": "1321367400",
"summary": "As the next part in the keybindings series I m demonstrating some improvements I ve made to the original surround commands since my first time around . This set of commands is designed to wrap selected text in a variety of paired characters. The keys are the same, but the commands now work inside of single-line text fields (like you often find in Safari), prevent auto-pairing in apps like nvALT, MultiMarkdown Composer and Byword, and a few refinements to cursor positioning. Here s the code to drop into DefaultKeyBinding.dict , located at (create the folder and/or the file if you don t have one 1 ): The whole set is bound to Control-Command-S, so you use them by: selecting some text that needs quotes, parenthesis, brackets, etc. wrapped around it press Control-Command-S typing the key you want to wrap the text in It s set up to handle parenthesis, square brackets, angle brackets, curly brackets, single/double quotes and backticks. In the parenthesis and brackets, typing the left character of the pair adds the wrapping with spaces on the inside of the pair (e.g. ) and the right character wraps with no spaces (e.g. )). If you just want one or two and don t need them bundled in the Control-Command-S wrapper, you can always extract them from that section of the plist and move them into the root. Because we re just wrapping and not autopairing, the commands make more sense (to me) with a hotkey to enable them. If you don t have a selection when you run these, it s going to insert the last thing it yanked and you never know what you ll get. The yank pasteboard is separate from the main pasteboard, so it has little to do with what you intentionally copied last. If you re using these keybindings, it will likely contain the last selection you ran one of them on. Just for edification, let s dissect one, shall we? Here s the binding for wrapping in double quotes, made a little prettier for readability: In the first three line delete the selection. The text is now in our yank pasteboard. Then we insert the text " The backslash escapes the double quote so it doesn t break the surrounding quotes in the plist The trailing space fools most auto-pairing setups into not inserting the right-side pairing automatically. We immediately delete backward to remove the extra space Next, we use the yank: method to put back the text we originally cut out and insert a space immediately after it. The space allows us to manipulate the end of the",
"keywords": ["editor","github","keyboard","linux","management","safari","shortcut","windows","because","byword","command","composer","control","defaultkeybinding","finally","github","hopefully","multimarkdown","safari","agnostic","allows","angle","arsenal","automatically","autopairing","backslash","backticks","backward","between","binding","bindings","blank","bound","brackets","break","bundled","certain","character","characters","check","closing","coming","command","commands","completely","contain","continue","control","copied","create","creating","curly","cursor","customizable","demonstrating","describing","designed","dissect","doesn","double","edification","editors","enough","escapes","extra","extract","fields","first","folder","fools","gives","going","handle","happen","hitting","hotkey","impatient","improvements","inserting","inside","intentionally","keybindings","likely","little","located","manipulate","method","needs","nvalt","often","original","originally","paired","pairing","parenthesis","pasteboard","pieces","plist","positioning","posting","powerful","press","prettier","prevent","quote","quotes","readability","realize","refinements","remove","right","section","selected","selecting","selection","sense","separate","series","seriously","setups","shall","since","single","space","spaces","square","steal","surround","surrounding","taste","totally","trailing","typing","using","variety","whole","wrapped","wrapper","wrapping","wraps","yanked"]
},{
"title": "Marked scripts: nvALT, Evernote, MarsEdit, Scrivener",
"url": "/2011/11/14/marked-scripts-nvalt-evernote-marsedit-scrivener/",
"tags": ["marked","scripting"],
"date": "Nov 14th, 2011",
"ts": "1321328280",
"summary": "Thus far, Marked has had a great reception and has, overall, worked superbly with a wide range of text editors. I frequently get requests for integration with more complex editors, but have been unable to fulfill them because Marked requires an actual text file to watch. To try and fix this situation, I ve been scripting watchers for various applications which embed their files inside of bundles or otherwise obscure the actual content files from Spotlight. I ve created scripts for Notational Velocity / nvALT , MarsEdit , Scrivener and Evernote . The scripts will be part of the Marked Bonus pack , but are also available as a separate download here (see the end of the post). I would eventually like to incorporate the functionality directly into Marked, but it will take some time to add the necessary configuration options and make it an elegant fit. The scripts work by using timestamps and polling with Ruby to detect changes within certain files and directories (varies from script to script) 1 . The Evernote, nvALT and MarsEdit scripts can be run without arguments (or as LaunchAgents). The Scrivener script requires the path to the file for your project as the only argument. The preview contents are always saved to Marked Preview.md in your home folder. When you first start, you may need to create this file manually with a text editor and save it to your home folder. Once the scripts have run once, the file will exist and you can open it in Marked any time you re working in a watched application. All of this was inspired by this gist by myfreeweb . His method uses fsevents and Python, which is definitely more elegant in many cases. I switched it over to use Ruby and timestamps because I m pretty lame with Python right now. If you want to take the basic ideas and convert them to use fsevents, please share! I ll be happy to host and credit (or just link, if you prefer) any submissions. I m certainly taking requests for any other editors you d like to have watched, so drop your vote in the comments. For all of these scripts, the easiest way to use them is to put them in a convenient folder (I use ) and run to make them executable. With the exception of the Scrivener script (), you can then just type the path and script name (e.g. ) and hit Enter. They will run and watch for changes in their specific application until you cancel the command by typing . The scripts will create a file in your home directory (modifiable in the script) called Marked",
"keywords": ["applescript","evernote","format","markdown","marsedit","notational","scrivener","velocity","again","applescript","because","bonus","command","considering","daniel","download","enter","evernote","example","format","jalkut","launchagents","lingon","markdown","marked","marsedit","notational","notes","preview","python","related","scrivener","spotlight","terminal","thanks","velocity","adjusted","again","anyone","anyway","applications","argument","arguments","assist","assuming","automatically","autosave","available","background","basic","because","beginning","broken","bundles","called","cancel","captured","certain","certainly","change","changes","chills","chosen","command","comment","comments","complex","concatenating","configuration","configure","content","contents","continued","continues","convenient","convert","create","created","credit","definitely","detailed","details","detect","detected","directly","directories","directory","display","displayed","document","doing","download","drive","easiest","edited","editing","editor","editors","elegant","embed","embedded","eventually","everwatch","except","exception","executable","exist","expecting","extension","faster","figure","files","first","folder","forgot","formatting","fsevents","fulfill","functionality","great","happy","ideas","images","included","incorporate","individual","information","inside","inspired","integration","interrupt","intervention","keeps","launch","leave","longer","manually","marswatch","method","modifiable","modify","myfreeweb","necessary","needed","needs","notes","nvalt","nvwatch","obscure","obvious","options","overall","passed","played","point","polling","portion","prefer","preferences","preview","project","pulled","questions","range","recent","recently","reception","remove","requests","requires","right","running","saved","script","scripting","scripts","scrivwatch","second","seconds","section","separate","share","shouldn","situation","snappy","solution","specific","specifically","storage","stores","submissions","superbly","switched","synced","takes","taking","think","through","timestamps","touches","typing","unable","unique","updates","updating","using","varies","various"]
},{
"title": "The keys that bind: KeyBinding Madness part 2",
"url": "/2011/11/10/the-keys-that-bind-keybinding-madness-part-2/",
"tags": ["keybindings","markdown"],
"date": "Nov 10th, 2011",
"ts": "1320931800",
"summary": "If you ve poked around this blog at all, you know I dig System Services and TextExpander snippets more than is probably healthy. I have a new obsession, though, and it s been taking up a lot of my playtime. Welcome to part two of (what is now) an ongoing series about Mac OS X Key Bindings. Originally inspired by Lauri Ranta , I ve come to believe that system-wide keybindings for the Cocoa Text System are one of the most powerful tools available to any text nerd. I ve actually signed on to write the big picture up for Macworld , so I m going just going to be sharing some of my favorites here and save the details for that post. For now, there s an overview in my previous KeyBindings post . My fully-updated DefaultKeyBindings.dict file will be available at its GitHub page as soon as I finish commenting and documenting. In the meantime, here s the first of my favorites In some editors (nvALT, MultiMarkdown Composer, TextMate, Byword, et al), starting a Markdown list, entering a line and pressing return will give you another list item character and maintain indentation. It s really nice when you re outlining. This keybinding brings that joy to every other Cocoa text editor. It will find the list item delimiter (1., *, -, +) and duplicate it on the next line, with indentation intact. You can trigger it from anywhere on the line it won t break the line, just start a new item below. You can make one that does break the line and start a new list item with the part after the cursor, but this one is intended to work as is. If you already have a file, just drop the code below into it. If not, create that file in a text editor and add a pair of curly brackets (), then paste this code between them. It s spread out for readability, but you can remove the linebreaks and insert it all as one line if your DefaultKeyBindings.dict file is getting a little long. Yes, there s a reason for all of that jumping around. It looks like nonsense, but it takes advantage of the way that move by word (Option-left/right) works in OS X to kill double whitespace and find delimiters of varying lengths. It works pretty darn well. It s not perfect, but it s very, very handy. Imagine having solid Markdown editing tools in a text field in Safari. Yep, it works there. Some of the extra movement in the keybinding is actually to allow my new bindings to work in the aforementioned editors that already have pairing, list continuation, etc. built in. By inserting and deleting extra spaces",
"keywords": ["github","howbert","keyboard","markdown","multimarkdown","safari","shortcut","textmate","bindings","byword","changelog","clean","cleans","cocoa","command","composer","defaultkeybindings","disable","donate","download","enter","fletcher","focus","github","however","imagine","keybindings","keyboard","lauri","lists","macworld","markdown","multimarkdown","originally","paragraph","penney","preferences","published","ranta","return","safari","service","services","shortcut","system","textexpander","textmate","therefore","updated","welcome","actions","added","advantage","aforementioned","again","allow","amazing","another","anywhere","automatically","available","because","believe","below","between","bindings","brackets","break","brings","built","bundle","change","changes","character","clean","commenting","continuation","create","curly","cursor","default","deleting","delimiter","delimiters","details","digit","documenting","doesn","double","duplicate","easier","editing","editor","editors","entering","everything","extra","favorites","field","finish","first","fixes","fully","getting","going","handles","handy","harder","having","healthy","hotkeys","indentation","inserting","inspired","install","intact","intended","items","jumping","keeps","keybinding","keybindings","lengths","level","linebreaks","lists","little","looks","maintain","makes","meantime","memory","movement","muscle","necessary","nonsense","numbering","numbers","nvalt","obsession","ongoing","ordered","ordering","orders","originally","outlining","overview","packaged","pairing","paste","picture","playtime","poked","possible","powerful","pressing","prevent","readability","reads","remove","renders","renumbering","repeating","return","right","script","selected","sequence","series","sharing","shortcut","siblings","signed","snippets","solid","sorting","spaces","spread","starting","system","takes","taking","title","together","tools","train","trigger","triggering","turns","typing","universally","updated","varying","wanted","whitespace","works","worry","write"]
},{
"title": "Geeklet: Top RAM Processes",
"url": "/2011/11/09/geeklet-top-ram-processes/",
"tags": ["geeklet","geektool","nerdtool","scripting"],
"date": "Nov 9th, 2011",
"ts": "1320845400",
"summary": "This next geeklet is quite similar to the Top CPU Processes geeklet I last shared. It finds the apps and processes with the biggest memory footprint on your system and lists the top 10. The output looks like: It includes system-level processes, too, so you can see if something other than your running apps is taking up RAM. Keep in mind that RAM is meant to be used, and having it filled up only starts to slow down your system when it has to page it out constantly. That being said, if your system is slowing down, this overview can give you a quick idea what s happening. Here s the full code. Copy and paste it into a file called memmeter.rb, save it and run . Then set up your shell geeklet to run and you should be good to go. Just like the Top CPU Processes script, you can call it with , or just to display no title. If no parameters are given, it will display Top RAM Processes. Next up, either a good system status overview script or some network status geeklets. Whichever my geek muse picks first, I suppose.",
"keywords": ["access","central","languages","memory","processing","programming","random","processes","whichever","biggest","called","constantly","display","either","filled","finds","first","footprint","geeklet","geeklets","happening","having","includes","level","lists","looks","meant","memmeter","memory","network","output","overview","parameters","paste","picks","processes","quick","running","script","shared","shell","similar","slowing","starts","status","suppose","system","taking","title"]
},{
"title": "The MindMeister Markdown Showdown",
"url": "/2011/11/08/the-mindmeister-markdown-showdown/",
"tags": ["guestblogger","markdown","mindmapping","scripting"],
"date": "Nov 8th, 2011",
"ts": "1320759000",
"summary": "I d like to welcome Donald Curtis as a guest blogger today, here to talk about a very cool script we worked on to add some Markdown love to MindMeister . It started with a DM from Donald on Twitter with a link to a GitHub gist, and after some back and forth it became a very cool (and useful) tool. Cool enough that I really wanted to share it here. Since the script is his brainchild and almost entirely his handiwork, I thought it would be cool if Donald did the honors. I am nearing the end of my first semester as a professor at a small liberal arts college. My graduate school years left me fairly detached from some of the topics I learned in my undergrad years and so I spend a decent amount of time simply re-acquainting myself with material. It is easy to digest the second time around, but as I process the material I also have to think about how and what to present. Mind maps have turned out to be an exceptionally useful tool for organizing the key ideas I want to cover. And for whatever style of teaching I employ, they end up being a great in-class reference. When I first started toying with the idea of incorporating mind maps, I did the search for the right software tool. I considered software-only solutions such as iThoughts HD for iOS and My Thoughts for Mac, with Dropbox as the glue. Both of these apps look amazing and sometimes that s all the motivation you need. After reading Brett s Appstravaganza I gave MindMeister a spin (because they offer a free as in beer account). By the time I started paying for the account, I was in. You can read more about the app in Brett s discussion about mind mapping, but in summary: free trial, web-based (read: multi-platform), decent iOS app, looks good, and roughly equivalent yearly cost to software-only solutions. The added bonus for my application is on the occasion I have an external link to a picture or movie MindMeister works on the lecture machines. Stepping back, I assume teaching isn t a scenario that a lot of the readership can associate with. Not to worry, mind maps are useful in a wide variety of scenarios. MindMeister lacks one feature to satisfy the Markdown users among us: export to Markdown. Brett recently had a Quick Tip that showed how to use Mindjet MindManager to get a MindMeister map to HTML through Markdown . I don t use Mindjet and I didn t want to really have to install another piece of software and figure out how to migrate my maps through it. After all, the approach was",
"keywords": ["github","google","knowledge","management","mindjet","mindmeister","twitter","appstravaganza","brett","changelog","check","command","configuration","curtis","donald","donate","doritos","download","dropbox","first","github","github","markdown","mindmanager","mindmeister","mindjet","normal","optionally","options","overview","print","published","quick","rather","showdown","since","stepping","terpstra","thanks","thoughts","twitter","updated","usage","welcome","write","ability","abused","account","acquainting","added","ahead","almost","amazing","among","amount","another","anytime","approach","argument","arguments","associate","assume","automatically","available","backstory","based","became","because","begin","below","blogger","bonus","brackets","brainchild","buffer","cannot","changed","characters","clarity","class","clean","college","command","compiled","complain","concatenated","configuration","considered","contributions","contrived","cover","created","decent","default","described","detached","digest","directory","discussion","download","downside","either","elegant","employ","enough","entire","entirely","escaped","export","exported","external","fairly","feature","feelings","figure","first","formatted","forth","functions","geeks","giant","graduate","great","guest","handiwork","headings","honors","ithoughts","ideas","images","indent","insensitive","install","lacks","learned","lecture","letting","level","levels","liberal","lists","looks","machines","major","mapping","markdown","migrate","milkbox","mindmeister","motivation","movie","multi","music","myself","named","nearing","needing","needs","newlines","notes","offer","optional","options","organizing","outline","outlines","output","outputs","parsing","passing","paying","picture","pictures","piece","platform","print","printing","prints","process","professor","program","prose","quick","quote","rather","readership","reading","recently","refine","relies","represented","return","right","roughly","satisfy","scenario","scenarios","school","screen","script","search","second","secret","semester","setting","share","showed"]
},{
"title": "Byword for keyboard nerds",
"url": "/2011/11/07/byword-for-keyboard-nerds/",
"tags": ["keyboard","markdown"],
"date": "Nov 7th, 2011",
"ts": "1320672600",
"summary": "When it comes to keyboard navigation, Vim impresses the hell out of me, but TextMate keyboard shortcuts take up more of my muscle memory than any other app. I m sure anyone who s used any IDE for a while has their share of keyboard chops and preferences. Even in the graphics world, you are absolutely not considered a Photoshop pro until you ve learned at least 36 keyboard shortcuts. Today, though, I want to point out a few keyboard shortcuts in a place you might not expect to find them: the plain text editing side of one of my favorite writing tools, Byword . Note: I have a lot of custom, system-level keybindings for writing Markdown, so if I say something and you try it and it s just not there, let me know. Though not likely, I might mix up my own hacks with Byword s actual features. First off, there s a very handy shortcut for increasing and decreasing the scope of a text selection. Command-Option-Up Arrow will expand your selection in both directions, selecting the closest word to the right of the caret 1 , or the current word if the caret is inside a word. Press it again and the sentence containing the word is selected. Unlike advanced text editors, it s not aware of scopes, so it doesn t stop between encompassing quotes or brackets, but for most writing purposes, this is just fine. Pressing it again will select the paragraph you re working on. One more and you ll select the whole document. At any point after expanding the selection, you can reduce it back to the next level with Command-Option-Down Arrow. That s super-handy, but it gets cooler. Alternate section heading: So much help with sorting and moving that you ll have to buy them a 6-pack at the end of the day. That one got a bit long. It s also worth pointing out the text movement shortcuts. The first handy one is Control-Command-Up/Down Arrow. This moves selected text up and down by lines. If you have a selection in the middle of a line, it will remove that selection from the line and put it above or below (depending on which arrow key you hit). You can reorganize paragraphs very easily with the first selection shortcut I mentioned and then some Control-Command-Up/Down action. The real beauty of this text movement shortcut, though, is in Markdown list editing. Command-Option-Up-Up will select the full line of the list item your caret is in, and then you can use Control-Command-Up/Down to re-order items. It s so much faster than copy/paste that it hurts just to think about doing",
"keywords": ["command","element","keyboard","markdown","shareware","shortcut","textmate","utilities","windows","additionally","alternate","anyway","arrow","byword","command","composer","control","elastic","extensive","first","fletcher","guess","hitting","lastly","markdown","metaclassy","moving","multimarkdown","paste","photoshop","press","pressing","quickly","right","seriously","shift","textmate","threads","today","unlike","above","acquaintances","across","action","advanced","again","anyone","appreciation","arrow","assure","asterisks","automatically","avoid","aware","awesome","beautiful","beauty","because","behavior","below","between","blabber","blank","block","blockquotes","board","brackets","brain","break","breeze","browse","build","bullet","bulleted","bullets","bunch","bundle","caret","chops","closest","combinations","comes","commands","compress","confusion","considered","containing","continue","converting","converts","cooler","create","creating","cursor","custom","decreasing","depending","detection","developers","directions","distraction","document","doesn","doing","drunk","earlier","easily","editing","editor","editors","either","elaboration","emails","encompassing","enough","equally","especially","eventually","everything","expand","expanding","expect","faster","favorite","feature","features","finish","first","format","formatting","graphics","hacking","hacks","handles","handy","heading","hurts","impressed","impresses","incorporated","increasing","indent","indentation","indented","ingenious","inline","inside","instantly","intelligent","intelligently","interface","items","jumping","keybindings","keyboard","keypress","learned","level","likely","lists","maintaining","making","memory","mentioned","middle","minimalist","mismatches","mouse","movement","moves","moving","muscle","navigation","nested","numbered","numbers","numerical","nvalt","often","operating","ordered","original","outdent","outdenting","paragraph","paragraphs","paste","poetry","point","pointing","powerful","preferences","profit","proper","properly","quickly","quotes","referring","remove","reorder","reorganize","repeat","return","reviewed","right","scope","scopes","screaming","section"]
},{
"title": "Stained: Simplify Jacket",
"url": "/2011/11/06/stained-simplify-jacket/",
"tags": ["design","themes"],
"date": "Nov 6th, 2011",
"ts": "1320591600",
"summary": "This one was just for fun. I m sharing it mostly as a starting point for anyone who wants to dig in and make their own theme for Simplify ($2.99 on the Mac App Store ), a music controller for Spotify Desktop and iTunes. If you want to try it out (and you use the Spotify Desktop client and Simplify), just download the file below and unzip it, then double click the file. It will offer to install it just click ok and then enable it in the Simplify preferences. There are 4 variations to play with. It has some quirks, but I don t think it s bad for an hour s work. If you want to hack into it, look in after you install it and dig through the directories there. In one of the oddly named directories, you ll find the folder. All of the HTML, CSS, images and JavaScript that comprise the jacket will be in there. If you kill the Simplify app and then launch it from the command line with , it will reload every time you change a file in that directory. Very handy for design/debugging. Stained - Simplify Jacket v1 Download Stained - Simplify Jacket v1 A grungy polaroid Jacket for Simplify . Published 11/04/11. Updated 11/04/11. Changelog Donate More info",
"keywords": ["apple","computer","folder","itunes","javascript","spotify","store","changelog","desktop","donate","download","jacket","javascript","published","simplify","spotify","stained","store","updated","anyone","below","change","click","client","command","controller","debugging","design","directories","directory","double","download","folder","grungy","handy","itunes","images","install","jacket","launch","mostly","music","named","oddly","offer","point","polaroid","preferences","quirks","reload","sharing","starting","theme","think","through","unzip","variations","wants"]
},{
"title": "Scatterbrains 2: The geekening",
"url": "/2011/11/05/scatterbrains-2-the-geekening/",
"tags": ["doing","productivity","scripting"],
"date": "Nov 5th, 2011",
"ts": "1320501600",
"summary": "If you read A solution for scatterbrains yesterday, but were left feeling like the solution just wasn t geeky enough here s a Saturday morning post to help you out. You do actually need to read that for this to make any sense. Here, I ll link it again for you. To make this a little geekier: if you re doing this in nvALT, you can right click the note in the list to copy a URL. Then create a (what was I doing) alias in your : Now you can access that note directly in nvALT from the Terminal with . You can also put that bookmark on a hotkey using any of the various keyboard shortcut apps. Alternatively, if you re using a plain text file without nvALT, just create an alias or AppleScript to open it in your favorite editor No, seriously. Geek it up. Given my love for the command line, it s unsurprising that I wrote a little script to work with this system. You can, of course, get the full contents of the note with QuickQuestion (). Because I added a later section and wanted to clean up the output, I created a second method. My input file (?? What was I doing.md) looks like this: You can leave that line blank or add your own tag, but there needs to be a line before the Currently project starts (the script inserts all new entries at the third line, so it would get weird if that wasn t the first line of the section, right?). The script also expects the entries to be tabbed in and the project headings to be flush left. The Later section can have any name, or not be there at all. It s ignored by this script. Just paste this into a file and save it in your path as doing . Set the variable to the path to your note. Lastly, run to make it executable. If you run the script with no arguments, it will spit out the Currently: section of the file (requires that there be a Currently: section of the file). I d get this from the input file above: If you run it with an argument, it takes it as a new entry, adds a timestamp and inserts it at the top of the Currently section. You have to manually edit the file to remove old entries or mark things completed, but the script is a handy means of input. You can interface it with LaunchBar fairly easily, too, if that fits your workflow better. Once you ve set up the script, just create an AppleScript at and paste this into it: In LaunchBar, type doing to select the action and hit the spacebar. Type in your entry and hit return. The timestamp will be added by the script, and the netry will be inserted at the third",
"keywords": ["applescript","launchbar","operating","script","scripts","shell","system","applescript","because","lastly","later","launchbar","quickquestion","saturday","terminal","typing","above","access","action","added","again","alias","argument","arguments","before","blank","bookmark","clean","click","command","comments","completed","contents","create","created","directly","display","doing","easily","editor","enough","entries","entry","executable","expects","explanation","fairly","favorite","feeling","field","first","flush","geekier","geeky","handy","headings","heads","hotkey","ignored","input","inserted","inserts","interface","keeping","keyboard","later","leave","liner","little","looks","manually","method","morning","needs","netry","nvalt","output","paste","project","questioning","remove","requires","return","right","sanity","scatterbrains","script","second","section","sense","seriously","shortcut","simultaneously","solution","spacebar","started","starts","system","tabbed","takes","think","third","timestamp","trying","unsurprising","using","variable","various","wanted","weird","workflow","wrote","yesterday"]
},{
"title": "Quick Tip: Quickly clear stuck Growl notifications",
"url": "/2011/11/04/quick-tip-quickly-clear-stuck-growl-notifications/",
"tags": ["growl","launchbar","quicktip","scripting","shell"],
"date": "Nov 4th, 2011",
"ts": "1320447600",
"summary": "Quick tips are random posts regarding something I discovered on my way to something bigger. They usually get longer than quick would imply, for which I refuse to apologize. I ve been having an issue with the latest version of Growl (1.3.1) where notifications randomly get stuck. No amount of clicking and option-clicking will make them go away. Until there s a fix for this, I m using a brute force restart to clear them 1 . I have it set up as an alias () in my and as a LaunchBar action (Restart Growl.scpt). It s a really simple command: Easy enough, right? You could run the AppleScript from any launcher (e.g. FastScripts ), too. Like I said, brute force and lacking in any elegance, but it ll get me through until a fix comes out. This is essentially the same process as my previous foray , but that one doesn t work with the Mac App Store version of Growl. Consider this an update.",
"keywords": ["apple","applescript","fastscripts","growl","launchbar","macintosh","script","shell","store","applescript","consider","fastscripts","growl","launchbar","quick","restart","store","action","alias","amount","apologize","bigger","brute","clear","clicking","comes","command","discovered","doesn","elegance","enough","essentially","foray","force","having","lacking","latest","launcher","longer","notifications","posts","process","quick","random","randomly","refuse","restart","right","simple","stuck","through","using","usually","version","where"]
},{
"title": "A solution for scatterbrains",
"url": "/2011/11/04/a-solution-for-scatterbrains/",
"tags": ["doing","logging","nvalt","productivity"],
"date": "Nov 4th, 2011",
"ts": "1320418800",
"summary": "As I ve mentioned here before (see QuickQuestion ), I m a total mess when it comes to remembering what I was tinkering with late at night or early in the morning. By the time my lunch break rolls around and I want to hack a little more, I have to search through git logs and Spotlight s Recent Files just to figure out what I was working with and where I was at with it. Two days later, not a chance. Sometimes it even happens when I m intent on completing a todo item and let something distract me for just a few minutes. What was I doing? It s probably a result of choices I made in my younger years, but whatever the cause, I m always looking for tools to make this easier. This post outlines a method that I ve found very useful. You may have a different reaction, especially if you re the type of person who remembers what they had for breakfast. If you ve already forgotten about your Wheaties, read on. I like apps like Fresh and Blast for this, but something more manually-curated has always suited me better. I ve been using VoodooPad for a long time, in combination with Ian Beck s Scratchpad scripts and an @whatiwasdoing tag. Lately, I ve found I wanted something simpler and even more accessible for this purpose. QuickQuestion and nvALT provided the easiest answer. What I m doing is keeping a single nvALT note (and corresponding text file) with brief descriptions of my current goings-on. I named the note using QuickQuestion formatting () so I can integrate it with that system easily, accessing the note from the command line and from LaunchBar. QuickQuestion doesn t currently make it easy to append to a note, but I can use LaunchBar, a custom script (come back tomorrow ) or even a quick on the command line if needed. For now, I m just editing using nvALT, which is really just as easy in most cases. QuickQuestion does make it easy to access the question, though, and I can pop up a list of my current/on-hold projects just by triggering LaunchBar and typing qq-space-doing . As a side-benefit one I learned when I first started logging my work consciously typing out or writing down what I m doing makes it far more memorable and reduces the likelihood that I ll hit that blank wall when sitting back down to work (or play, as I tend to consider most of my side projects). The first line is just a tag to make sure the file shows up in my older searches (it s ignored by QuickQuestion). I m adding my entries in TaskPaper format, just for cross-application",
"keywords": ["element","launchbar","spotlight","taskpaper","textmate","voodoopad","wheaties","blast","files","fresh","geekening","later","launchbar","quickquestion","recent","scatterbrains","scratchpad","sometimes","spotlight","taskpaper","taskpaper","textexpander","textmate","voodoopad","wheaties","access","accessible","accessing","adding","answer","append","archive","automatic","before","benefit","blank","brain","break","breakfast","brief","cause","chance","choices","combination","comes","command","compatibility","completing","consciously","consider","corresponding","cross","curated","curious","custom","deleted","description","descriptions","different","discarded","discarding","distract","documents","doesn","doing","easier","easiest","easily","editing","emails","enough","entries","especially","farther","figure","finished","finishing","first","forgotten","format","formatting","found","friends","geeked","goings","happens","highly","ignored","indent","integrate","intent","issues","items","journal","keeping","later","learned","likelihood","links","little","logging","looking","looks","lunch","makes","manually","meant","memorable","memory","mentioned","method","minutes","morning","named","needed","night","notes","nvalt","older","outlines","permanent","person","prefixed","project","projects","quick","reaction","recently","recognize","recommend","record","reduces","related","remembering","remembers","remind","reminder","requires","rolls","script","scripts","search","searches","second","separate","setup","short","shows","simpler","single","sitting","snippet","solution","space","spark","started","status","suited","symbol","system","themselves","through","timestamp","tinkering","tomorrow","tools","track","triggering","typing","unusual","useful","using","wanted","whatever","whatiwasdoing","where","whitespace","worked","workflow","working","works","writing","years","younger"]
},{
"title": "Web excursions: October 28, 2011 - November 3, 2011",
"url": "/2011/11/03/web-excursions-october-28-2011-november-3-2011/",
"tags": ["bookmarks"],
"date": "Nov 3rd, 2011",
"ts": "1320343200",
"summary": "Links of interest from October 28, 2011 through November 3, 2011: Essential Trick for Macbook Air Owners MacBook Air display looking a little washed out? Here s the fix, and I can attest to its effectiveness. Fully fluid, responsive CSS carousel Sweet proof of concept for a responsive, CSS-based slideshow/carousel. Wiki Summarizer No points for pretty, but the mind map export is sweet. Summarize and visualize your Wikipedia searches. Expanding Text Areas Made Elegant Very cool trick from A List Apart. I ve applied this to the comments field on posts here as an experiment. Latte Art: 40 Very Delicious Examples Gorgeous.",
"keywords": ["cascading","formats","latte","sheets","style","tutorials","wikipedia","apart","areas","delicious","elegant","essential","examples","expanding","fully","gorgeous","latte","links","macbook","macbook","owners","summarize","summarizer","trick","wikipedia","applied","attest","based","carousel","comments","concept","display","effectiveness","experiment","export","field","fluid","interest","little","looking","points","posts","proof","responsive","searches","slideshow","through","trick","visualize","washed"]
},{
"title": "App Review: Quiet",
"url": "/2011/11/03/app-review-quiet/",
"tags": ["appreview","macappstore","productivity"],
"date": "Nov 3rd, 2011",
"ts": "1320323400",
"summary": "I found Quiet today. I ve used plenty of these distraction-free apps that cover your desktop and other windows before, but mostly just for screencasting. Command-option clicking the icon of the app that I wanted to focus on has generally been enough for me, but Quiet takes it a few very useful steps further. When invoked, Quiet can not only focus on windows or applications, it can also silence Skype, iChat, Adium, Growl notifications and bouncing Dock icons. There are times when those things are absolutely necessary to my work, but there are certainly times when I want to scream every time one of the aforementioned notifications disturbs me. Quiet can, of course, hide the desktop and other windows using blackout, wallpaper or a blur feature (requires some extra system resources). It can also perform this action on just one space or on all spaces, and on a single app or all apps (just hide the desktop). Focusing on one space is handy if you want to be able to access multiple applications hassle-free but still maintain a quiet work environment just by flipping between desktops. Quiet can even hide its own menubar icon and run silently less ideal if you tend to forget hotkeys, but a very nice feature to have. I would like the ability to define a background color or custom wallpaper (it currently uses whatever is set for the space, which is workable). Beyond that, the available options are perfectly suited to my tastes. Most of this can be accomplished with AppleScript, of course, but for $1.99 on the Mac App Store , Quiet makes it utterly convenient to go dark temporarily. Nicely done.",
"keywords": ["adium","applescript","desktop","environment","growl","ichat","skype","store","adium","applescript","beyond","command","focusing","growl","nicely","quiet","skype","store","ability","access","accomplished","action","aforementioned","applications","available","background","before","between","blackout","bouncing","certainly","clicking","color","convenient","cover","custom","define","desktop","desktops","distraction","disturbs","enough","environment","extra","feature","flipping","focus","forget","found","generally","handy","hassle","hotkeys","ichat","icons","ideal","invoked","maintain","makes","menubar","mostly","multiple","necessary","notifications","options","perfectly","plenty","quiet","requires","resources","scream","screencasting","silence","silently","single","space","spaces","steps","suited","system","takes","tastes","temporarily","times","today","useful","using","utterly","wallpaper","wanted","whatever","windows","workable"]
},{
"title": "Word repetition checking with JavaScript",
"url": "/2011/11/02/word-repetition-checking-with-javascript/",
"tags": ["javascript","jquery","scripting","writing"],
"date": "Nov 2nd, 2011",
"ts": "1320237000",
"summary": "Ok, I made something interesting (to me) last night. It s probably not worth taking the time to write up, but someday someone might find it and think it useful. I apologize for the messiness of the code, if I take this further and clean it up, I ll update this post. I was working on a few text-analysis features for Marked and decided I wanted to be able to show repeated words on a per-paragraph basis. The following is the experiment I did as a proof-of-concept. I decided that I wanted to do this in JavaScript/jQuery for various reasons, so my existing Ruby scripts were mostly useless. Thus, I devised a way to handle it entirely in a WebKit browser. For the purposes of demonstration, I set up a single-page, dynamic version of this. You can enter any article URL and see the processing take place. Hover over a bolded word to see where it repeats in the paragraph. Note that it s pulling through a proxy of Marky the Markdownifier , and that some markup will return blanks. Obviously, it also helps to have a lot of text in the article you re analyzing. Hard up for ideas? Try this , or this . Give it a few seconds to load, it pulls in the content in the background and I haven t put a progress indicator on it yet. I started with a Porter Stemmer using a script from tartarus.org . Stemming allows you to break a word down to a root form, so that all variations of a word can be boiled down and plurals, conjugations and various anomalous representations of a word will all match each other. From there, I do a frequency check to find word roots used more than once within the block being processed, creating an array of the repeated words. Then I re-parse the block, one word at a time, adding some markup to words whose root is found in the previously-created array. Here s the main script with a few comments. Until I get this prettied up, I won t go into a step-by-step. Feel free to lift and improve as you like. Remember to include the porter-stemmer script before this script. Oh, and because I m lazy, you ll need to include jQuery as well. The function is stolen from php.js . If I decide to include this in Marked, it will definitely get some revamping. Like I said proof-of-concept. Check out the demo, though, it s kind of neat.",
"keywords": ["array","document","function","jquery","locator","model","object","resource","stemming","string","structure","webkit","breakdown","check","hover","javascript","markdownifier","marked","marky","porter","remember","stemmer","stemming","webkit","adding","allows","analyzing","anomalous","apologize","array","article","background","basis","because","before","blanks","block","boiled","bolded","break","browser","browsers","check","clean","comments","compatible","concept","conjugations","content","created","creating","decide","decided","definitely","demonstration","devised","dynamic","enter","entirely","experiment","features","found","frequency","function","handle","haven","helps","highlighting","ideas","improve","indicator","interesting","jquery","little","markup","match","messiness","mostly","night","paragraph","parse","plurals","porter","prettied","previously","processed","processing","proof","proxy","pulling","pulls","reasons","repeated","repeats","representations","return","revamping","roots","script","scripts","seconds","single","someday","started","stemmer","stolen","taking","tartarus","think","through","useful","useless","using","variations","various","version","wanted","where","whose","within","words","working","worth","write"]
},{
"title": "Marked 1.3.1, more MultiMarkdown goodies",
"url": "/2011/10/29/marked-1-3-1-more-multimarkdown-goodies/",
"tags": ["markdown","marked","multimarkdown"],
"date": "Oct 29th, 2011",
"ts": "1319893200",
"summary": "Just a quick note here to let you know that Marked 1.3.1 has been approved and is up for sale in the App Store. If you re not familiar with Marked yet, check out the Marked product site (recently updated!). Marked 1.3.1 includes a few bugfixes but adds a surprising number of new features for an incremental version bump. See the changelog for a complete list, but here are the highlights: new icon! handles larger files recognizes and metadata locates embedded scripts and includes them in the preview more keyboard shortcuts quick toggle for custom processor on a per-document basis. If you re already a Marked user, the update is in the Mac App Store right now. If you re not, and you like the Markdown, you should probably check it out .",
"keywords": ["apple","cascading","formats","keyboard","markdown","sheets","shortcut","store","style","markdown","marked","store","approved","basis","bugfixes","changelog","check","custom","document","embedded","familiar","features","files","handles","highlights","includes","incremental","keyboard","larger","locates","metadata","preview","processor","product","quick","recently","recognizes","right","scripts","shortcuts","surprising","toggle","updated","version"]
},{
"title": "App Review: CodeRunner",
"url": "/2011/10/28/app-review-coderunner/",
"tags": ["appreview","macos"],
"date": "Oct 28th, 2011",
"ts": "1319847360",
"summary": "One for the coders: I discovered CodeRunner by Nikolai Krill a few months back, and it s proven to be very, very useful in the kind of work that I do. It allows you to test blocks of code and see the results quickly and easily. It has syntax highlighting and autocompletion, as well as the ability to handle a wide variety of languages. CodeRunner handles AppleScript, C, C++, Java, JavaScript (Node.js), Objective-C, Perl, PHP, Python, Ruby and shell scripts. You can add your own languages, compilers/processors and syntaxes, too. The autocomplete libraries for each language are quite good (and very handy), and there are a good number of themes available for syntax highlighting (including my favorite, Twilight). It has auto-pairing and commands for wrapping code in a variety of paired characters, as well as a great set of code-editing tools. You can even pick between indenting with spaces or tabs and set the tab/space width, making it easy to match the code indentation to the settings of the main app you re coding in. CodeRunner can also handle code that requires input at runtime, providing a field for passing parameters and input to your functions as needed. In short, it does just about everything I could ask a code-testing application to do. There are free apps for testing code, but very few that can handle multiple languages and none that I know of which can handle everything that CodeRunner does. If you code in more than one language, CodeRunner is worth every bit of its $4.99 price. Go get it. Nikolai also has a regular expression testing app in the Mac App Store called Patterns . I highly recommend it as well. The only issue I have with Patterns is that it doesn t handle highlighting sub-matches, but for 90% of what I need it to do, it s excellent.",
"keywords": ["applescript","expression","javascript","python","regular","store","applescript","coderunner","javascript","krill","nikolai","patterns","python","store","twilight","ability","allows","autocomplete","autocompletion","available","between","blocks","called","characters","coders","coding","commands","compilers","discovered","doesn","easily","editing","everything","excellent","expression","favorite","field","functions","great","handle","handles","handy","highlighting","highly","including","indentation","indenting","input","language","languages","libraries","making","match","matches","multiple","needed","paired","pairing","parameters","passing","price","processors","proven","providing","quickly","recommend","regular","requires","results","runtime","scripts","settings","shell","short","space","spaces","syntax","syntaxes","testing","themes","tools","useful","variety","width","worth","wrapping"]
},{
"title": "Web excursions: October 26, 2011 - October 27, 2011",
"url": "/2011/10/27/web-excursions-october-26-2011-october-27-2011/",
"tags": ["bookmarks"],
"date": "Oct 27th, 2011",
"ts": "1319731200",
"summary": "Links of interest from October 26, 2011 through October 27, 2011: Spur A fun and easy way to critique your visual design. It really is. iChat Notification with Growl In light of Adium troubles I ve had on Lion, this is a great solution for replacing the one feature I was missing most while using iChat (Growl/Boxcar notifications). Via @ptujec . Detect Scrollbar Width with JavaScript I do something similar to this on the Quick Look feature for TUAW , but may update my code to use this improved method. iTunes info in NerdTool on Lion - All this While you re waiting for me to get my next Geeklet written up, here s an awesome appscript-based iTunes/NerdTool setup from Dr. Drang. CSS Background: There s More To Know Than You Think The title says it pretty well.",
"keywords": ["adium","growl","ichat","itunes","javascript","quick","scrollbar","adium","background","boxcar","detect","drang","geeklet","growl","javascript","links","nerdtool","notification","quick","scrollbar","think","while","width","appscript","awesome","based","critique","design","feature","great","ichat","itunes","improved","interest","light","method","missing","notifications","ptujec","replacing","setup","similar","solution","through","title","troubles","using","visual","waiting","while","written"]
},{
"title": "iOS App Review: Reading List",
"url": "/2011/10/26/ios-app-review-reading-list/",
"tags": ["appreview","iphone"],
"date": "Oct 26th, 2011",
"ts": "1319677260",
"summary": "Reading List for iPhone is a polished app that does one thing, and does it well: track your books. It helps keep track of the books you want, the books you have, the books you re reading and the books you ve read. If you still enjoy the rustle of paper pages in this era of the E-Reader, this is a handy app to have. The app serves as a database of books. You can add a book by entering relevant details and a picture, or just scan the ISBN code on the book and have Reading List automatically look up and add all the details, plus a cover image. The scanner is great for cataloging your own books, but even handier at the book store when you want to add a book to your wish list. Once a book is added, it s just a couple of taps to move it to different parts of the database Reading Now, Saved For Later (which includes books on your wish list) or Finished Reading. Books in the Saved For Later category can be marked as Wish List items with another tap. Once you ve obtained the book, just remove the Wish List category and it goes to Saved For Later, or put it straight into Reading Now. Even if you re reading your books digitally, Reading List offers a great way to track your current reads and your plan-to-reads. Check it out on the App Store ($2.99). Watch here for a chance at some free promo codes soon, too!",
"keywords": ["appstore","bookselling","international","iphone","standard","books","check","finished","later","reader","reading","saved","store","watch","added","another","automatically","books","cataloging","category","chance","codes","couple","cover","database","details","different","digitally","enjoy","entering","great","handier","handy","helps","iphone","image","includes","items","marked","obtained","offers","pages","paper","parts","picture","polished","promo","reading","reads","relevant","remove","rustle","scanner","serves","store","straight","track"]
},{
"title": "Web excursions: October 22, 2011 - October 24, 2011",
"url": "/2011/10/24/web-excursions-october-22-2011-october-24-2011/",
"tags": ["bookmarks"],
"date": "Oct 24th, 2011",
"ts": "1319486400",
"summary": "Links of interest from October 22, 2011 through October 24, 2011: 10+ .htaccess snippets to optimize your website Mostly old standbys, but a few very handy snippets. Screenfly by QuirkTools Best-looking and most flexible tool I ve seen for testing responsive web design on multiple devices/resolutions. KeyStroke This Safari extension is amazingly useful, especially due to the fact that it s so easy to toggle on and off. It provides customizable single-key shortcuts for a wide array of browsing activities. In combination with Vim Like or gleeBox, it s nearly perfect. List.js - Add search, sort and flexibility to plain HTML lists Make plain HTML lists flexible, searchable, sortable and filterable with 7k of cross-browser JavaScript. A bookmarklet to create the HTML5 cache manifest A bookmarklet for creating the cache manifest required for HTML5 offline versions of sites.",
"keywords": ["authoring","cache","design","development","github","gleebox","javascript","manifest","javascript","keystroke","links","mostly","quirktools","safari","screenfly","activities","amazingly","array","bookmarklet","browser","browsing","cache","combination","create","creating","cross","customizable","design","devices","especially","extension","filterable","flexibility","flexible","gleebox","handy","htaccess","interest","lists","looking","manifest","multiple","nearly","offline","optimize","provides","required","resolutions","responsive","search","searchable","shortcuts","single","sites","snippets","sortable","standbys","testing","through","toggle","useful","versions","website"]
},{
"title": "A few themes for MultiMarkdown Composer",
"url": "/2011/10/24/a-few-themes-for-multimarkdown-composer/",
"tags": ["multimarkdown","themes"],
"date": "Oct 24th, 2011",
"ts": "1319461200",
"summary": "I ve been playing around with some themes for MultiMarkdown Composer , and thought I d share a few that are turning out half decently. MultiMarkdown Composer s syntax highlighting uses an extended version of the Peg Markdown Highlight format. You can add themes to (create it if it doesn t exist) and they ll show up in the Appearances preferences of MultiMarkdown Composer. I wouldn t call my initial attempts awesome, but they should be a good starting point for some ideas of your own. Note that you can add transparency to colors using an 8-digit hex format where the first two digits represent the alpha opacity. Take em for a spin, let me know what you think, and be sure to share any modifications! Another note you can use these themes with editors like Mou , too, but you need to remove the extra MultiMarkdown-specific syntax at the end of each theme (tables, footnotes, etc.). MultiMarkdown Composer Themes v1 Download MultiMarkdown Composer Themes v1 A few themes for the MultiMarkdown composer editor. Handles a variety of color schemes and adds size differentiation for headlines. Published 10/23/11. Updated 10/23/11. Changelog Donate More info",
"keywords": ["composer","editor","formats","latex","markdown","microsoft","multimarkdown","another","appearances","changelog","composer","donate","download","handles","highlight","markdown","multimarkdown","published","themes","updated","alpha","attempts","awesome","color","colors","composer","create","decently","differentiation","digit","digits","doesn","editor","editors","exist","extended","extra","first","footnotes","format","headlines","highlighting","ideas","initial","modifications","opacity","playing","point","preferences","remove","schemes","share","specific","starting","syntax","tables","theme","themes","think","thought","transparency","turning","using","variety","version","where","wouldn"]
},{
"title": "Fall Panorama",
"url": "/2011/10/23/fall-panorama/",
"tags": ["personal","photography"],
"date": "Oct 23rd, 2011",
"ts": "1319406900",
"summary": "Trail in the bluffs , a photo by terpstra_brett on Flickr. My Nex-3 makes me quite happy. Also, this Flickr- WordPress deal is pretty slick.",
"keywords": ["exploration","flickr","galleries","image","outdoors","recreation","twitter","urban","wordpress","zivity","flickr","trail","wordpress","bluffs","brett","happy","makes","photo","slick","terpstra"]
},{
"title": "Why I will never be a wildlife photographer",
"url": "/2011/10/23/why-i-will-never-be-a-wildlife-photographer/",
"tags": ["personal","photography"],
"date": "Oct 23rd, 2011",
"ts": "1319406660",
"summary": "Fall 2011 , a set on Flickr. Because I can't sit still long enough.",
"keywords": ["holyspirit","veronica","because","flickr","can't","enough"]
},{
"title": "Seriously easy HTML5 video encoding",
"url": "/2011/10/23/seriously-easy-html5-video-encoding/",
"tags": ["video"],
"date": "Oct 23rd, 2011",
"ts": "1319395080",
"summary": "NOTICE: I am officially recanting any endorsement for Easy HTML5 Video. Read the comments below to find out how bad they are at licensing and customer service. For now, let s stick with Miro or our own ffmpeg scripts. I recently discovered an app which takes input video in various formats and encodes all of the necessary formats for cross-browser, cross-platform HTML5 video embedding. It even outputs the tags for you. It s called, appropriately, Easy HTML5 Video. While I will probably continue to use my homebrew script for this, I wanted to mention it for anyone not really digging the command line approach. The lack of an app that could do an all-in-one batch encode for HTML5 video was what inspired my script in the first place. Easy HTML5 Video keeps things very, very simple. No quality adjustments or ffmpeg flags, just an output size setting and the option to publish the final videos to an FTP server. Easy HTML5 Video is a cross-platform Java app. It s not terribly pretty, but it works and the quality of output looks great on my tests. The free version puts a small logo on the output. It s relatively unobtrusive, but if you want to remove it or replace it with your own logo, you ll need to license the app: $49 for a single-website license, $69 for an unlimited license. If you re working with video these days, you need to be working with HTML5 formats. This makes it drop-dead easy. Addendum: As Joe Workman pointed out on Twitter , I should probably mention Miro as a very flexible and free HTML5 video converter. However, the problem that Easy HTML5 Video solves for me is not flexibility or just the ability to handle the necessary formats, it s the ability to drop one file in and automatically get out everything I need without manually setting up each format. Automation.",
"keywords": ["browser","cross","formats","google","languages","markup","twitter","video","addendum","automation","however","twitter","video","while","workman","ability","adjustments","anyone","approach","appropriately","automatically","batch","below","browser","called","command","comments","continue","converter","cross","customer","digging","discovered","embedding","encode","encodes","endorsement","everything","ffmpeg","first","flags","flexibility","flexible","format","formats","great","handle","homebrew","input","inspired","keeps","license","licensing","looks","makes","manually","mention","necessary","officially","output","outputs","platform","pointed","problem","publish","quality","recanting","recently","relatively","remove","replace","script","scripts","server","service","setting","simple","single","small","solves","stick","takes","terribly","tests","unlimited","unobtrusive","various","version","video","videos","wanted","website","working","works"]
},{
"title": "MultiMarkdown Composer hits the App Store",
"url": "/2011/10/21/multimarkdown-composer-hits-the-app-store/",
"tags": ["appstore","markdown","multimarkdown"],
"date": "Oct 21st, 2011",
"ts": "1319203140",
"summary": "Fletcher Penney s 1 latest project, MultiMarkdown Composer, is now available in the App Store . It provides a text editing environment with a full set of MultiMarkdown features. Unlike most of the other editors in this area, it auto-continues lists (ordered and unordered) and handles auto-pairing and wrapping. I m working on a full review to post very soon, but I wanted to let you all know about it as soon as possible! By the way, while it has one built in, it works even better with Marked as its preview! Check out MultiMarkdown Composer in the App Store ($7.99 intro price ). In case you don t recognize the name, he s the creator of MultiMarkdown.",
"keywords": ["composer","editor","fletcher","markdown","multimarkdown","penney","store","check","composer","fletcher","marked","multimarkdown","penney","store","unlike","available","built","continues","creator","editing","editors","environment","features","handles","intro","latest","lists","ordered","pairing","possible","preview","price","project","provides","recognize","unordered","wanted","while","working","works","wrapping"]
},{
"title": "QuickQuestion 1.1 update",
"url": "/2011/10/18/quickquestion-1-1-update/",
"tags": ["macos","notes","productivity"],
"date": "Oct 18th, 2011",
"ts": "1318964400",
"summary": "I ve made a small update to QuickQuestion . It adds the ability to specify part of the answer to be copied to the clipboard when one of the scripts (Alfred, Launchbar, CLI) runs. You format it with and use it inline. The @copy syntax is stripped out when the answer is displayed, just like @(metadata). So if the answer to your question is a command, url or anything else you re probably going to copy and paste anyway, just add something like this: The answer would be presented as You can monitor all file access with sudo opensnoop, and would be copied to your clipboard. If you don t have an in the answer, nothing special happens. If your answers are in Markdown files and you re having any trouble querying them, this will help . QuickQuestion v1.1 Download QuickQuestion v1.1 A set of scripts for building and querying a plain-text knowledgebase on OS X. Includes CLI, LaunchBar actions and Alfred extensions. Works great with Notational Velocity/nvALT, but does just fine without. Published 10/02/11. Updated 10/02/11. Changelog Donate More info",
"keywords": ["clipboard","command","github","interface","launchbar","management","markdown","paste","alfred","changelog","donate","download","github","includes","launchbar","launchbar","markdown","notational","published","quickquestion","source","updated","velocity","works","ability","access","actions","answer","answers","anyway","building","clipboard","command","copied","displayed","downloads","extensions","files","format","going","great","happens","having","inline","knowledgebase","metadata","monitor","nothing","nvalt","opensnoop","paste","presented","querying","scripts","small","special","specify","stripped","syntax","trouble"]
},{
"title": "Web excursions: October 15, 2011 - October 18, 2011",
"url": "/2011/10/18/web-excursions-october-15-2011-october-18-2011/",
"tags": ["bookmarks"],
"date": "Oct 18th, 2011",
"ts": "1318946400",
"summary": "Links of interest from October 15, 2011 through October 18, 2011: Espresso.tmTheme I m a pretty die-hard fan of the Twilight theme for TextMate, but have come to really like Espresso s default theme. Here s a port for TextMate from Martin Kuehl. OS X Lion Captive Portal Hijacking Attack More fun for coffeehouse network miscreants. Lesson: never allow a Java applet you didn t ask for, and leaving the house is dangerous. Advanced Layout Templates In WordPress Content Editor I wish I could have done this when I was still doing WordPress sites for clients. Putting it out there for those who still do!",
"keywords": ["captive","espresso","portal","templates","textmate","wordpress","advanced","attack","captive","content","editor","espresso","hijacking","kuehl","layout","lesson","links","martin","portal","putting","templates","textmate","twilight","wordpress","allow","applet","clients","coffeehouse","dangerous","default","doing","house","interest","leaving","miscreants","network","sites","theme","through","tmtheme"]
},{
"title": "Fixing Spotlight indexing of Markdown content",
"url": "/2011/10/18/fixing-spotlight-indexing-of-markdown-content/",
"tags": ["experiments","markdown","spotlight"],
"date": "Oct 18th, 2011",
"ts": "1318942800",
"summary": "I ran into an interesting problem this evening. It actually started a few days ago when I noticed that my qq script wasn t returning searches within the @(metadata) I set up in the note bodies. I figured I d come back to it when I had time. Then I got a couple of emails from readers who had also noticed this, so I started digging. It turned out that Spotlight had stopped indexing text content of all files with the extension. If I renamed the file to or , it would work fine, but something had convinced Spotlight that Markdown files were source code, not text. My source code importers don t handle Markdown, so I was getting no content imported. A little testing with and showed that on my system only files were being affected, but if you re seeing this problem it could be happening with whatever file extension your system has registered as a Markdown document. I don t know who the culprit is yet. I grep d through plists and schema.xml files throughout all of my apps and mdimporters, but to no avail. I figured if I couldn t find the problem, I might as well hack a solution. The solution below worked perfectly for me. If you ve noticed your searches in Spotlight or coming up short, this might fix the issue. I d love to hear back from people if it works for you. Again, let me know how it works. This is very much a hack experiment on my part. I basically took the default text importer, duplicated it and hacked the info.plist file to look for files. You can do this directly to the original importer, but I wanted an external solution that wouldn t break with the next update. This is doing the trick for me. Markdown Spotlight Plugin v1 Download Markdown Spotlight Plugin v1 A quick mdimporter hack to make Spotlight index Markdown files which have been errantly marked as source code instead of plain text. Published 10/18/11. Updated 10/18/11. Changelog Donate More info",
"keywords": ["computer","management","markdown","programming","source","spotlight","again","changelog","donate","download","markdown","plugin","published","spotlight","unzip","updated","affected","avail","below","bodies","break","coming","content","convinced","couldn","couple","culprit","default","digging","directly","document","doing","duplicated","emails","errantly","evening","experiment","extension","external","figured","files","force","getting","hacked","handle","happening","import","imported","importer","importers","index","indexing","interesting","little","marked","mdimporter","mdimporters","metadata","noticed","original","people","perfectly","plist","plists","problem","quick","readers","registered","renamed","returning","schema","script","searches","seeing","short","showed","solution","source","started","stopped","system","testing","through","throughout","trick","turned","wanted","whatever","within","worked","works","wouldn"]
},{
"title": "Flickery and ScreenFloat 60% off",
"url": "/2011/10/16/flickery-and-screenfloat-60-off/",
"tags": ["macappstore"],
"date": "Oct 16th, 2011",
"ts": "1318783140",
"summary": "I m buried in a little project I m calling Pinboard Beyond this weekend (it s Instapaper Beyond for Pinboard ). I thought I d take a little break, though, and let you know that two apps from Eternal Storms (creator of Yoink ) are on sale right now at 60% off on the Mac App Store. Flickery on the Mac App Store ($3.99) ScreenFloat on the Mac App Store ($2.99)",
"keywords": ["apple","flickr","google","instapaper","macintosh","pinboard","store","beyond","eternal","flickery","flickr","instapaper","pinboard","screenfloat","store","storms","yoink","break","brilliantly","buried","calling","creator","details","discounts","favorite","little","penny","price","project","right","simple","thought","tools","utility","weekend","worth","wrote"]
},{
"title": "Natural language dates for TextExpander",
"url": "/2011/10/15/natural-language-dates-for-textexpander/",
"tags": ["naturallanguage","snippet","textexpander"],
"date": "Oct 15th, 2011",
"ts": "1318676760",
"summary": "I had a strong urge to make a new TextExpander snippet this morning. I think the Date Math features of TextExpander that Donald Curtis turned me on to with his Date Time group got me thinking. I find my OS X Service for natural language date conversion pretty handy. I think TextExpander could make it handier, though, with the form fill feature and a little more flexibility. I ve added the new snippet to the Tools group in the TextExpander Project , so TextExpander users can grab the download or self-updating URL and play with it. It accepts most basic date language. today , tomorrow , 3 days , 2 days ago , next tue , last fri , etc. I added a couple of checks. If you use a plus (+) or minus (-) sign followed immediately by a number and that s all, it will just add or subtract that many days from the current date. The plus sign is optional, it will work with just 3 to give you the date 3 days from now. If the words am , pm , noon , midnight , hours or minutes are in your string, it will add the time string to the formatted output. This one runs on PHP, so it s ready to use with your built-in tools and has no additional dependencies. There are a few things you can edit (and probably should) once you have it open in TextExpander. First, set the timezone correctly for your location in the third line. The next line has the primary date format, which defaults to l, M jS, Y , like this: Saturday, Oct 15th, 2011. The line after that is the string that s appended if you use a phrase that triggers a time for the output, defaulting to \\a\\t g:ia which comes out as at 3:00pm . The $debug parameter can be set to 0, 1 or 2. At zero, if your string fails to translate it will fail silently. At 1, it will return the phrase Derp where you meant to paste the date. I figure some feedback is better than none at 3 it will give you the Derp and a Growl notification if you have installed. You can just install this from the project page , but here s the code if your curious. This looks a little different than what you see in the snippet, I ll show you why in a second. Because we re using the newly-shell-script-friendly Fill feature, normally the entire script would show up in the fill box. That s ugly. If we add some spacing before and after the Fill placeholder, we can clear most of the excess out. Like so:",
"keywords": ["dropbox","growl","howbert","locator","resource","script","shell","textexpander","because","curtis","donald","first","growl","hopefully","looks","project","saturday","service","setup","textexpander","tools","accepts","added","appended","basic","before","built","checks","clear","comes","conversion","correctly","couple","curious","debug","defaulting","defaults","dependencies","different","download","entire","fails","feature","features","feedback","figure","flexibility","followed","format","formatted","friendly","group","handier","handy","hours","install","installed","language","little","location","looks","meant","midnight","minus","minutes","morning","natural","newly","normally","notification","optional","output","parameter","paste","phrase","placeholder","primary","project","ready","return","script","second","shell","silently","snippet","spacing","string","strong","subtract","think","thinking","third","timezone","today","tomorrow","tools","translate","triggers","turned","updating","useful","users","using","where","words"]
},{
"title": "Quick Tip: MindManager to (clean) HTML",
"url": "/2011/10/14/quick-tip-mindmanager-to-clean-html/",
"tags": ["mindmapping","quicktip"],
"date": "Oct 14th, 2011",
"ts": "1318596000",
"summary": "Quick tips are random posts regarding something I discovered on my way to something bigger. They usually get longer than quick would imply, for which I refuse to apologize. I have this crazy idea for an interactive blog post using an embedded MindMeister mind map. It basically allows me to explore a topic infinitely and in more detail than I would normally consider readable. It also allows me to organize in ways that I can t in regular prose. The end result would be a post where I could expound on each topic as much (or as little) as I wanted, and you could drill down to topics you were interested in. You d see my train of thought and the connections I was making. I have a couple of these started, and I think they ll go over well once I get one finished and posted. There s a downside, though Indexing takes a big hit. My own local search and external search engines will have nothing to work off of. This is bad news when you re investing as much time as I have been in putting the posts together. I kludged together a solution this morning it has applications beyond this project so I thought I d share. Basically, I wanted to take my mind map and turn it into Markdown/HTML for inclusion after the map. I needed to include all of my notes and keep things nested like the original map. The process I came up with loses hyperlinks, but maintains the text nicely. The script below is a quick hack designed to work with Mindjet MindManager text output with Format as outline checked. I exported my current map from MindMeister in .mmap format and imported it in MindManager, then exported to the formatted text. The output looks like this: Sub-lists are indented to become nested lists, and notes are indented such that they become a paragraph (or series of paragraphs) within the preceding list item. Works like a charm, though I m sure the script doesn t account for a lot of possible situations. If you re looking for a quick way to get clean HTML out of your mind maps, this is one path you can try. Why not OPML? Because I couldn t get any mind mapping apps to include my notes in the export. I needed those. In my final MindMeister map, hovering over a node will pop up its note in a floating window, which is really handy for explaining things while keeping the map smaller. If you know a way to get any of the major mind mapping apps to handle notes in OPML, I m curious.",
"keywords": ["github","mindjet","mindmeister","textmate","because","format","indexing","markdown","mindmanager","mindmeister","mindjet","quick","works","account","allows","apologize","applications","below","beyond","bigger","charm","checked","clean","connections","consider","couldn","couple","crazy","curious","designed","detail","discovered","doesn","downside","drill","embedded","engines","explaining","explore","export","exported","expound","external","finished","floating","format","formatted","handle","handy","hovering","hyperlinks","imported","inclusion","indented","infinitely","interactive","interested","investing","keeping","kludged","lists","little","local","longer","looking","looks","loses","maintains","major","making","mapping","morning","needed","nested","nicely","normally","notes","nothing","organize","original","outline","output","paragraph","paragraphs","possible","posted","posts","preceding","process","project","prose","putting","quick","random","readable","refuse","regular","script","search","series","share","situations","smaller","solution","started","takes","think","thought","together","topic","topics","train","using","usually","wanted","where","while","window","within"]
},{
"title": "Web excursions: October 4, 2011 - October 12, 2011",
"url": "/2011/10/12/web-excursions-october-4-2011-october-12-2011/",
"tags": ["bookmarks"],
"date": "Oct 12th, 2011",
"ts": "1318440660",
"summary": "Links of interest from October 4, 2011 through October 12, 2011: print.css only display what s needed Very funny. jwerty - Awesome handling of keyboard events This sweet little JavaScript library is being mentioned everywhere, so why not here? It s a complete key event handler with the ability to assign events to keystrokes, ranges of keys, key sequences and more with very simple syntax. Works with but does not require jQuery. Leaky Websites From Refined Shot, disturbing news about email collection practices on 185 top websites (times what, about 7?). Trust no one. Raven for Mac - The Smart Browser Ok, this looks cool. Essential jQuery Plugin Patterns Great coverage of patterns with skeleton starters for jQuery plugin programming. A collection of sensible defaults for OS X Lion All the handiest Lion defaults settings in one collection. Great for reference, or just run the whole script (after you review the changes, of course).",
"keywords": ["cascading","formats","javascript","jquery","languages","library","programming","sheets","style","awesome","browser","essential","great","javascript","leaky","links","patterns","plugin","raven","refined","smart","websites","works","ability","assign","changes","collection","coverage","defaults","display","disturbing","email","events","everywhere","funny","handiest","handler","handling","interest","jquery","jwerty","keyboard","keystrokes","library","little","looks","mentioned","needed","patterns","plugin","practices","print","programming","ranges","script","sensible","sequences","settings","simple","skeleton","starters","syntax","through","times","websites","whole"]
},{
"title": "Marked 1.3 drawing winners",
"url": "/2011/10/11/marked-1-3-drawing-winners/",
"tags": ["giveaway","marked","otask"],
"date": "Oct 11th, 2011",
"ts": "1318357440",
"summary": "Congrats to the winners (who should already have been notified by email)! The rest of you should pony up that four bucks and help a dev out ! I apologize for the lack of posts this week, I m working on a few things at once and time has not been my friend. I ll be back up to posting more by the end of the week. In the meantime, I ll link a few golden oldies as a cheap way out of coming up with anything moderately intelligent to share: If you need further entertainment in the meantime, be sure to sift through the recent web excursions for other sources of code and inspiration I ve found out and about lately.",
"keywords": ["markdown","omnifocus","textmate","check","congrats","dates","gabriel","hyndman","language","macros","markdown","marked","natural","omnifocus","textmate","apologize","bucks","cheap","coming","comments","email","entertainment","excursions","found","friend","giveaway","golden","handy","inspiration","intelligent","linked","lists","meantime","mobile","moderately","names","notified","oldies","posting","posts","recent","service","share","sources","teleprompter","through","verification","winners","working"]
},{
"title": "Marked 1.3 released, plus 5 free copies!",
"url": "/2011/10/07/marked-1-3-released-plus-5-free-copies/",
"tags": ["macappstore","markdown","marked","multimarkdown"],
"date": "Oct 7th, 2011",
"ts": "1318000080",
"summary": "Marked 1.3 just made it up onto the Mac App Store ! It incorporates a few fixes and some cool new features. So cool, in fact, that I raised the price to a whopping $3.99. I m hoping the fact that it now functions as a mini web development tool and handles multiple custom styles makes it worth the extra buck to other folks, too. The full changelog is up on the newly-revamped Marked website . Be sure to check out the snazzy new introductory video on the main page, too. I m thrilled that Marked has exceeded my initial sales expectations by 50x as of yesterday. As a thank you, I m doing my own giveaway: 5 promo codes for a free copy of Marked. If you already own it, enter anyway and if you win give your promo code to a friend or family member you think could benefit from a full-featured Markdown utility! Just leave a comment about Marked below and I ll do my usual super-random selection of 5 winners on Tuesday, October 11th at noon Central. Good luck! By the way, if you want to file a bug report, suggest a feature or ask a question, be sure to visit the support site .",
"keywords": ["apple","macintosh","macupdate","markdown","store","central","markdown","marked","store","tuesday","anyway","below","benefit","changelog","check","codes","comment","custom","development","doing","enter","exceeded","expectations","extra","family","feature","featured","features","fixes","folks","friend","functions","giveaway","handles","hoping","incorporates","initial","introductory","leave","makes","member","multiple","newly","price","promo","raised","random","report","revamped","sales","selection","snazzy","styles","suggest","super","support","thank","think","thrilled","utility","video","visit","website","whopping","winners","worth","yesterday"]
},{
"title": "Thanks, Steve",
"url": "/2011/10/05/thanks-steve/",
"tags": ["apple","steve"],
"date": "Oct 5th, 2011",
"ts": "1317870360",
"summary": "I m barely qualified to write about Steve Jobs. I ve only been a Mac lover for about 8 years when I was younger I laughed at Mac users. When I started using Apple products, I only knew Steve Jobs as a name. In the past few years, though, I ve witnessed the genius and discipline that Steve Jobs injected into Apple, and I ve come not only to respect him, but to consider him a personal hero. I can t express how deeply saddened I am that he s gone. Steve Jobs and his work changed the course of my life. I m grateful. Thank you, Steve.",
"keywords": ["apple","isaacson","macintosh","manga","products","romae","steve","thermae","timeline","walter","apple","steve","thank","barely","changed","consider","deeply","discipline","express","genius","grateful","injected","laughed","lover","personal","products","qualified","saddened","started","users","using","witnessed","write","years","younger"]
},{
"title": "The QuickCal winners",
"url": "/2011/10/05/the-quickcal-winners/",
"tags": ["giveaway"],
"date": "Oct 5th, 2011",
"ts": "1317838020",
"summary": "We had a record number of entries on the QuickCal drawing . I had to update my scripts a little to handle the larger-than-expected numbers, more on that after the good part. Without further ado, here s the list of lucky winners. If you didn t receive your code or have any trouble redeeming it, don t hesitate to contact me . Sorry for any confusion caused by the errant post about 10 minutes ago. I got a test run confused with the final output from the script. My bad, sorry. Congratulations! The names are linked to the original comment so you can check and make sure it was you. Or not you, if luck was not on your side. As far as the scripts go, I found a much, much better algorithm for collecting a set number of unique random integers from a given range: No recursion, so it s about exponentially faster (and doesn t run into stack depth errors). I also modified the script to output a Markdown list of the winners with the url of their comments so there s no question when people have the same first name and don t enter a last name.",
"keywords": ["chuck","languages","markdown","programming","quickcal","scripts","chuck","congratulations","markdown","norton","quickcal","script","sorry","steve","terry","algorithm","bizmar","caused","check","collecting","comment","comments","confused","confusion","contact","depth","derek","doesn","drawing","enter","entries","errant","errors","expected","exponentially","faster","first","found","handle","hesitate","integers","larger","linked","little","lucky","minutes","modified","names","numbers","original","output","people","random","range","receive","record","recursion","redeeming","script","scripts","sorry","stack","trouble","unique","winners"]
},{
"title": "Bash auto-complete for running applications",
"url": "/2011/10/04/bash-auto-complete-for-running-applications/",
"tags": ["experiments","scripting","terminal"],
"date": "Oct 4th, 2011",
"ts": "1317769080",
"summary": "I m not up for doing a full Bash autocomplete tutorial tonight, but wanted to share something I figured out instead of eating lunch. Here it is with a modicum of explanation. I ve been using Jon Stovell s quit script to stop running applications with various save options as part of tweaking a safer universal computing setup with Dropbox . For various reasons I found myself wanting to autocomplete application names, but only ones that were currently running. This technique could be used for any command line tool that runs on running, windowed applications. This version doesn t do anything for faceless processes, but I ll show you that in a minute. A short version to start with. You can run a long one-liner in .bash_profile to return an array of running apps using (AppleScript) and pass it to with the parameter to accept the variable instead of a function: This works but isn t case insensitive, and I m never satisfied until things are as lazy as possible. The script below is in along with my app name completion script for launching (as mentioned in the Bash version of my Get an App s Icon series ). You could just as easily add it to your , but it s easier for me to keep track of if it s external. It starts start by setting up a few variables to read what the completion command provides as partial text and preceding words. Then it runs the same AppleScript 1 from before, except that by running it through a function we re taking control of the matching process. Thus, we can use for case-insensitive matching. We set $COMPREPLY to the result and it s read in by the auto-complete on the command line. In the command at the end, note that it s only currently setting up completion for the command. Just change to something else if you re using it for something else. You can also do something similar with all running processes, handy for commands like . This could also be easily converted to a one-liner like the first script above, but just for the sake of laziness: The reports all running processes with just their executable name. The after it grabs the executable names from each line. They re passed as a list to which removes duplicates and sorts them in alphabetical order. The first grep removes processes beginning with ( or - so we can exclude private and terminal commands. There are still plenty of lines autocompleting that you really don t want to kill, but hey, the command line can be a dangerous place. The last grep does our case-insensitive",
"keywords": ["applescript","command","dropbox","interface","sensitivity","applescript","bonus","compreply","dropbox","stovell","above","accept","alphabetical","applications","array","autocomplete","autocompleting","before","beginning","begins","below","break","change","command","commands","completing","computing","control","converted","dangerous","doesn","doing","duplicates","easier","easily","eating","except","executable","explanation","external","faceless","figured","finds","first","found","function","grabs","handy","hunger","hungry","insensitive","launching","laziness","liner","login","lunch","lunchtime","manipulation","match","matching","mentioned","minute","modicum","myself","names","options","pains","parameter","partial","passed","plenty","possible","preceding","private","process","processes","profile","provides","reasons","removes","reports","return","running","safer","satisfied","script","series","setting","setup","share","short","similar","sorts","starts","string","taking","technique","terminal","through","tonight","track","tutorial","tweaking","universal","using","variable","variables","various","version","wanted","wanting","windowed","words","works"]
},{
"title": "Web excursions: October 3, 2011 - October 4, 2011",
"url": "/2011/10/04/web-excursions-october-3-2011-october-4-2011/",
"tags": ["bookmarks"],
"date": "Oct 4th, 2011",
"ts": "1317744000",
"summary": "Links of interest from October 3, 2011 through October 4, 2011: debugCSS.css Handy stylesheet from Yahoo for quickly finding legacy/malformed markup in HTML documents. bcat pipe to browser utility So fun. Tips and tricks for Terminal in OS X I swear I ve bookmarked this before, but I m discovering new tricks all over again. mroth/lolcommits - GitHub If nothing else, some creative fun to be had with git-hooks. API Reference - Sublime Text 2 Documentation This is relatively insane. In a good way.",
"keywords": ["formats","github","interface","programming","sublimetext","tools","tricks","yahoo","github","handy","links","sublime","terminal","yahoo","again","before","bookmarked","browser","creative","debugcss","discovering","documents","finding","hooks","insane","interest","legacy","lolcommits","malformed","markup","mroth","nothing","quickly","relatively","stylesheet","swear","through","tricks","utility"]
},{
"title": "When plain text is wrong",
"url": "/2011/10/03/when-plain-text-is-wrong/",
"tags": ["brainstorming","mindmapping","productivity"],
"date": "Oct 3rd, 2011",
"ts": "1317662220",
"summary": "If you ve read any of my writing or looked at any of my projects, you re probably fully aware of the nerd wood I get for plain text. You know, the stuff that s been around since the dawn of the computer and will still be around when there s not an application left that can open a DOCX file. I have to admit, though, that there are some things I can t and don t want to do in plain text. Plain text is good at storing pieces of information in a linear format. That s what most of us do most of the time, so it s a really fun (and potentially useful) thing to nerd out about. I do. A lot. But even among plain text fanatics there are always lines that have to be drawn. Some jobs require Microsoft Word for a final publication, sometimes an HTML email needs to be sent, hell, almost all of our Markdown at some point ends up as rich text for one purpose or another. The beauty of Markdown is that I can keep the source documents clean and just keep generating different output for different needs. That s neat, and it s what makes MultiMarkdown and apps like Marked so useful. I don t currently do any writing or work that requires anything other than a last-minute HTML conversion from text, so my line gets drawn a little further out. I even get away with sending raw Markdown in my emails (don t judge, it s really very readable and totally predictable cross-platform). The line for me, though, is at brainstorming. It is, in my mind, impossible to effectively brainstorm in a text file. If you use a format that s even slightly more flexible than a typewriter, you ll get better results. A whiteboard, for example. A Moleskine you can doodle around in. In my case, mind maps. Hand drawn or created on the computer, concept map or mind map, it doesn t matter. It beats text hands down. Radiant thinking, as Tony Buzan coined it, is impossible to accomplish in a linear list format. A text file doesn t allow you to continue multiple branches of thought simultaneously. Maybe if you had a dozen windows or split panes open in your editor and could jump around from section to section working on a bunch of indented markdown lists but you d still be less productive than I am in any mind mapping setting. I can almost guarantee it. I might be projecting, but I just don t think the human brain works that way. For me, it has nothing to do with pretty branch colors and tweaking font sizes. I ll admit, if I m presenting a map I like it to be pretty (maybe even stunning), but the number",
"keywords": ["buzan","markdown","microsoft","multimarkdown","buzan","hopefully","jumping","markdown","marked","maybe","microsoft","moleskine","multimarkdown","radiant","turns","adding","admit","allow","almost","among","another","aware","beats","beauty","brain","brainstorm","brainstorming","branch","branches","bunch","clean","coined","colors","coming","computer","concept","continue","conversion","created","cross","details","different","documents","doesn","doodle","dozen","editor","effectively","email","emails","example","extending","fanatics","files","flexible","format","found","fully","generating","guarantee","hands","human","ideas","impossible","indented","information","initial","judge","linear","lists","little","looked","makes","mapping","markdown","maybe","minute","multiple","myself","needs","nodes","nothing","output","panes","pieces","platform","point","pondering","popped","potentially","predictable","prefer","presenting","productive","projecting","projects","publication","readable","requires","results","section","sending","setting","simply","simultaneously","since","sizes","slightly","sometimes","source","spent","split","storing","structure","stuff","stunning","think","thinking","thought","totally","tweaking","typewriter","useful","wasting","whiteboard","windows","working","works","wouldn","writing"]
},{
"title": "What? You want QuickCal for free? Ok.",
"url": "/2011/10/03/what-you-want-quickcal-for-free-ok/",
"tags": ["giveaway","macos"],
"date": "Oct 3rd, 2011",
"ts": "1317651780",
"summary": "Yet another giveaway here at brettterpstra.com. We re wheeling, we re dealing and I got you five licenses for the excellent QuickCal application for Mac (and iOS, but we re not giving those out yet). If you haven t used it, it s a way to add events and todos to your calendar using natural language. I could say, for example, End the QuickCal giveaway noon on Wednesday and I d get a new calendar event set for noon on Wednesday, October 05, 2011 with the title End the QuickCal giveaway. I wrote about a recent version at TUAW if you re looking for more in-depth coverage. Trust me when I say this is one of those apps that can change the way you work with your calendar. It works with iCal, BusyCal and Google Calendar and includes conflict detection and smart reminders. Leave a comment for a chance to pick up a free license! The drawing will occur on Wednesday at noon.",
"keywords": ["busysync","calendar","google","quickcal","vimeo","busycal","calendar","google","leave","quickcal","vimeo","wednesday","another","brettterpstra","calendar","chance","change","comment","conflict","coverage","dealing","depth","detection","drawing","events","example","excellent","giveaway","giving","happen","haven","includes","language","license","licenses","looking","magic","natural","occur","recent","reminders","smart","title","todos","using","version","video","watch","wheeling","works","wrote"]
},{
"title": "Web excursions: September 29, 2011 - October 2, 2011",
"url": "/2011/10/02/web-excursions-september-29-2011-october-2-2011/",
"tags": ["bookmarks"],
"date": "Oct 2nd, 2011",
"ts": "1317614400",
"summary": "Links of interest from September 29, 2011 through October 2, 2011: Quickly open unlinked URLs in Terminal Neat Lion trick. iTerm2 already does this for me, but it s really cool to see it baked in. Touch .js Mouse event to touch event mapping for testing touch interfaces with desktop browsers. Clean URLs with Mac OS X Server It s annoying that there s no global setting for this. Anyone know where it might be? Apple H.264 vs. x264 in ScreenFlow better exports? I used the settings for x264encoder in a project (with a few modifications) and got some of my best h.264 results ever. Incredibly Useful CSS Snippets A handy compilation for web designers new and old.",
"keywords": ["apple","cascading","javascript","locator","resource","screenflow","server","sheets","style","anyone","apple","clean","incredibly","links","mouse","quickly","screenflow","server","snippets","terminal","touch","useful","annoying","baked","browsers","compilation","designers","desktop","encoder","exports","global","handy","iterm","interest","interfaces","mapping","modifications","project","results","setting","settings","testing","through","touch","trick","unlinked","where"]
},{
"title": "Forget about it. Or not.",
"url": "/2011/10/02/forget-about-it-or-not/",
"tags": ["logging","macos","notes","productivity","tagging"],
"date": "Oct 2nd, 2011",
"ts": "1317596820",
"summary": "I forget a lot of things. I forget how I did something, or where I found an answer, or where I put my glasses. I use technology to help with that to some extent, and Notational Velocity/nvALT are excellent at helping me find previous notes, assuming I bothered to take them. I keep a log in VoodooPad , especially when I m up late enough at my computer that I might not remember what I was working on in the morning. That s handy, the search is excellent, and gathering tagged entries together on one page automatically is sweet. After a couple of years of doing it religiously, though, I ve found that I rarely reference anything beyond the previous day or two. I rarely go back because the things I log aren t knowledge , just activities. My logging system lacks the details I need to remember exactly how I did what I did. That s my own fault, of course, but I needed a system that would build an environment-agnostic knowledgebase for remembering all the things I tend to forget. Thus, I ve been playing with an idea. I m building a collection of plain-text notes (primarily using nvALT with notes saved to a Dropbox folder) where the title of the note is the question I think I would ask myself long after I ve forgotten the answer. The content of the note is the answer in its briefest form, including commands, filenames, urls and whatever is necessary to get me back on the right track. I can query these notes quickly from the command line ( or ), as well as from LaunchBar and Alfred. Adding new notes can be done just as easily from the same sources. The text files are stored among all of my nvALT notes (with a special prefix to easily separate them), so it automatically benefits from Notational Velocity-style searching and editing. One of the reasons I prefer to store my nvALT notes as plain text files is that I have access to them from Spotlight and ( man page ). Spotlight allows me to query a little more intricately, separating tags from titles and titles from content in a way that nvALT currently can t. is the crux of this system. You can store all you want in plain text and feel great about it, but the ease of querying any information system is the measure of its worth. I like tagging . I ve found that tagging isn t the solution for my forgetfulness, though. It s been extremely helpful in tracking projects across multiple folders, but not so much in dealing with aged notes. I m as likely to forget a tag I associated as I am anything else. Extra, more",
"keywords": ["command","dropbox","interface","launchbar","notational","spotlight","velocity","voodoopad","actions","adding","alfred","applescript","changelog","donate","download","dropbox","extra","gmail","github","includes","launchbar","notational","published","quickquestion","readme","right","spotlight","updated","velocity","voodoopad","while","works","access","accessible","across","actions","activities","adding","agnostic","alias","allows","among","answer","associated","assuming","automatically","available","based","because","begin","below","benefits","beyond","bothered","briefest","bucket","build","building","bunch","check","collection","comfort","command","commands","computer","connect","conscious","content","couple","curious","database","dealing","definite","details","determination","direct","discoveries","doing","download","easily","editing","effort","enough","entries","environment","especially","excellent","extensions","extra","fault","feeble","fiddling","filename","filenames","files","folder","folders","forget","forgetfulness","forgotten","fouling","found","functions","gathering","glasses","great","handy","having","helpful","helping","important","including","information","inside","installation","interface","intricately","keeps","keywords","knowing","knowledge","knowledgebase","lacks","later","likely","little","logging","looks","measure","memory","method","morning","multiple","myself","necessary","needed","neurons","notes","nvalt","output","pending","piling","playing","portable","practices","prefer","prefix","primarily","problem","process","projects","query","querying","quickly","rarely","readily","reasons","religiously","remember","remembering","right","saved","scripts","search","searching","seems","separate","separating","solution","solved","sources","special","standalone","store","stored","style","syncable","syntax","system","tagged","tagging","technology","think","thinking","through","title","titles","together","track","tracking","trick","universal","usage","using","verbose","verbosity","whatever","where","whole","working","worth","years"]
},{
"title": "Automating random giveaways, v1.0",
"url": "/2011/10/01/automating-random-giveaways-v1-0/",
"tags": ["applescript","automation","scripting"],
"date": "Oct 1st, 2011",
"ts": "1317489300",
"summary": "To pick the winners for the Yoink and Listary giveaways, I wrote an AppleScript to make the process completely random and as painless as possible for me. I still have plans for making a similar WordPress plugin, but that s still in the planning stages. For now, this is working quite well and I thought I d share it. I doubt many people have the exact same setup and requirements, but the basic structure might be helpful for other projects. It s designed to work with promo code giveaways. So far, that s what my giveaways have been. If I end up running a giveaway with a different registration method, I ll extend the script and post an update for anyone interested. This method currently has two requirements/limitations based on my own needs and setup. First, it only works with Mail.app for collecting entries and sending notifications. Second, the regular expressions it uses to find the entrants name, email and IP address are based on the standard WordPress comment notification emails. The basic idea here could easily be applied to other AppleScript-able email applications and modified to parse any format, but I ll leave that up to intrepid readers for now. First, I do a search for the subject line in Mail. All of the comment notifications that WordPress sends me for the post have the same subject line, so that gathers them all very quickly. All that matters is that I can select them all before running the script. Next, I run the AppleScript. It begins by asking me for the giveaway app s name and requests my list of promo codes. Then the script pulls the names and the message content from each selected email, passing the information to a Ruby script which scans the content for the actual email address (necessary because the actual sender on the email is always my WordPress address) and entrant s name/handle and IP. The list of results are then passed to a second Ruby script along with the promo codes. This script checks for duplicates in the emails and IPs, picks enough random numbers (range 0 - number of entrants) to match each code provided (recursive function to avoid duplicate numbers). The Ruby script then opens a new message in Mail.app for each winner, and populates it with recipient, subject, congratulatory message (including code) and signature. It also adds the mailto: link with all of this info to an HTML file on the Desktop for reference. It needs some improvements, especially in the mail creation routine. It currently uses the AppleScript",
"keywords": ["applescript","listary","programming","safari","script","shell","wordpress","applescript","desktop","first","listary","second","wordpress","yoink","address","allow","anyone","anyway","applications","applied","asking","automate","automation","avoid","based","basic","because","before","begins","checks","codes","collecting","command","comment","completely","confirm","congratulatory","content","contest","create","creation","designed","different","doubt","duplicate","duplicates","easily","elegant","email","emails","enough","ensuring","entrant","entrants","entries","especially","exact","expressions","extend","extractemail","format","function","gathers","giveaway","giveaways","gritty","handle","handling","helpful","improvements","including","information","interested","intrepid","leave","limitations","mailto","making","match","matters","message","method","modified","names","necessary","needs","nitty","notification","notifications","numbers","opens","outgoing","painless","parse","parts","passed","passing","people","picks","pickwinners","planning","plans","plugin","point","populates","possible","process","projects","promo","pulls","quickly","random","randomness","range","readers","recipient","recursive","registration","regular","requests","results","routine","running","scans","script","search","second","selected","sender","sending","sends","setup","share","signature","similar","solution","stages","standard","structure","thought","winner","winners","working","works","wrote"]
},{
"title": "Listary giveaway winners",
"url": "/2011/10/01/listary-giveaway-winners/",
"tags": ["giveaway"],
"date": "Oct 1st, 2011",
"ts": "1317488940",
"summary": "The Listary giveaway has ended, and the five lucky entrants have been sent their promo codes. If you re on the list below and didn t receive a notification (and you ve checked your Spam folder), contact me and we ll get it sorted out. If you didn t win but still need an outstanding syncing list app, be sure to check out the Listary homepage . Congrats, watch for more reviews and giveaways coming soon!",
"keywords": ["address","broflovski","email","explorer","listary","windows","ammon","congrats","curtis","donald","listary","marco","peter","below","check","checked","codes","coming","contact","ended","entrants","folder","giveaway","giveaways","homepage","lucky","notification","promo","receive","reviews","sorted","syncing","watch","winners"]
},{
"title": "Visualize your Twitter stream topics",
"url": "/2011/09/29/visualize-your-twitter-stream-topics/",
"tags": ["experiments","twitter"],
"date": "Sep 29th, 2011",
"ts": "1317320220",
"summary": "I worked out a somewhat cool trick this morning using Twitter, some PHP and Wordle.net . If you re curious to see what the major topics of conversation are in your Twitter stream right now, follow the instructions below. It currently piggy backs off of a dead project (JustTheLinks) I was working on, so it needs some polish before it s presented as any kind of usable service. Before I put too much time into it, though, I wanted to get some reactions. Sign in using Twitter at http://justthelinks.com . Ignore the fsck d up project that comes up after sign-in. Go to this page . Copy all of the text on the page into your clipboard. Go to Wordle and paste the text into the textarea at the top (the one that says Paste in a bunch of text ). Press Go. Adjust your layout and colors as desired (or just hit randomize until you like it). I recommend going to Layout- Maximum Words and setting it to 300 or so. My service grabs as many of the recent tweets from your stream as it can, then removes @names, excess punctuation and links. Then it lowercases and spits back the remaining text. The stream will include tweets from everyone you follow (excluding you), giving you a very good idea what topics are hot among your chosen group of Tweeps. Let me know how it goes. I m thinking about doing a much simpler word cloud output by default, but someone s probably already beat me to that. I just like seeing if I can do the things that pop into my head. Yes, because there s something fundamentally wrong with my brain.",
"keywords": ["cloud","communities","facebook","login","networking","online","social","twitter","wordle","adjust","before","ignore","justthelinks","layout","maximum","paste","press","tweeps","twitter","wordle","words","among","backs","because","before","below","brain","bunch","chosen","clipboard","cloud","colors","comes","conversation","curious","default","desired","doing","everyone","fundamentally","giving","going","grabs","group","instructions","justthelinks","layout","links","lowercases","major","morning","names","needs","output","paste","piggy","polish","presented","project","punctuation","randomize","reactions","recent","recommend","remaining","removes","right","seeing","service","setting","simpler","somewhat","spits","steps","stream","textarea","thinking","topics","trick","tweets","usable","using","wanted","worked","working","wrong"]
},{
"title": "App Review: Gradient",
"url": "/2011/09/29/app-review-gradient/",
"tags": ["appreview","webdesign"],
"date": "Sep 29th, 2011",
"ts": "1317301200",
"summary": "Gradient is a very polished tool for creating CSS3 gradients in a visual way. If you re not familiar with CSS3 syntax, it looks a little like this: In order to make your gradients show up in as many browsers as possible, that s what you need to do. It s kind of a pain no matter how you look at it. Gradient, on the other hand, makes it a breeze. You select start and stop colors using the standard Apple color picker or by manually inputing values. You choose linear or radial gradient with a slider, and then tweak direction and point of origin with a grid of buttons. You can choose which browsers you want to support, then just hit the Copy button and your code is in your clipboard. Simple, effective and it looks great. Gradient can run in menubar only mode (hide the Dock icon), which has the added benefit of being able to pop up while in a Lion fullscreen mode without switching spaces. The only current downside to Gradient, in my opinion, is that you can only have two colors and you can t tweak the stops for complex gradient effects. For 90% of the gradients I would use, though, Gradient solves the problem brilliantly. Gradient is currently free in public beta, so grab a copy to play with before the final release.",
"keywords": ["apple","cascading","color","colors","gradient","jquery","sheets","space","style","apple","gradient","simple","added","before","benefit","breeze","brilliantly","browsers","button","buttons","choose","clipboard","color","colors","complex","creating","direction","downside","effective","effects","familiar","fullscreen","gradient","gradients","great","inputing","linear","little","looks","makes","manually","menubar","origin","picker","point","polished","possible","problem","public","radial","release","slider","solves","spaces","standard","stops","support","switching","syntax","tweak","using","values","visual","while"]
},{
"title": "Marked Bonus Pack fix and Marked 1.3 progress",
"url": "/2011/09/28/marked-bonus-pack-fix-and-marked-1-3-progress/",
"tags": ["markdown","marked","multimarkdown","scripting"],
"date": "Sep 28th, 2011",
"ts": "1317250800",
"summary": "I just posted a minor update to the Marked Bonus Pack with a few bugfixes for the included Service and AppleScripts. The biggest fix is for the issue some people were having where running the Service would always open TextEdit. I was unable to replicate the problem, but I think I found a solution for it. The Bonus Pack currently includes scripts and commands for interacting with Marked from TextMate, Sublime Text 2, Emacs and Vim, as well as a System Service and AppleScript for opening the current file from Byword, TextEdit, Notational Velocity/nvALT and a fallback for just about any AppleScript-able application. Once everything is smoothed out to my satisfaction, the Service will likely be included as part of the Marked application, but for now it s a separate download. The next version of Marked (1.3) is in final beta testing with a few Snow Leopard bugs left to squash. I should be submitting it to the Mac App Store within the week. Version 1.3 updates to the latest MultiMarkdown build, adds Lion Fullscreen, opens any file extension, handles multiple custom styles, adds a few nice touches (including MathJax) to previews and more. I m really excited about it, I just want to make sure that all of the new features don t bring an equal number of new bugs with them. One feature I m especially excited about in 1.3 is the ability to watch a custom style s CSS file in addition to the Markdown (or HTML) file you re editing. Not only does this make creating custom styles much easier, it also opens Marked up to being to web designers what it already is to Markdown writers: a live preview for your HTML/CSS, no matter what editor you re working in. HTML5/CSS3 compatibility combined with the custom processor (which can be set to run the file through Ruby or PHP, too) makes it a handy addition to a web development toolkit. I m using it to design a revamp to the Marked website right now, in fact. If you haven t checked out Marked yet, take a look at the Marked website . I went overboard collecting all of the nice things people were writing and made the page pretty ugly with the press section, but I m working that out right now. I promise.",
"keywords": ["applescript","markdown","mathjax","multimarkdown","store","textedit","textmate","applescript","applescripts","bonus","byword","emacs","fullscreen","leopard","markdown","marked","mathjax","multimarkdown","notational","service","store","sublime","system","textedit","textmate","velocity","version","ability","biggest","bring","bugfixes","build","checked","collecting","commands","compatibility","creating","custom","design","designers","development","download","easier","editing","editor","especially","everything","excited","extension","fallback","feature","features","found","handles","handy","haven","having","included","includes","including","interacting","latest","likely","makes","minor","multiple","nvalt","opening","opens","overboard","people","posted","press","preview","previews","problem","processor","promise","replicate","revamp","right","running","satisfaction","scripts","section","separate","smoothed","solution","squash","style","styles","submitting","testing","think","through","toolkit","touches","unable","updates","using","version","watch","website","where","within","working","writers","writing"]
},{
"title": "Web excursions: September 23, 2011 - September 26, 2011",
"url": "/2011/09/26/web-excursions-september-23-2011-september-26-2011/",
"tags": ["bookmarks"],
"date": "Sep 26th, 2011",
"ts": "1317069960",
"summary": "Links of interest from September 23, 2011 through September 26, 2011: LastHistory Visualizing Last.fm Listening Histories and Personal Streams I love this app. Create a Responsive Web Design Template The basics of a responsive web design. Change Mobile Safari Highlight Color with CSS Nice. I need to pay more attention to the available Mobile Safari proprietary properties. Lots of nice touches in there. Scalable and Modular Architecture for CSS an evolving guide to CSS architecture by Jonathan Snook SMACSS is a way to examine your design process and as a way to fit those rigid frameworks into a flexible thought process. Yellow Fade Technique with CSS Animations The old 37signals yellow fade rebuilt with CSS animations. That was kind of redundant with the title, wasn t it? mmd2docx A script similar to the MMD to RTF script, using Libre/OpenOffice to create DOCX files. Courtesy of andrewheiss .",
"keywords": ["animation","animations","cascading","formats","jonathan","jquery","sheets","snook","style","animations","architecture","change","color","courtesy","create","design","highlight","histories","jonathan","lasthistory","libre","links","listening","mobile","modular","openoffice","personal","responsive","smacss","safari","scalable","snook","streams","technique","template","visualizing","yellow","andrewheiss","animations","architecture","available","basics","create","design","evolving","examine","files","flexible","frameworks","guide","interest","process","properties","proprietary","rebuilt","redundant","responsive","rigid","script","signals","similar","thought","through","title","touches","using","yellow"]
},{
"title": "Quick Tip: some .inputrc fun",
"url": "/2011/09/25/quick-tip-some-inputrc-fun/",
"tags": ["experiments","inputrc","quicktip","terminal"],
"date": "Sep 25th, 2011",
"ts": "1316958720",
"summary": "Quick tips are random posts regarding something I discovered on my way to something bigger. They usually get longer than quick would imply, for which I refuse to apologize. I was playing around with some options this morning, after reading this post on Reddit Commandline . A few of them wouldn t work for me, so I did some research into the version of Bash that comes with OS X. Specifically, I wanted to get to work in my file. is a cool feature where you bind a key combination and typing it cycles through available completions. It follows, then, that would cycle in the reverse order. It turns out you need a special escape sequence to pull this off on OS X. The above is working perfectly for me in iTerm2 on GNU Bash 3.2.48(1)-release-(x86_64-apple-darwin11). It will take a few days to decide if I prefer this completion to the normal Tab-complete behavior or whether I want to bind this to a secondary key combination. Either way, it s handy info to have. While I m on the subject, I was playing around with binding commands a while ago and added a couple to my which I ve found helpful. The following will bind Option-z to run followed by , returning you to the previous directory in your stack and doing a file listing in one keystroke: The in the command is the return key, so it s entering , executing with return, then repeating with . You could add any parameters you want () if you don t already have it aliased in your . The next one binds Option-x to to the folder that was the last argument in my previous command. If I run , then hitting Option-X will take me to and list its contents: Just some Terminal fun to be clear, all of the above commands would go into the file in your home folder. Create it if it doesn t exist, and be sure to restart your bash shell before trying them out.",
"keywords": ["command","directory","interface","keyboard","operating","shell","shortcut","system","binding","commandline","create","either","quick","reddit","shift","specifically","terminal","while","above","added","aliased","apologize","apple","argument","available","backward","before","behavior","bigger","binding","binds","characters","clear","combination","comes","command","commands","completions","contents","couple","cycle","cycles","darwin","decide","directory","discovered","doesn","doing","entering","escape","executing","exist","feature","folder","followed","follows","found","handy","helpful","hitting","iterm","keystroke","listing","little","longer","match","morning","normal","options","parameters","perfectly","playing","posts","prefer","quick","random","reading","refuse","release","repeating","requiring","research","restart","return","returning","reverse","secondary","sequence","shell","special","stack","through","tricker","trying","turns","typing","usually","version","wanted","where","while","working","wouldn"]
},{
"title": "Listary giveaway, get yours!",
"url": "/2011/09/24/listary-giveaway-get-yours/",
"tags": ["giveaway"],
"date": "Sep 24th, 2011",
"ts": "1316881740",
"summary": "The contest is over, winners will be announced soon! The developers of Listary have kindly handed me five promo codes to give away. Listary is a simple and flexible list-making iPhone app which syncs with Simplenote. I did a quick review of Listary yesterday and saw a very positive response from people already using it. As I mentioned, I have five promo codes that will be given away next Saturday. Leave a comment before 12pm CST on Saturday, October 1st to enter. Five people will be randomly chosen from the entries, doubles from the same email/IP will be discarded. Winners will be announced here and receive notification and their codes via email within 24 hours. Good luck!",
"keywords": ["handhelds","iphone","listary","simplenote","smartphones","leave","listary","saturday","simplenote","winners","announced","before","chosen","codes","comment","contest","developers","discarded","doubles","email","enter","entries","flexible","handed","hours","iphone","kindly","making","mentioned","notification","people","positive","promo","quick","randomly","receive","response","simple","syncs","using","winners","within","yesterday"]
},{
"title": "Web excursions: September 18, 2011 - September 23, 2011",
"url": "/2011/09/23/web-excursions-september-18-2011-september-23-2011/",
"tags": ["bookmarks"],
"date": "Sep 23rd, 2011",
"ts": "1316811600",
"summary": "Links of interest from September 18, 2011 through September 23, 2011: FitVids.JS A lightweight, easy-to-use jQuery plugin for fluid width video embeds. Markdown to RTF Automator Service An easy way to get from Markdown to RTF via an Automator Service. Hat tip to Lri . CSS Prototyping Stupendously great trick for working with styling CSS (especially typography) in the browser. RECOLL: a personal text search system for Unix/Linux Haven t tried this on a Mac yet, but sounds impressive. Monitor Wi-Fi with Lion s hidden tool A cool little wifi performance log built into Lion.",
"keywords": ["cascading","formats","jquery","markdown","sheets","style","technology","automator","fitvids","haven","links","linux","markdown","monitor","prototyping","recoll","service","stupendously","browser","built","embeds","especially","fluid","great","hidden","impressive","interest","jquery","lightweight","little","performance","personal","plugin","search","sounds","styling","system","through","trick","tried","typography","video","width","working"]
},{
"title": "iOS app review: Listary",
"url": "/2011/09/23/ios-review-listary/",
"tags": ["appreview","iphone"],
"date": "Sep 23rd, 2011",
"ts": "1316797200",
"summary": "The developers of Listary contacted me about working on some nvALT integration of their Simplenote-compatible iPhone app for creating lists that sync across any device or machine. I found the app cool enough that it s definitely worth a mention here. It s a simple concept: you create lists and sync them as plain text with Simplenote. It works similarly to TaskPaper there s a plain-text format for creating and checking off list items, but within the app you have a full GUI. You can use it for task lists, grocery lists, tracking movies you want to watch whatever you d normally keep in a list. Then it gets tagged as Listary and synced to Simplenote. When using Listary on the iPhone, you get features for adding and deleting items, manipulating order and checking off list items. Grab your list with nvALT or any Simplenote client (including the web app) and you can edit it as plain text, and your changes show up back in Listary. Nice. Listary is built for the iPhone, costs $2.99 and is available in the iTunes App Store .",
"keywords": ["automattic","iphone","listary","plaintext","simperium","simplenote","store","listary","simplenote","store","taskpaper","across","adding","available","built","changes","checking","client","compatible","concept","contacted","create","creating","definitely","deleting","developers","device","enough","features","format","found","grocery","iphone","itunes","including","integration","items","lists","machine","manipulating","mention","movies","normally","nvalt","simple","synced","tagged","tracking","using","watch","whatever","within","working","works","worth"]
},{
"title": "An unintentional 24-hour Internet break",
"url": "/2011/09/21/an-unintentional-24-hour-internet-break/",
"tags": ["personal","writing"],
"date": "Sep 21st, 2011",
"ts": "1316628660",
"summary": "I know, it sounds like one of those experiments that the productivity crowd subjects themselves to, just to see what happens. This was not intentional, premeditated or appreciated, though. A Charter (my ISP) truck showed up outside of our house yesterday afternoon, ostensibly to work on a neighbors connection. Suddenly, the Internet was no more. As the truck drove away, a correlation was made, but it was too late. An immediate call to Charter, 10 minutes of automated self-diagnosis and a service rep in another State failed to bring the truck back. Tomorrow, between one and three, they said to my wife. I called back, irate, trying not to swear as it began to sink in that their customer service setup was simply a buffer to keep people like me from talking to anyone who could actually do anything. A fence to keep out the rabid dogs, I suppose. What to do? I suppose we ve tried to make the best of it. We went for a nice walk around our new neighborhood. We ate a home-cooked meal at the dinner table, which is a rarity. We retired to the living room and watched something my wife tells me is called a DVD on our sorely neglected XBox. I had forgotten we had either around. That was all fine and good, but the next morning it really sunk in. I work from home which, as you can imagine (or well know), requires some connectivity to accomplish. Waking up without the Internet is neither convenient nor pleasant. My wife, who has recently returned to college at our local University, was rear-ended last week (please, keep your mind out of the gutter). Her truck was totaled, and we let the insurance folks tow it away this weekend. So we have one car, and we live at the top of a very, very tall bluff. Biking to a coffee house is out of the question, and if she dropped me off in the morning before class, I wouldn t be able to get back to the house during the much-anticipated service window. Even my cell phone coverage is intermittent, usually boosted by a broadband-driven MicroCell. So I composed a brief explanation of the situation and waited for an Edge signal to show up so I could send it to my co-workers. Then, I had a cup of coffee on the porch and enjoyed the view. I took a mid-morning nap, just because I could. Now, I m writing a leisurely piece about the whole thing, but I still have three hours before the service window opens up, and potentially another two hours after that before anything is fixed. I will, obviously, survive. It s been a stark reminder of",
"keywords": ["customer","internet","iphone","matchbox","mobile","phone","provider","service","biking","charter","cloud","conclusive","conveniences","conversely","debates","eventually","information","internet","marked","matchbox","microcell","nothing","saturday","shazam","spotify","suddenly","thanks","tomorrow","university","waking","wordpress","actions","afternoon","again","annoying","another","anticipated","anyone","apologize","appreciated","arises","artist","audio","automated","backup","because","beeping","before","began","between","blogging","bluff","boosted","bother","brain","breathing","brief","bring","broadband","buffer","burning","buzzing","called","camping","catalogs","child","choose","claim","class","clean","coffee","college","composed","connectedness","connectivity","consider","conspired","conveniences","convenient","conversation","cooked","correlation","coverage","crowd","curmudgeon","customer","dependent","depends","diagnosis","digital","dinner","discography","disconnected","distracting","doesn","doing","driven","dropped","drove","easier","easily","either","enamored","ended","enjoy","enjoyed","enjoying","entertainment","eventually","everyone","evidence","evidenced","exist","experience","experiment","experiments","explanation","failed","feeling","fence","fingertips","fixed","folks","forgotten","found","friends","fuzzy","garnered","gives","goodness","granted","gutter","happens","honest","horribly","hours","house","iphone","identify","ifttt","imagine","imagined","immediate","impulses","instantly","insurance","intentional","intermittent","irate","keeping","later","learn","leisurely","library","listen","listening","living","local","making","mentioned","minutes","morning","movie","movies","neglected","neighborhood","neighbors","neither","nvalt","obscure","occasionally","offline","often","online","opens","ostensibly","outage","outside","patience","patterns","people","phone","piece","planned","pleasant","point","pontificate","porch","possible","potentially","premeditated","presented","productivity","quiet","rabid","rarity","rather","realize","recently","regularly","remedied","remember","reminder","requires","response","resulted","retired","returned"]
},{
"title": "Web excursions: September 14, 2011 - September 17, 2011",
"url": "/2011/09/17/web-excursions-september-14-2011-september-17-2011/",
"tags": ["bookmarks"],
"date": "Sep 17th, 2011",
"ts": "1316271600",
"summary": "Links of interest from September 14, 2011 through September 17, 2011: Bash prompt tricks and tips I do love my bash prompts, and ther are some neat tricks in here. Responsive Design Testing Handy tool for quickly viewing a web page as it will appear on a range of mobile devices from 240px to 1024px. Facebook and CAPS-LOCK: Unintuitive security Interesting post on the case-insensitive Facebook password issue. Written by Jeff, whom I ve met, and can tell you is insanely smart. From brainstorm to outline: Why I use OPML Another great Macworld post from David Sparks. Markdown reference links in TextMate Some great tricks from Dr. Drang for more TextMate Markdown happiness.",
"keywords": ["device","facebook","google","mobile","sensitivity","textmate","another","david","design","drang","facebook","handy","interesting","links","macworld","markdown","responsive","sparks","testing","textmate","unintuitive","written","appear","brainstorm","devices","great","happiness","insanely","insensitive","interest","links","mobile","outline","password","prompt","prompts","quickly","range","security","smart","through","tricks","viewing"]
},{
"title": "Geeklet: Top CPU processes",
"url": "/2011/09/16/geeklet-top-cpu-processes/",
"tags": ["geeklet","geektool","nerdtool","scripting"],
"date": "Sep 16th, 2011",
"ts": "1316181600",
"summary": "Continuing the series of geeklets I ve been posting for GeekTool and NerdTool 1 , here s my Top CPU Processes monitor. This geeklet is pretty useful. It s effectively like running on your desktop (but without the overhead) to see what processes are currently taking up the most cycles on your CPU. It works best in combination with a 1 minute CPU load monitor . I set this geeklet to update every 5 seconds. Within 5 seconds, things can change a lot, but any process that is taking up a significant portion of the current load will generally stay at the top and offer a clear idea of what might be slowing things down. It generally keeps running when other things start hanging, so it s much more convenient than using Activity Monitor or at the command line. The script parses the command (process status, information about all of your processes). It uses the arguments to display all processes (including other users and processes without terminals) by their executable name, sort by CPU and limit the columns in the output to just the command name and CPU percentage. That handles the bulk of the work right there. The rest of my script simply pulls out the top processes, limiting the number to 10 and cutting it short if there are more than five processes listed at 0%. It color codes the output based on percentage, giving you red, yellow and blue lines if processes are above 10%, 20%, and 30%, respectively. It also justifies the output, truncating the process name if necessary and adding the percentage in parenthesis with a stretched space to right justify them. In order for the justification to work, you need to use a monospaced font such as Menlo or Droid Sans Mono (Inconsolata looks pretty good, too). The script accepts one command line argument: . If you leave that off, it will automatically put Top CPU processes and a newline at the top of the output. If you add without an argument after it, it will remove the title entirely. If you use it will replace the default with your custom title (and automatic newline). Any other customization (colors, removing justification) will require manually editing the script. You re on your own for that. Here s the script in its entirety. Just copy and paste it into a file called , place it in a script folder and make it executable (). Add the path to it as a shell geeklet and you re good to go. In NerdTool, you may need to specify that the output is colorized. Next up, the same type of system monitor, but for physical",
"keywords": ["central","command","geektool","inconsolata","interface","newline","processing","activity","continuing","drang","droid","geektool","inconsolata","menlo","monitor","nerdtool","processes","updated","within","above","accepts","adding","argument","arguments","article","automatic","automatically","based","called","change","clear","codes","color","colorized","colors","columns","combination","command","convenient","custom","customization","cutting","cycles","default","desktop","display","editing","effectively","entirely","entirety","executable","figure","folder","geeklet","geeklets","generally","giving","handles","hanging","including","information","justification","justifies","justify","keeps","leave","limit","limiting","listed","looks","manually","memory","minute","monitor","monospaced","necessary","newline","offer","output","overhead","parenthesis","parses","paste","physical","portion","posting","process","processes","pulls","remove","removing","replace","respectively","right","running","script","seconds","series","shell","short","significant","simply","slowing","space","specify","status","stretched","system","systems","taking","terminals","title","truncating","trying","useful","users","using","works","yellow"]
},{
"title": "Catching Markdown mistakes",
"url": "/2011/09/15/catching-markdown-mistakes/",
"tags": ["javascript","jquery","markdown","marked"],
"date": "Sep 15th, 2011",
"ts": "1316087880",
"summary": "I had an interesting idea this morning. At least I find it interesting, but I haven t slept much lately. Either way, here it is: in Markdown, if you misname a reference link, forget to fill one in or have a malformed URL, your broken Markdown shows up in your output. Wouldn t it be nice if your preview highlighted those for you before you went to publish? Marked 1.3, which is coming along very nicely, has a few JavaScripts built in to the preview (which can be turned off in preferences). It provides a table of contents based on headers in your document, smooth scrolling, tool tips to show you where external links will go and, as of this morning, highlighting of broken links. The code is simple. This version is jQuery, just because that was convenient, but you can pull this off in plain old JavaScript with barely any extra code: It just scans for Markdown-style links ( or ) that are still in your text after converting to HTML. If it finds them, it highlights them in red. Just thought I d share. By the way, in addition to the JavaScript fun, the next version of Marked has multiple custom styles (unlimited), can open any text file with any extension, can load MathJax for MathML rendering and much more. I ll keep you posted on its release, but it should be soon.",
"keywords": ["github","javascript","jquery","locator","markdown","mathjax","mathml","resource","either","javascript","javascripts","markdown","marked","mathjax","mathml","wouldn","barely","based","because","before","broken","built","coming","contents","convenient","converting","custom","document","extension","external","extra","finds","forget","haven","headers","highlighted","highlighting","highlights","interesting","jquery","links","malformed","misname","morning","multiple","nicely","output","posted","preferences","preview","provides","publish","release","rendering","scans","scrolling","share","shows","simple","slept","smooth","style","styles","table","thought","turned","unlimited","version","where"]
},{
"title": "Totally TaskPaper",
"url": "/2011/09/14/totally-taskpaper/",
"tags": ["productivity","scripting","taskpaper"],
"date": "Sep 14th, 2011",
"ts": "1316034000",
"summary": "I ve been switching back and forth between The Hit List and OmniFocus for a while now. I like the simplicity of The Hit List combined with it s tagging/filtering capabilities, but the overall power and scriptability of OmniFocus keeps drawing me back. Plus, the forecast and review modes in OmniFocus for iPad are amazing. You can criticize me for fiddling if you like I mess with my systems in my free time, but always make sure they re stable before Monday morning comes Within my projects like nvALT and Marked , as well as some smaller scripting projects, I ve been keeping bugs, feature requests and general todos in TaskPaper format text files. They sync nicely in my Git repos and are easy to manipulate with or without the TaskPaper application. TaskPaper s built-in scripting and filtering capabilities make it very easy to handle advanced views of my tasks. So much so that I m switching my entire todo system to TaskPaper for while to see how it goes. TaskPaper files are plain text with a simple, intuitive syntax. I can edit them in nvALT, sync them to the TaskPaper iOS app or any iOS text editor, and access them on multiple machines easily. I can even get a great printout, thanks to Dr. Drang . I like the portability. Within the TaskPaper application, they get a great UI which allows for mousing around and editing them like text files. You also get some great keyboard shortcuts for navigation and manipulation. I also like the advanced search capabilities of TaskPaper itself. It s a simple, easy-to-remember syntax which lets you use queries such as or . The @v part of those queries comes from the fact that when you tag a task in TaskPaper, you can add a parenthetical parameter to the tag, e.g. @v(1.3). That s my tag for the version of the app it belongs to, in this case version 1.3. It doesn t have to be numeric, but numbers are especially nice because you can use greater-than/less-than operators on them. I can then sort my tasks and completed task archives by version number when putting together roadmaps and changelogs. TaskPaper allows for nesting tasks and projects, too. Just indent a line one tab farther than the line above it and it becomes a child task. Keep nesting as deep as you like. You can use +d in search queries to include all child elements of matching actions/projects. I can see great possibilities for expanding these capabilities to my every day task lists. I already have several very handy scripts for working with TaskPaper,",
"keywords": ["interface","management","omnifocus","taskpaper","textmate","drang","gtdalt","hopefully","jesse","marked","monday","omnifocus","perspectives","taskpaper","textmate","within","above","access","across","actions","advanced","allows","alone","amazing","archives","ardent","because","becomes","before","belongs","between","built","capabilities","changelogs","child","comes","command","commands","completed","concede","criticize","decrement","doesn","drawing","easily","editing","editor","elements","entire","especially","expanding","farther","feature","fiddle","fiddling","files","filtering","forecast","format","forth","general","gives","great","greater","handle","handy","heart","including","increment","indent","intuitive","itself","keeping","keeps","keyboard","language","leave","lists","machines","management","manipulate","manipulation","matching","modes","morning","mousing","multiple","natural","navigation","nesting","nicely","numbers","numeric","nvalt","operators","overall","parameter","parenthetical","plenty","polished","portability","ported","possibilities","posted","powerful","printout","priority","projects","provides","putting","queries","remember","repos","requests","roadmaps","script","scriptability","scripting","scripts","search","searching","several","shortcuts","simple","simplicity","smaller","someday","sorting","stable","substitute","switching","syntax","system","systems","tagging","taken","tasks","thanks","through","todos","together","version","viable","views","weekends","while","working","works"]
},{
"title": "Marked Bonus Pack 1.2",
"url": "/2011/09/14/marked-bonus-pack-1-2/",
"tags": ["marked","scripting"],
"date": "Sep 14th, 2011",
"ts": "1316022660",
"summary": "I posted an update to the Marked Bonus Pack this afternoon. It includes a few fixes for stupid mistakes on my part, plus support for Emacs, both in the included instructions and in the Open in Marked System Service. The Emacs support is courtesy of Barry and Donald Curtis (who also fixed some wackiness in my I-didn t-sleep-enough scripting). Thanks, guys. Now that I m awake, I should probably come up with a less lame moniker for the bundle, too. I ll get there. Marked Bonus Pack v1.5 Download Marked Bonus Pack v1.5 A collection of scripts, commands and bundles for Marked. Includes commands for TextMate, Sublime Text 2, (Mac)Vim and several System Services to work with any editor. Also includes scripts for compatibility with Scrivener, Evernote, MarsEdit and more. Published 09/12/11. Updated 09/12/11. Changelog Donate More info",
"keywords": ["editors","emacs","languages","programming","source","barry","bonus","changelog","curtis","donald","donate","download","emacs","evernote","includes","marked","marsedit","published","scrivener","service","services","sublime","system","textmate","thanks","updated","afternoon","available","awake","below","bundle","bundles","collection","commands","compatibility","courtesy","direct","download","editor","enough","fixed","fixes","included","includes","information","instructions","mistakes","moniker","posted","scripting","scripts","several","sleep","stupid","support","wackiness"]
},{
"title": "OmniFocus and Markdown, oh my",
"url": "/2011/09/13/omnifocus-and-markdown-oh-my/",
"tags": ["markdown","omnifocus"],
"date": "Sep 13th, 2011",
"ts": "1315932360",
"summary": "Ryan Irelan posted a couple of great OmniFocus screencasts today. They re worth checking out for new users and those who ve been using it for a while. One covers customizing OmniFocus , looking at Perspectives and other tweaks and tips. The other one focuses on Project Templates , an underused part of the application, in my opinion. These casts cost $6 and $5, respectively. As a bonus, there s an introduction to Markdown screencast available for free today. If you re still trying to figure what this whole Markdown thing is about, I highly recommend it (and not just because nvALT and Marked are featured).",
"keywords": ["group","iphone","macworld","markdown","omnifocus","templates","check","irelan","markdown","marked","mijingo","omnifocus","perspectives","project","templates","available","because","bonus","casts","checking","couple","covers","customizing","featured","figure","focuses","great","highly","introduction","looking","nvalt","posted","recommend","respectively","screencast","screencasts","today","trying","tweaks","underused","users","using","while","whole","worth"]
},{
"title": "Introducing the Marked Bonus Pack",
"url": "/2011/09/12/introducing-the-marked-bonus-pack/",
"tags": ["markdown","marked","scripting"],
"date": "Sep 12th, 2011",
"ts": "1315882440",
"summary": "There s a small bundle of scripts, commands and other oddities for Marked available from the new Marked Support Site . It will be updated and expanded over time, but it provides a few bridges that have been frequently requested. There are services for opening the current file in the foreground application and for previewing selected text in any application. There s a bundle of TextMate commands for the same, plus one to remove auto-generated header IDs from HTML output. There s also a build system for Sublime Text 2 , and a general-purpose AppleScript. There s even a line to add to your to open a Marked preview on the current file. Check out the Marked Bonus Pack post on the knowledgebase, and feel free to use the forums there to request additional features or changes to the included scripts. You can download the bundle directly (Readme.md file included) below. Marked Bonus Pack v1.5 Download Marked Bonus Pack v1.5 A collection of scripts, commands and bundles for Marked. Includes commands for TextMate, Sublime Text 2, (Mac)Vim and several System Services to work with any editor. Also includes scripts for compatibility with Scrivener, Evernote, MarsEdit and more. Published 09/12/11. Updated 09/12/11. Changelog Donate More info",
"keywords": ["applescript","command","interface","languages","programming","scripts","sublime","textmate","applescript","bonus","changelog","check","donate","download","evernote","includes","marked","marsedit","published","readme","scrivener","services","sublime","support","system","textmate","updated","available","below","bridges","build","bundle","bundles","changes","collection","commands","compatibility","directly","download","editor","expanded","features","foreground","forums","general","generated","header","included","includes","knowledgebase","oddities","opening","output","preview","previewing","provides","remove","scripts","selected","services","several","small","system","updated"]
},{
"title": "Web excursions: September 6, 2011 - September 12, 2011",
"url": "/2011/09/12/web-excursions-september-6-2011-september-12-2011/",
"tags": ["bookmarks"],
"date": "Sep 12th, 2011",
"ts": "1315864800",
"summary": "Links of interest from September 6, 2011 through September 12, 2011: 25+ jQuery Animation Tutorials Some complex jQuery animation tutorials. If you ve ever felt like moving beyond fade and slide, well, there you go. The Multi-Size Web: a Computing bag by Eric Haidara Great compilation of resources and articles on responsive web design. boom You probably hate typing the same shit over and over again. You probably sit in front of your command line prompt every day. Let s smash those two concepts together in the face. NerdTool over GeekTool I hadn t done the math on NerdTool vs GeekTool on Lion yet, but Dr. Drang covered the bases for me. Looks like I m switching back to NerdTool. Links to Google Spreadsheet with Textexpander Jens Poder modified one of my Markdown snippets to create links in Google Spreadsheets (with linked text). I didn t even know there was a formula for that, so this is doubly cool.",
"keywords": ["engines","geektool","google","locator","resource","search","searching","spreadsheet","animation","computing","drang","geektool","google","great","haidara","links","looks","markdown","multi","nerdtool","poder","spreadsheet","spreadsheets","textexpander","tutorials","again","animation","articles","bases","beyond","command","compilation","complex","concepts","covered","create","design","doubly","formula","front","interest","jquery","linked","links","modified","moving","prompt","resources","responsive","slide","smash","snippets","switching","through","together","tutorials","typing"]
},{
"title": "Geeklet: 1-minute average CPU load",
"url": "/2011/09/12/geeklet-1-minute-average-cpu-load/",
"tags": ["geeklet","geektool","nerdtool"],
"date": "Sep 12th, 2011",
"ts": "1315849020",
"summary": "Last week I divulged one of my more complex GeekTool / NerdTool scripts. This week, one of the simplest: a processor load indicator. This one doesn t even need to call a script, it s a one-liner you can run directly as the command for a shell Geeklet. Just drag a new shell item from GeekTool/NerdTool to your desktop and use this as the command: Update: The command above was a little longer than it needed to be. As noted by Michael in the comments, you can substitute for and get the same result with less work. That will feed the one-minute load average from the command 1 to your desktop, where you can set the font and color as desired. Easy peasy. In the next Geeklet post, I ll share a script for finding out what the top CPU-consuming processes are and displaying a color-coded list on the desktop. I can t remember why I added the grep command to the end of it, but the would remove any lines that had the word average in them. You can probably leave that off unless you run into strange output.",
"keywords": ["central","command","geektool","interface","operating","processing","shell","systems","geektool","geeklet","michael","nerdtool","above","added","average","coded","color","command","comments","complex","consuming","desired","desktop","directly","displaying","divulged","doesn","finding","indicator","leave","liner","little","longer","minute","needed","noted","output","peasy","processes","processor","remember","remove","script","scripts","share","shell","simplest","strange","substitute","where"]
},{
"title": "An office for every mode",
"url": "/2011/09/11/an-office-for-every-mode/",
"tags": ["blogging","distraction","minimalism","writing"],
"date": "Sep 11th, 2011",
"ts": "1315748760",
"summary": "Moving into a new house has meant more space, and a chance to separate my various modes of work a little. I m more efficient at switching modes (working, writing, playing, etc.) if I can switch spaces. Now, I have three work spaces. First, a command central for writing music, coding and fiddling. This has my Mac Pro with a dual-monitor setup, studio monitors, my Oxygen 49 and several mics, my acoustic, electric and bass guitars on a rack to the left and a lot of drawers for cables and additional gizmos (the Mac Pro there also runs the home automation and media servers). I can and will do my day job here, but this is the one I m allowed to be chaotic at. It s not that I m not creative in a sterile (read minimal) environment, but the byproduct of my most creative moments is, well, chaotic surroundings. I ve decided to just let that happen as it always has, but designate concentration spaces for my other two modes. On the other side of my office is a nook with a small desk which has a keyboard drawer with a Bluetooth keyboard, Magic Mouse and a large Moleskine. There s also a small lightbox. My MacBook Air sits in front of the lightbox, which is angled toward the wall, and I get a nice, empty desk with a comforting glow around my work area. This desk is for writing and nothing else. My brain is easily trained to accept certain reactions to certain spaces (e.g. bed for sleeping), so I think this will work well. Lastly, the work-only space. On nice days in the warm 1/3 of the Minnesota year, I have an amazing outdoor office. It s a small table in a small walled garden facing the heavily wooded area on the slope of the bluff. There are warm, yellow rope lights across the top of the area and the gate slides open to the back yard and woods. It s pretty close to my definition of perfect. In the cold months, I have an extra space near my main office that I ll be converting, but I won t have to worry about that for another month. I don t really believe in being distracted. I believe that I procrastinate and create my own distractions, but my workspace rarely has anything to do with it. I have the job flexibility to be able to accept that my brain isn t in a work mode at almost any time, take 15 minutes to read my RSS feeds or hack around, then get back to it. Once I m in work mode, I get as obsessed with that as I do with my more creative pursuits. Of course, my job requires creativity, too, and I really couldn t hold a job that didn t. The minimalism in the",
"keywords": ["bluetooth","macbook","macpro","magic","minnesota","moleskine","monitor","mouse","studio","bluetooth","first","lastly","macbook","magic","minnesota","moleskine","mouse","moving","oxygen","accept","acoustic","across","allowed","almost","amazing","angled","another","automation","auxiliary","believe","bluff","brain","byproduct","cables","central","certain","chance","chaotic","close","clutter","coding","comforting","command","concentration","contained","converting","couldn","create","creative","creativity","decided","definition","distracted","distraction","distractions","drawer","drawers","easily","efficient","electric","empty","environment","extra","facing","feeds","fiddling","flexibility","front","garden","gizmos","going","great","guitars","happen","heavily","house","keyboard","lightbox","lights","little","meant","media","minimal","minimalism","minutes","modes","moments","monitor","monitors","music","nothing","obsessed","office","outdoor","playing","prevent","procrastinate","pursuits","rarely","reactions","requires","separate","servers","setup","several","sleeping","slides","slope","small","space","spaces","sterile","studio","surroundings","switch","switching","table","think","toward","trained","various","walled","wooded","woods","working","workspace","workspaces","worry","writing","yellow"]
},{
"title": "Fog In The Valley",
"url": "/2011/09/10/fog-in-the-valley/",
"tags": ["personal","video"],
"date": "Sep 10th, 2011",
"ts": "1315679280",
"summary": "As some of you may know, my wife Aditi and I moved into a new house last week. It s been a crazy week of settling in, but it s already starting to feel like home. As it turns out, I m less opposed to weekend projects than I had thought I would be. I m not exactly handy, but I m learning as I go. Our house is on one of the highest ridges in our town in the unglaciated 1 region of the Mississippi River Valley . My office includes an eight-foot-wide sliding glass door that faces out onto the valley below, and the view is incredible. I watch the fog roll into the valley every morning, roil and roll over itself and then dissipate as the sun rises. It very well might be one of those things I never get bored with seeing, much like the rest of this gorgeous area. I made a time-lapse video of the view from my porch using a Nikon D60 connected to my MacBook Air and DSLRemote on my iPhone. A few hundred snaps later, here s the video It wasn t flattened by glaciers. It s a hard word to find a definition of, but I swear it s a real word.",
"keywords": ["aditi","embayment","iphone","lapse","macbook","mississippi","nikon","photography","valley","aditi","dslremote","macbook","mississippi","nikon","river","valley","below","bored","connected","crazy","definition","dissipate","eight","faces","flattened","glaciers","glass","gorgeous","handy","highest","house","hundred","iphone","includes","incredible","itself","lapse","later","learning","morning","moved","office","opposed","porch","projects","region","ridges","rises","seeing","settling","sliding","snaps","starting","swear","thought","turns","unglaciated","using","valley","video","watch","weekend"]
},{
"title": "Why a plain-text nerd uses Evernote",
"url": "/2011/09/10/why-a-plain-text-nerd-uses-evernote/",
"tags": ["evernote","notes"],
"date": "Sep 10th, 2011",
"ts": "1315663380",
"summary": "People always seem surprised to find out I use Evernote , despite all of the plain-text tools at my fingertips. I thought I d offer some explanation as to why and how I use Evernote. The biggest knock against Evernote from myself and others is that the data isn t easily portable. Let s be clear, though, you can export individual notes as HTML files and you can mass export notes in a standard XML format that s not too difficult to work with. You can drag a PDF or other file right out of Evernote. The fact is that Evernote is made for rich text and images portability gets more difficult when you re no longer just dealing with text. The Evernote- Together importer is a great example of making use of these features. Update: I almost forgot to mention the ENML Editor project, a web interface for editing Evernote s XML output. Given the above, I don t use Evernote for notes anymore. If I m typing a note, it s in a text editor on my phone or nvALT on the desktop. I use Evernote for temporary items that make full use of Evernote s searching, sorting and image recognition capabilities. I use Evernote the most when I travel. It s the fastest, easiest way to keep tickets, itineraries, reservations and expenses all neatly organized and at synced between all of my devices. When I park my car, I snap a picture of the nearest parking ramp column (with the color and row number) and stick it in the notebook for the trip. I believe in using the right software for the job, and while Dropbox 1 can cover a lot of bases Evernote excels in this area. I don t need this data to be portable later when the trip is over, so is the lifespan of the notes. I also use Evernote for grabbing images of receipts, both on the road and at home. Being able to snap pictures of paper receipts and print web receipts directly to the same bucket is important, and having automatic OCR on those images is priceless. I generally don t need to reference my receipts after a year, so this data is temporary as well. If a receipt is for a large purchase or needs a longer lifespan, it s probably going into my home inventory software or elsewhere anyway. I know some of the guys at Evernote, and our history goes back a ways . I know that they re passionate about their users, and the safety of their data. I trust Evernote to be there when I m boarding the plane and should the need arise when I m being audited. I don t need it for simple notes, Notational Velocity, nvALT and plain text in general are",
"keywords": ["airport","dropbox","evernote","iphone","molde","notational","store","velocity","dropbox","editor","evernote","notational","openmeta","people","together","velocity","above","across","against","almost","anymore","anyway","arise","audited","automatic","available","bases","believe","between","biggest","boarding","bucket","capabilities","clear","color","column","cover","dealing","depending","desktop","devices","difficult","directly","doesn","easiest","easily","editing","editor","elsewhere","entirely","example","excels","expenses","explanation","export","faster","fastest","features","files","fingertips","folders","forgot","format","general","generally","going","grabbing","great","having","history","iphone","image","images","important","importer","individual","interface","inventory","items","itineraries","knock","laptop","later","lifespan","longer","making","mention","mobile","myself","nearest","neatly","needs","notebook","notes","nvalt","offer","organized","others","output","paper","parking","passionate","phone","picture","pictures","plane","portability","portable","priceless","print","project","quickly","receipts","recognition","reservations","right","safety","searching","sense","simple","software","sorting","standard","stick","surprised","synced","system","tagging","temporary","thought","tickets","tools","travel","typing","users","using","while"]
},{
"title": "GVoice command line SMS revisited",
"url": "/2011/09/08/gvoice-command-line-sms-revisited/",
"tags": ["googlevoice","hacks","terminal"],
"date": "Sep 8th, 2011",
"ts": "1315490820",
"summary": "Thanks to a comment from Evaryont on the original SMS from the command line with Google Voice post, a problem that was causing Error 500s in the script has been solved. rnrse = CGI.escape(newres.match(/ rnrse : (+) /)) The CGI escaping should help with the Google s changes to the variable. Evaryont also notes that the script works great in Arch Linux with Ruby 1.9.2. For 1.9 compatibility (thanks to David for clarification in the comments below), remove the from the hashbang on the first line, and add below. Have fun!",
"keywords": ["command","david","google","interface","linux","programming","shebang","check","david","error","evaryont","google","linux","thanks","voice","below","causing","change","changes","command","comment","comments","compatibility","escape","escaping","first","great","hashbang","match","newres","notes","original","problem","remove","rnrse","script","solved","thanks","variable","works"]
},{
"title": "Yoink giveaway winners",
"url": "/2011/09/07/yoink-giveaway-winners/",
"tags": ["giveaway"],
"date": "Sep 7th, 2011",
"ts": "1315435080",
"summary": "The Yoink giveaway ended yesterday, and my automated winner-picking scripts 1 randomly chose and notified five lucky readers! The winners are: If you happen to be on the list and haven t seen an email with your promo code, let me know . There are more giveaways (for both Mac and iOS) coming up, so stay tuned! I ll be going into more detail on the winner-picking script for those who are interested. It s currently an AppleScript with a couple of embedded Ruby scripts, but I m seriously considering redoing the whole setup as a WordPress plugin. More details soon.",
"keywords": ["applescript","script","store","wordpress","applescript","christian","etherealmind","harrington","lucifr","wordpress","yoink","automated","chose","coming","considering","couple","detail","details","email","embedded","ended","fannheyward","giveaway","giveaways","going","happen","haven","interested","lucky","notified","picking","plugin","promo","randomly","readers","redoing","script","scripts","seriously","setup","tuned","whole","winner","winners","yesterday"]
},{
"title": "Tunesque 1.1.2",
"url": "/2011/09/07/tunesque-1-1-2/",
"tags": ["appstore"],
"date": "Sep 7th, 2011",
"ts": "1315434300",
"summary": "I reviewed Tunesque the other day, and had some nice things to say about the free App Store search utility. I thought I d mention that they rapidly put out another update and added a few very handy features, including the system-wide hotkey I d hoped for. You can use Command-number shortcuts to expand categories of results Better search results for both Apps and Music searches Some theme tweaks. The light one is looking especially good, and the improved formatting allows for more results without sacrificing any readability Very nice! If you haven t, check it out .",
"keywords": ["apple","engine","google","iphone","keyboard","search","shortcut","store","command","music","store","tunesque","added","allows","another","categories","check","especially","expand","features","formatting","handy","haven","hoped","hotkey","improved","including","light","looking","mention","rapidly","readability","results","reviewed","sacrificing","search","searches","shortcuts","system","theme","thought","tweaks","utility"]
},{
"title": "Web excursions: September 5, 2011 - September 6, 2011",
"url": "/2011/09/06/web-excursions-september-5-2011-september-6-2011/",
"tags": ["bookmarks"],
"date": "Sep 6th, 2011",
"ts": "1315310400",
"summary": "Links of interest from September 5, 2011 through September 6, 2011: CSS3 Buttonize Framework - Light-Weight, Flexable Instant Button Framework A CSS3 framework for classy buttons, to go along with some other awesome CSS3 buttons. J is for jCookies - HTTP Cookie Handling for jQuery Codrops A handy plugin for storing any type of data in cookies. Pipes: Lifehacker Full no:win no:android I seriously love what Yahoo Pipes can do. Feed created from a clone of Lifehacker Feed Cleaner 2.0 . Full feed, no Windows or Android. Modify at will! Reliable Cross-Browser Testing, Part 1: Internet Explorer Ever wonder what the pitfalls of various methods of emulating IE rendering might be? Addy has some surprises for you. Just some other awesome CSS3 buttons As a matter of fact, these are pretty awesome. Patterns For Large-Scale JavaScript Application Architecture No, I have not managed to digest all of this yet, but I m gaining some valuable insight on what I ve always done wrong in the past",
"keywords": ["cascading","explorer","internet","javascript","jquery","microsoft","pipes","sheets","style","windows","yahoo","android","architecture","browser","button","buttonize","cleaner","codrops","cookie","cross","explorer","flexable","framework","handling","instant","internet","javascript","lifehacker","light","links","modify","patterns","pipes","reliable","scale","testing","weight","windows","yahoo","android","awesome","buttons","classy","clone","cookies","created","digest","emulating","framework","gaining","handy","insight","interest","jcookies","jquery","managed","methods","pitfalls","plugin","rendering","seriously","storing","surprises","through","valuable","various","wonder","wrong"]
},{
"title": "Quick Tip: This command line trick is tops",
"url": "/2011/09/06/quick-tip-this-command-line-trick-is-tops/",
"tags": ["quicktip","terminal"],
"date": "Sep 6th, 2011",
"ts": "1315298220",
"summary": "Quick tips are random posts regarding something I discovered on my way to something bigger. They usually get longer than quick would imply, for which I refuse to apologize. I just (accidentally) discovered the command while working in Terminal. I m not seeing many of mentions of it (any) on the web, but it could be too early in the morning for me to form a coherent query. Regardless, I thought I d give it a mention. The man page is quite complete, and has a succinct explanation of the command: It s not just useful for code, though, it makes a great tool for batch modifications to any text file(s). With an easy-to-grok syntax, it does in a few words what I usually do in three or more piped oneliners (grep, awk, sed, etc.). There s a option specifically for replacing Objective-C-style method names, which leads me to believe that this is an OS X-only tool, possibly only part of the Developer Tools. If anyone more familiar with this command has insight, I d be curious. Tops can read a script file with rules for search and replace, or take commands as arguments to process changes in a text file instantly. Simple example: All instances of Word in all files with the name writing were just replaced with Markdown. Try it, it s cool. The options go far beyond my simplistic example, but the more complex options are primarily specific to Objective-C. If this piques your curiosity anyway, spend some time with .",
"keywords": ["languages","management","markdown","programming","developer","markdown","quick","regardless","simple","terminal","tools","accidentally","anyone","anyway","apologize","arguments","batch","believe","beyond","bigger","changes","coherent","command","commands","complex","curiosity","curious","discovered","example","explanation","familiar","files","great","insight","instantly","leads","longer","makes","mention","mentions","method","modifications","morning","names","oneliners","options","piped","piques","possibly","posts","primarily","process","query","quick","random","refuse","replace","replaced","replacing","rules","script","search","seeing","simplistic","specific","specifically","spend","style","succinct","syntax","thought","useful","usually","while","words","working","writing"]
},{
"title": "Geeklets: weather and forecast",
"url": "/2011/09/05/geeklets-weather-and-forecast/",
"tags": ["geeklet","geektool","nerdtool","tutorial"],
"date": "Sep 5th, 2011",
"ts": "1315236660",
"summary": "Update: I worked with a couple of readers to make a localizable version of this. I haven t had time to fully polish and post it, but if you want to use this geeklet in a non-US English setup, contact me and I ll help you get it running. Currently only German is complete, but the strings file is easy enough to fill out. GeekTool is on the App Store now, which has renewed some interest in the desktop customization utility. I ve been asked many times to share some of my GeekTool scripts, so I m going to start doing them in installments. This first one is one of the more involved scripts, and probably my current favorite. The goal is to put the current weather, an abbreviated 5-day forecast and a large icon for the current conditions onto the desktop. The scripts below work just as well with NerdTool as they do with GeekTool. For the purposes of this post, I m assuming you know how to create a Geeklet and customize it 1 , I ll just provide the scripts and commands. Most of the weather scripts I ve seen scrape Google or Yahoo weather for current conditions. That s a bit of a waste given that Weather Underground (among some others) offers a very complete REST API . Using a bit of Ruby, I just parse the feeds for current conditions and forecast and output the results. We just parse out the temperature and the textual representation of the current condition and return them as a short, formatted string. The script download below includes a configuration section for international city and Celsius or Fahrenheit temperatures. The same XML feed also contains an item with a standard icon name for the condition. This can be applied to any of the icon sets that Weather Underground provides, but I like to use my own by creating a set with the same names and referencing them locally. The download includes my custom set in white and a layered PSD with vector shapes for changing colors and rescaling 2 . I honestly don t recall where I found the original set, so if it looks familiar to you and you want to get credit and/or sue me for distributing it, do let me know. The forecast section of the script is similar in concept, just a different feed. We take that one and recurse through the 5 upcoming days and return a formatted forecast similar to: The script is set up to take one main argument which determines the type of information to return: time, current or forecast . If you run it without an argument, it returns current and forecast together. Separating them is",
"keywords": ["celsius","friday","geektool","google","store","underground","weather","yahoo","catalan","celsius","changelog","command","donate","download","dutch","english","fahrenheit","forecast","french","geektool","geeklet","german","google","googles","hopefully","includes","installation","italian","japanese","localized","nerdtool","norwegian","polish","profit","published","refresh","russian","separating","spanish","store","swedish","transparency","underground","updated","using","weather","yahoo","abbreviated","accuracy","adjusting","among","another","applied","argument","asked","assuming","bases","basic","basics","because","below","between","called","change","changing","characteristics","cheated","cloudy","color","colors","commands","comments","concept","concern","conditions","configuration","contact","contains","control","copied","couple","covered","create","created","creating","credit","custom","customization","customize","default","designers","desktop","details","determines","different","directory","display","distributing","doesn","doing","download","dragging","enough","exported","extensibility","familiar","favorite","feeds","first","folder","force","forced","forecast","formatted","found","fully","geeklet","geeklets","going","handle","haven","honestly","icons","image","includes","information","inspector","installments","interest","international","involved","languages","layer","layered","leave","local","localizable","locally","location","locations","looks","manipulators","minutes","modifying","module","multiple","names","nighttime","notes","offers","opacity","optional","original","others","output","parameters","parse","plenty","point","polish","provides","queries","readers","recall","recurse","referencing","refreshes","renewed","representation","rescaling","results","return","returning","returns","running","scale","scrape","screenshot","script","scripts","second","section","separate","settings","setup","shapes","share","shell","short","similar","somewhere","standard","stopped","string","strings","styling","suggested","sunrise","sunset","temperature","temperatures","testing","textual","through","times","together","unnecessary","upcoming"]
},{
"title": "App Review: Tunesque",
"url": "/2011/09/04/app-review-tunesque/",
"tags": ["appreview","itunes","search"],
"date": "Sep 4th, 2011",
"ts": "1315180680",
"summary": "Tunesque just popped up on my radar today. It s a free utility that searches the iTunes store, Spotlight-style. It runs in your menubar, and when you enter a query it returns instant, as-you-type results from all areas of the iTunes Store, App Store and Mac App Store. Hovering over an item displays item details (the way Lion Spotlight does). With light and dark themes and the ability to filter what results you see (and from what country s store they re from), it s about as configurable as you could ask an instant iTunes search to be. Very clever. There are only two requests I have. First, a configurable shortcut for popping up the search would be nice. Not that I d be using it so frequently that I d have muscle memory attached to it, but for some reason I dislike clicking menubar icons. I think it s too small a click target on a large screen. I digress. My second request is even more trivial: I d love to control the sort order of the results. I might not want to remove Audiobooks from the result list, but I want it to show up last. Just a couple of thoughts, but certainly nothing that impedes usability. When I say free, I mean totally free, no donations requested. There are affiliate links on the search results, so every time you buy something via Tunesque you re helping the developers out. Not a bad deal. Grab it from its Solarized-flavored homepage 1 .",
"keywords": ["apple","iphone","itunes","search","store","audiobooks","first","hovering","solarized","spotlight","store","tunesque","ability","affiliate","areas","attached","certainly","clever","click","clicking","configurable","control","country","couple","details","developers","digress","dislike","displays","donations","enter","ethanschoonover","filter","flavored","helping","homepage","itunes","icons","impedes","instant","light","links","memory","menubar","muscle","nothing","popped","popping","query","radar","remove","requests","results","returns","screen","search","searches","second","shortcut","small","solarized","store","style","target","themes","think","thoughts","today","totally","trivial","usability","using","utility"]
},{
"title": "Moving day",
"url": "/2011/09/04/moving-day/",
"tags": ["personal"],
"date": "Sep 4th, 2011",
"ts": "1315117200",
"summary": "We just completed the first day of a cross-town move to our new house. It s my first foray into home ownership, so this is exciting and a little bit nerve wracking. Thanks to all of our friends who helped make what would otherwise have been an overwhelming task into a fun afternoon.",
"keywords": ["design","development","height","hosting","length","thanks","afternoon","completed","cross","exciting","first","foray","friends","helped","house","little","nerve","overwhelming","ownership","wracking"]
},{
"title": "Five Yoink promo codes up for grabs!",
"url": "/2011/09/03/five-yoink-promo-codes-up-for-grabs/",
"tags": ["appreview","giveaway"],
"date": "Sep 3rd, 2011",
"ts": "1315054800",
"summary": "Eternal Storms has provided five Yoink App Store promo codes for me to give to readers. I m happy to be able to share Yoink is one of those unobtrusive utilities that provides important functionality in an elegant way. Initially I was in love with Yoink because it made it easy to get files between full-screen apps. I have since gotten better (after being chided on TUAW) at picking files up with my thumb on my Magic Trackpad and using four fingers to swipe between screens. It s not my favorite gesture, but it works. Yoink quickly took on more tasks, though, and has proven itself very useful in other areas as well. If you ve ever used Path Finder , Yoink is basically the Drop Stack without all of the feature bloat. Since TotalFinder became stable, the Drop Stack was really the only thing I was longing for. Yoink covers the bases nicely. If you d like a promo code, just leave a comment on this post. On Tuesday, September 6th I ll pick five winners 100% randomly and email promo codes to the winners. You can comment as many times as you like, but you ll only be entered once!",
"keywords": ["finder","magictrackpad","store","totalfinder","yoink","eternal","finder","magic","since","stack","store","storms","totalfinder","trackpad","tuesday","yoink","areas","bases","became","because","between","bloat","chided","codes","comment","covers","elegant","email","entered","favorite","feature","files","fingers","functionality","gesture","gotten","happy","important","itself","leave","longing","nicely","picking","promo","proven","provides","quickly","randomly","readers","screen","screens","share","since","stable","swipe","tasks","thumb","times","unobtrusive","useful","using","utilities","winners","works"]
},{
"title": "How to be popular at parties",
"url": "/2011/09/02/how-to-be-popular-at-parties/",
"tags": ["markdown","nvalt"],
"date": "Sep 2nd, 2011",
"ts": "1315000800",
"summary": "If you want to be popular, you need to spend most of the party loudly pontificating on really, really nerdy stuff. It will seem like it s not working at first, but keep going. I promise everyone will love you in the end. Here are a couple of inspiring topics for your next soire (this intro paragraph is me trying to justify a rambling post that will likely not make me many friends). First, I was pointed to Steve Ivy s veloci-wiki the other day. It sets up a Notational Velocity (actually works even better with nvALT) folder with plain text files as a direct link to a GitHub wiki. Every time you edit, it automatically commits and pushes the changes, so your GitHub wiki becomes a live representation of your NV notes. I made some modifications to the git commands in the script and the launchd plist, but overall it worked like a charm right out of the box. Details and origin on monkinetic . You could use this to keep an online repository of your notes, assuming you had a paid GitHub account (for privacy) and the online version of your info was useful for you. More interesting to me, it allows NV to become a really quick and easy editor for a documentation wiki. Unfortunately, that means constantly reloading all of your notes when you switch between your regular notes and the wiki folder, which really isn t practical. There are some other possibilities, though. You may recall me mentioning that I was running an entire site with a VoodooPad wiki and an automated git script. I promised to share some tips for doing that at some point, but it became an overwhelming post and I ve let it languish. Veloci-wiki, however, provides an easy base for using VoodooPad to maintain a GitHub wiki. Write your VoodooPad pages in Markdown and use plain text formatting as the default. Then you should be able to export the document as text files and have your Veloci-wiki script auto-commit and push. Point different export folders at different wikis to maintain multiple repos. I haven t put it into practice yet, but it could be a pretty handy tool. Using scripts similar to Ian Beck s Scratchpad , you could add a ton of auto-generated functionality, too. Using a method very similar to veloci-wiki, you can also run a Gollum wiki on your NV folder and have a local, web-based wiki for reference or sharing purposes. A little scripting and you could make certain tags in NV hide pages from the wiki, too, if you wanted to use it on an intranet or home network with other people. I",
"keywords": ["folder","github","markdown","notational","velocity","commit","details","enjoy","first","github","gollum","kramdown","lingon","markdown","notational","notes","point","scratchpad","settings","sinatra","steve","unfortunately","using","veloci","velocity","voodoopad","worst","write","account","allows","anyone","assuming","automated","automatically","based","became","becomes","between","certain","changes","charm","check","command","commands","commit","commits","committing","constantly","couple","default","definitely","details","different","direct","document","doing","edited","editor","either","entire","everyone","export","files","first","fixed","flavored","fodder","folder","folders","formatting","friend","friends","functionality","generated","going","handy","haven","however","import","index","initial","inspiring","install","instructions","interesting","interval","intranet","intro","issues","justify","languish","launchd","likely","little","local","localhost","loudly","maintain","mentioning","method","modifications","modified","monkinetic","multiple","nerdy","network","notes","nvalt","online","origin","overall","overwhelming","pages","paragraph","party","people","plist","point","pointed","pontificating","popular","possibilities","posting","practical","practice","privacy","promise","promised","provides","pushes","quick","rambling","recall","regular","reloading","repos","repository","representation","right","running","satisfaction","script","scripting","scripts","server","share","sharing","similar","soire","spend","started","stored","stuff","style","switch","teasing","topics","trying","updates","useful","using","veloci","versa","version","wanted","watch","wikis","worked","working","works"]
},{
"title": "Auto-convert your inline Markdown links to references",
"url": "/2011/09/02/auto-convert-your-inline-markdown-links-to-references/",
"tags": ["markdown","markdownservices","scripting","service"],
"date": "Sep 2nd, 2011",
"ts": "1314990840",
"summary": "Update: found a little bug (well, stupid mistake) in the HTML to Clipboard command. Download version is now 1.2.1, update if you grabbed 1.2. I ve posted two more updates to the Markdown Service Tools . The first change is a fix for UTF-8 characters in the HTML to Clipboard Service I introduced yesterday. I had no idea that didn t like UTF-8 by default. I found a solution at Mac OS X Hints which seems to be working. I updated the Service in the main download, let me know if it still has trouble with any UTF-8/16 characters. Secondly, I added a Service that allows you to select an entire document s text and convert any inline links to reference-style links, with the references sorted and neatly placed at the end of the document. It s pretty smart about maintaining existing reference links, creating titles, recognizing multiple instances of links, etc., but I can t account for everyone s writing style. If you have a reasonable suggestion for improvements (or find any bugs, which is likely), do drop me a line and let me know.",
"keywords": ["browser","github","markdown","service","tools","clipboard","download","hints","markdown","secondly","service","tools","visit","account","added","allows","change","characters","command","convert","creating","default","document","download","entire","everyone","first","found","grabbed","improvements","inline","introduced","likely","links","little","maintaining","mistake","multiple","neatly","placed","posted","project","reasonable","recognizing","references","seems","smart","solution","sorted","stupid","style","suggestion","titles","trouble","updated","updates","version","working","writing","yesterday"]
},{
"title": "An average morning",
"url": "/2011/09/02/an-average-morning/",
"tags": ["experiments","scripting","service","textmate"],
"date": "Sep 2nd, 2011",
"ts": "1314982800",
"summary": "I was looking at some numbers on a web page. A wide variety of fairly large numbers. The web page didn t provide any kind of average for the numbers, and I was curious. Curious, of course, meant writing a script to solve the problem. Yes, I could have copied the numbers out, punched them into a calculator one by one, or opened up Numbers and pasted them into cells bah. I wanted to be able to copy text with all kinds of other junk in it and just get the average of all the values in contained quickly and easily (even if that meant wasting twice as much time up front). The script is simple enough that it should be easily adjustable to perform any kind of basic math on the array of numbers found in the text. The numbers don t have to be in any order in the input they can be listed vertically or horizontally or can just be scattered throughout text or messy table code. The regular expression should find them. The TextMate command suited my needs just fine, but then I started thinking about sharing it. What format would make the most sense? A System Service that accepted text and appended a line with the average? A TextExpander snippet that ran on the clipboard? A LaunchBar action that worked with Instant Send or Copy/Paste? I couldn t decide, and since the script was the only time-consuming part, I went ahead and made all of the above. The TextExpander snippet is now in the Tools group of my TextExpander projects. If you re subscribed to that group via URL, your group already updated with the Average numbers in clipboard snippet. Otherwise, go ahead and download it or set up a new subscription . The other two versions (and the script) are in the download below, and I threw in the original TextMate command, too. The LaunchBar action is actually a Script Bundle with the Ruby script packaged inside. If you ve ever wondered how to reference a self-contained script in AppleScript, it s a decent example. It installs to . The System Service is a standard Automator action using the script above, and installs to . Want to see a video of it? Really? Why? I m in that semi-asleep state where I thought it would be easier to show what it does than explain it. Since I doubt anyone else really has a need for this script, the video is a tribute to my ability to waste time in the early morning. Average Numbers in Selection v1 Download Average Numbers in Selection v1 A Ruby script, an OS X System Service and a LaunchBar action for finding any numbers in a block of",
"keywords": ["applescript","howbert","launchbar","locator","resource","textexpander","textmate","applescript","automator","average","bundle","changelog","curious","donate","download","instant","launchbar","numbers","paste","published","script","selection","service","since","system","textexpander","textmate","tools","updated","ability","above","accepted","action","adjustable","ahead","anyone","appended","array","asleep","average","basic","below","block","calculator","cells","clipboard","command","consuming","contained","copied","couldn","curious","decent","decide","doubt","download","easier","easily","enough","example","explain","expression","fairly","finding","format","found","front","group","horizontally","input","inside","installs","kinds","listed","looking","meant","messy","morning","needs","numbers","opened","original","packaged","pasted","problem","projects","punched","quickly","regular","returning","scattered","script","sense","sharing","simple","since","snippet","solve","standard","started","subscribed","subscription","suited","table","thinking","thought","threw","throughout","tribute","twice","updated","using","values","variety","version","versions","vertically","video","wanted","waste","wasting","where","wondered","worked","writing","wrote"]
},{
"title": "Some Chrome love for the Markdown Service Tools",
"url": "/2011/09/01/some-chrome-love-for-the-markdown-service-tools/",
"tags": ["markdown","markdownservices","service"],
"date": "Sep 1st, 2011",
"ts": "1314912180",
"summary": "The Markdown Service Tools which already received one update today just got a little bit of Chrome support. The md - Links from Safari Tabs now has a Chrome counterpart. At the time that I first wrote the Markdown Service Tools, Chrome didn t support AppleScript well enough for this to be feasible, but opening up the AppleScript dictionary now reveals a full set of commands and objects. Nice to see. I know there have been a lot of posts here today (at least compared to my average) I m on vacation, technically. I m actually packing up boxes for a move to a new house over the next couple of days, and this is my OSHA break. I make no promises about keeping this rate of posting up! Anyway, you can download the latest version of the Markdown Service Tools below, or see the project page for more information on all of the included services.",
"keywords": ["apple","applescript","automator","chrome","google","locator","markdown","multimarkdown","resource","service","tools","anyway","applescript","chrome","download","links","markdown","safari","service","tools","average","below","boxes","break","commands","compared","counterpart","couple","dictionary","download","enough","feasible","first","house","included","information","keeping","latest","little","moved","objects","opening","packing","posting","posts","project","promises","received","reveals","services","support","technically","today","vacation","version","wrote"]
},{
"title": "Web excursions: August 27, 2011 - September 1, 2011",
"url": "/2011/09/01/web-excursions-august-27-2011-september-1-2011/",
"tags": ["bookmarks"],
"date": "Sep 1st, 2011",
"ts": "1314902340",
"summary": "Links of interest from August 27, 2011 through September 1, 2011: getpermalink memory usage issues WordPress: a couple of tips from Yoast to drastically reduce your get_permalink memory usage in many cases. Adaptive Images in HTML Awesomely simple solution to providing different size images to different devices. Uses .htaccess and GD lib to automate the process. Learn Vim Progressively Really great intro to using Vim. Seriously. Sublime Text 2 Tips and Tricks Some great tips for setting up Sublime Text 2. If you re playing around with this text editor, it s worth exploring some of its more powerful capabilities. alampros/markium - GitHub Github Flavored Markdown plugin for Adium (with syntax highlighting). Just starting to test this out, but it s already awesome.",
"keywords": ["adium","editor","editors","highlighting","sublime","syntax","wordpress","adaptive","adium","awesomely","flavored","github","github","images","learn","links","markdown","progressively","seriously","sublime","tricks","wordpress","yoast","alampros","automate","awesome","capabilities","couple","devices","different","drastically","editor","exploring","great","highlighting","htaccess","images","interest","intro","issues","markium","memory","permalink","playing","plugin","powerful","process","providing","setting","simple","solution","starting","syntax","through","usage","using","worth"]
},{
"title": "New Markdown Service tool: HTML to Clipboard",
"url": "/2011/09/01/new-markdown-service-tool-html-to-clipboard/",
"tags": ["markdown","markdownservices","multimarkdown","service"],
"date": "Sep 1st, 2011",
"ts": "1314888180",
"summary": "In response to a tweet from @gl3media , I ve added a quick modification of the MultiMarkdown to HTML service to the Markdown Service Tools project page. It simply renders the selected text to HTML via MultiMarkdown 2 (Perl) and SmartyPants, putting the result on the clipboard and leaving the original text alone. I left it as the Perl version instead of the new PEG version because it was easier to embed, and allows me to force snippet rendering. Modify as you see fit, but this version makes a nice, neat package that does MultiMarkdown rendering without the need for any other installation. I thought others might find it useful, especially as an addition to Marked and nvALT capabilities, so here it is! Download the service as part of the Markdown Service Tools package. See the how-to page on Installing System Services if you have questions!",
"keywords": ["editor","latex","markdown","microsoft","multimarkdown","service","tools","download","installing","markdown","marked","modify","multimarkdown","service","services","smartypants","system","tools","added","allows","alone","because","capabilities","clipboard","easier","embed","especially","force","installation","leaving","makes","media","nvalt","original","others","package","project","putting","questions","quick","rendering","renders","response","selected","service","simply","snippet","thought","useful","version"]
},{
"title": "App Review: Yoink",
"url": "/2011/09/01/app-review-yoink/",
"tags": ["appreview","macos","utility"],
"date": "Sep 1st, 2011",
"ts": "1314882120",
"summary": "I tweeted the other day that @eternalstorms is way too good at solving my problems for me . What I was referring to was Yoink , which just became available today. It s an uber-simple app which provides a drawer for dragging files between spaces and full-screen apps. I wrote it up on TUAW this morning , so I won t go into detail here. There s a 15-day trial available , and you can pick it up on the Mac App Store for US$2.99. Definitely worth a look, especially for Lion users.",
"keywords": ["apple","iphone","macintosh","store","definitely","store","yoink","available","became","between","detail","dragging","drawer","especially","eternalstorms","files","morning","problems","provides","referring","screen","simple","solving","spaces","today","trial","tweeted","users","worth","wrote"]
},{
"title": "Why Markdown? A two-minute explanation",
"url": "/2011/08/31/why-markdown-a-two-minute-explanation/",
"tags": ["blogging","markdown","writing"],
"date": "Aug 31st, 2011",
"ts": "1314799200",
"summary": "Anyone who s read this blog, used my projects or has talked to me about anything nerdy for more than five minutes knows I m a fan of Markdown. The question doesn t come up often, but occasionally someone dares to ask despite the apparent probability that it will lead to a lengthy explanation why I use Markdown in so many of my workflows. I give just about the same response to seasoned nerds as I do to my not-so-computer-savvy friends. This isn t the Markdown what , it s the Markdown why It s easy: the syntax is so simple you can barely call it syntax. If you can use an emoticon, you can write Markdown. It s fast: the simple formatting saves a significant amount of time over hand-crafted HTML tags, and is often faster than using a word processor or WYSIWYG editor. It speeds up the workflows of writers of all ilk, from bloggers to novelists. It s clean: Markdown translates quickly to perfectly-formed HTML. No missing closing tags, no improperly nested tags, no blocks left without containers. You also get 100% less cruft than exporting HTML from Microsoft Word. There s no styling inline, nothing that will otherwise break a site s design or mess with the XSLT formatting for PDF output. In short, it s foolproof. It s portable: your documents are cross-platform by nature. You can edit them in any text-capable application on any operating system. Transporting files requires no zipping or archiving, and the filesize is as small as it can possibly get. It s flexible: output your documents to a wide array of formats. Convert to HTML for posting on the web, rich text for sending emails or importing into a layout program for final arrangement or any number of other proprietary formats. It fits any workflow: You can make Markdown work with any workflow. It can speed up just about any writing-related process with very little setup. It can also be scripted all to hell, if you want, because plain text is the most flexible of any format known to computer-kind. And there it is, my two-minute explanation. I ll be printing this on T-shirts which will be available soon. No, not really. I ll just keep making Markdown as easy as possible with Marked and nvALT (yes, shameless plugs).",
"keywords": ["element","formats","markdown","microsoft","processor","wysiwyg","anyone","convert","markdown","marked","microsoft","transporting","wysiwyg","amount","archiving","arrangement","array","available","barely","because","blocks","bloggers","break","capable","clean","closing","computer","containers","crafted","cross","cruft","dares","design","documents","doesn","editor","emails","emoticon","explanation","exporting","faster","files","filesize","flexible","foolproof","format","formats","formatting","formed","friends","importing","improperly","inline","knows","layout","lengthy","little","making","minute","minutes","missing","nature","nerds","nerdy","nested","nothing","novelists","nvalt","occasionally","often","operating","output","perfectly","platform","plugs","portable","possible","possibly","posting","printing","probability","process","processor","program","projects","proprietary","quickly","related","requires","response","saves","savvy","scripted","seasoned","sending","setup","shameless","shirts","short","significant","simple","small","speed","speeds","styling","syntax","system","talked","translates","using","workflow","workflows","write","writers","writing","zipping"]
},{
"title": "Dropbox and seamless mutli-Mac computing?",
"url": "/2011/08/30/dropbox-and-seamless-mutli-mac-computing/",
"tags": ["dropbox","scripting"],
"date": "Aug 30th, 2011",
"ts": "1314743520",
"summary": "Joe Workman put out a utility today for sharing Application Support folders between machines using Dropbox. It uses symlinks to allow moving the folder out of and into your Dropbox but keeping it accessible to the application. This is a great trick, and the Joe s utility makes it dead simple to pull off. The biggest concern, however, is the possibility of corruption and other issues if you run the application on multiple machines simultaneously. As Joe said on Twitter, Dropbox has great versioning and you can recover pretty easily. I started thinking, though, about a way to script the launch of an application such that it would shut down any remote counterparts before launching. I haven t figured out the solution yet, but I thought I d put some ideas out there to see if anyone had the missing puzzle pieces. My basic approach would be a combination of shell scripting (SSH) and AppleScript (). AppleScript s command allows the remote application to shut down cleanly, and many applications accept the parameter to save open files without asking. Not enough of them, though, and if an unsaved file asks to be saved, it can hang a remote call indefinitely. You can force quit () an app easily, but that doesn t really provide the clean exit you want before the application data is synced. You can also pause () an app, but again, that leaves too much data unwritten, and when it s unpaused could just cause further sync conflicts. Launching the script is easy enough with LaunchBar or Quicksilver (or even an applet), but I was thinking about actually modifying the app bundle to make it effortless. If you go into the applications OS X binary folder, you can rename the binary and replace it with an executable shell script that runs your remote quit process before calling the renamed original. It s not proofed against updates and is easily broken, but means you can launch apps without thinking twice about whether you left it running on another machine. Any thoughts are welcome. This could be a really useful script if the holes were patched up. In the meantime, if you re a responsible multi-machiner who always quits their apps before switching Macs, check out DropboxAppSync .",
"keywords": ["applescript","dropbox","launchbar","twitter","windows","applescript","dropbox","dropboxappsync","launchbar","launching","quicksilver","support","twitter","workman","accept","accessible","again","against","allow","allows","another","anyone","applet","applications","approach","asking","basic","before","between","biggest","binary","broken","bundle","calling","cause","check","clean","cleanly","combination","command","concern","conflicts","corruption","counterparts","doesn","easily","effortless","enough","executable","figured","files","folder","folders","force","great","haven","holes","however","ideas","indefinitely","issues","keeping","launch","launching","leaves","machine","machiner","machines","makes","meantime","missing","modifying","moving","multi","multiple","original","parameter","patched","pause","pieces","possibility","process","proofed","puzzle","quits","recover","remote","rename","renamed","replace","responsible","running","saved","script","scripting","sharing","shell","simple","simultaneously","solution","started","switching","symlinks","synced","thinking","thought","thoughts","today","trick","twice","unpaused","unsaved","unwritten","updates","useful","using","utility","versioning","welcome"]
},{
"title": "Break up your text documents",
"url": "/2011/08/29/break-up-your-text-documents/",
"tags": ["nvalt","writing"],
"date": "Aug 29th, 2011",
"ts": "1314669000",
"summary": "I ve heard complaints over the last year that apps such as nvALT and Marked slow down when handling large documents. I m constantly working to optimize the code and the preview processes, but here s a tip that I hope will be taken to heart: split your longer text documents into manageable portions. Working with one large document is less than ideal from many standpoints. I personally can t imagine navigating a twenty-thousand-word document for any practical purpose. The OS X filesystem, Spotlight and other tools are brilliant for searching and dealing with multiple documents within a folder. Less so for huge documents. The likelihood of a document showing up in a specific search is significantly greater if it has 20,000 words to match, but the chances that the document will actually be what you re looking for is greatly reduced. From an editing perspective, navigating to a certain chapter or section within a document that large is simply impractical. Tools like nvALT make it easy to break a document into pieces, associate them with matching tags and have them show up in your notes search as a navigable list of sections. Name them with numerical prefixes and sort by name to order chapters as needed. nvALT is meant for this kind of separation, not for housing a word-processor style document. Scrivener is an amazing tool for organizing large documents. It can also sync the parts of a document out to Dropbox or Simplenote and can thus work directly with nvALT. Even without Scrivener, it s a simple task to load up a folder of related documents as a project in most text editors. The ideal workflow for me is to break up documents into multiple files within a folder. I use OpenMeta tags to associate them in general, but a folder is universally accepted as a container for related files. Scrivener is my tool of choice for large-scale projects, but I frequently load folders of related text up as TextMate projects, too. Actions such as search-and-replace, compiling output, etc. are just as easy with a folder, and navigating the document as I m editing is much, much easier.",
"keywords": ["documents","dropbox","editor","folder","microsoft","scrivener","spotlight","textmate","actions","dropbox","marked","openmeta","scrivener","simplenote","spotlight","textmate","tools","working","accepted","amazing","associate","break","brilliant","certain","chances","chapter","chapters","choice","compiling","complaints","constantly","container","dealing","directly","document","documents","easier","editing","editors","files","filesystem","folder","folders","general","greater","greatly","handling","heard","heart","housing","ideal","imagine","impractical","likelihood","longer","looking","manageable","match","matching","meant","multiple","navigable","navigating","needed","notes","numerical","nvalt","optimize","organizing","output","parts","personally","perspective","pieces","portions","practical","prefixes","preview","processes","processor","project","projects","reduced","related","replace","scale","search","searching","section","sections","separation","showing","significantly","simple","simply","specific","split","standpoints","style","taken","thousand","tools","twenty","universally","within","words","workflow","working"]
},{
"title": "App review: Launchpad-Control",
"url": "/2011/08/27/app-review-launchpad-control/",
"tags": ["appreview","launchpad","macos"],
"date": "Aug 27th, 2011",
"ts": "1314502980",
"summary": "Here s a little gem of an app: Launchpad-Control . It s actually a Preference Pane, and it allows you to use simple checkboxes to show and hide items, folders and even entire pages of applications in Lion s Launchpad. I had a folder filled with Adobe Uninstaller apps that I didn t really want to delete but definitely did not need in my Launchpad. Poof, gone. A couple of apps I had deleted but whose demise Lion refused to accept poof. Now that I have everything sorted and am able to remove the cruft, Launchpad is of much greater use to me. Launchpad-Control is free, but donations are accepted. Visit the homepage for download and PayPal links.",
"keywords": ["launchpad","operating","preference","store","system","adobe","control","launchpad","paypal","preference","uninstaller","visit","accept","accepted","allows","applications","checkboxes","couple","cruft","definitely","deleted","demise","donations","download","entire","everything","filled","folder","folders","greater","homepage","items","links","little","pages","refused","remove","simple","sorted","whose"]
},{
"title": "Antique is back, baby",
"url": "/2011/08/27/antique-is-back-baby/",
"tags": ["antique","reader","safari"],
"date": "Aug 27th, 2011",
"ts": "1314467760",
"summary": "Thanks to a pointer from Jeremy Lu, I ve got the Antique Safari Reader hack running in Safari 5.1. I can t begin to tell you how much I d missed it since updating to Lion. I ve updated the instructions page to include the Lion location of Reader.html. The file is now located at . A quick command would have told me that, but I didn t think to look outside of the application bundle for it. Thanks, Jeremy. Antique is still at version 1.6, but I may do some updating now that it s back in action. Download below. Antique 1.6 for Safari Reader v1.6 Download Antique 1.6 for Safari Reader v1.6 Version 1.6 of the Antique hack for Safari 5. Adds pleasant styling to Reader, with many additional features. Published 06/13/10. Updated 06/13/10. Changelog Donate More info Your support is greatly appreciated! Or me on GitHub!",
"keywords": ["adobeflash","adobeflashplayer","apple","bundle","operating","safari","system","antique","changelog","donate","download","github","jeremy","published","reader","safari","thanks","updated","version","action","appreciated","begin","below","bundle","command","features","greatly","instructions","located","location","missed","outside","pleasant","pointer","quick","running","since","styling","support","think","updated","updating","version"]
},{
"title": "Auto-link text service updated",
"url": "/2011/08/27/auto-link-text-service-updated/",
"tags": ["markdownservices"],
"date": "Aug 27th, 2011",
"ts": "1314466080",
"summary": "I ve updated the service mentioned in the post Automated search and link text. The Yahoo API broke (was sunset) and I needed to rewrite it to work with Bing instead. The result is below, and can also replace the md-Luck Link service from the Markdown Service Tools . The service, in case you re not familiar with it, takes selected text in any text field, runs a web search for it and replaces the text with an inline Markdown link to the first result. When linking obvious things it works really well. Results on more obscure searches, obviously, can be interesting (to say the least). Installation instructions for System Services can be found in the how-to section . This hasn t been thoroughly tested, but it s working well for me. If you have any bug reports, please contact me . Auto-link Web Search v2 Download Auto-link Web Search v2 A Snow Leopard Service that takes selected text, runs a Bing search for it and returns the first result as a Markdown link around the original text. Published 08/27/11. Updated 08/27/11. Changelog Donate More info",
"keywords": ["anchor","engine","google","interface","markdown","programming","search","yahoo","automated","changelog","donate","download","installation","leopard","markdown","published","results","search","service","services","system","tools","updated","yahoo","below","broke","contact","familiar","field","first","found","inline","instructions","interesting","linking","mentioned","needed","obscure","obvious","original","replace","replaces","reports","returns","rewrite","search","searches","section","selected","service","sunset","takes","tested","thoroughly","updated","working","works"]
},{
"title": "App Review: Byword",
"url": "/2011/08/26/app-review-byword/",
"tags": ["appreview","byword","macos","writing"],
"date": "Aug 26th, 2011",
"ts": "1314370440",
"summary": "In the interest of actually getting going on app reviews on this blog, I m mentioning a somewhat obvious one: Byword . While I still write my drafts in nvALT and do the heavy lifting and linking in TextMate with my Blogsmith Bundle , Byword has quickly become the place where I actually do my writing. I m not a big advocate of distraction-free writing. I ve never found that I need it, despite my ADD and generally short attention span. The fact is that as I write I m constantly checking facts and links in my browser, and it s mostly pointless to keep switching screens to do that. Byword is great for me because it doesn t focus solely on the distraction free aspect. Full-screen and focus modes are available, and it does a beautiful job with them, but it puts an equal amount of effort into just creating a pleasant atmosphere for writing. Great themes, great fonts and even some of the Markdown-specific tools (auto-pairing, wrapping and list continuation) that I m always begging for. Byword s developerOne of Byword s developers, Jorge Pedroso, has told me that nvALT and some of my other projects were an inspiration for the Markdown features in Byword, which is hugely flattering to me. He s also released a custom stylesheet for Marked which brings Byword s beautiful styling to any Markdown document. If you write, whether it s long-form or quick blog posts, Byword is an excellent way to do so. There s a lot of competition in this field I ve tried them all (seriously), but Byword has become my writing tool of choice on the Mac. You can pick it up on the Mac App Store for $9.99 US and it s worth every penny.",
"keywords": ["apple","byword","markdown","store","textmate","blogsmith","bundle","byword","great","jorge","markdown","marked","pedroso","store","textmate","while","advocate","amount","aspect","atmosphere","available","beautiful","because","begging","brings","browser","checking","choice","competition","constantly","continuation","creating","custom","developerone","developers","distraction","document","doesn","drafts","effort","excellent","facts","features","field","flattering","focus","fonts","found","generally","getting","going","great","heavy","hugely","inspiration","interest","lifting","linking","links","mentioning","modes","mostly","nvalt","obvious","pairing","penny","pleasant","pointless","posts","projects","quick","quickly","released","reviews","screen","screens","seriously","short","somewhat","specific","stylesheet","styling","switching","themes","tools","tried","where","worth","wrapping","write","writing"]
},{
"title": "Web excursions: August 19, 2011 - August 25, 2011",
"url": "/2011/08/25/web-excursions-august-19-2011-august-25-2011/",
"tags": ["bookmarks"],
"date": "Aug 25th, 2011",
"ts": "1314280800",
"summary": "Links of interest from August 19, 2011 through August 25, 2011: deck.js Modern HTML Presentations Awesome new presentation builder in HTML5. I m going to work on a TextMate bundle to use this with Markdown Word Breaks For Nerds Nice catch by Daniel Jalkut on the word break settings in Lion. h5o - HTML5 outliner (bookmarklet, Chrome extension) - Google Project Hosting Nice little bookmarklet/script/Chrome extension to create an outline of an HTML5 document based on the HTML5 draft specs. Initializr - Start your HTML5 project in 15 seconds! HTML5 Boilerplate on steroids. Responsive Web Design Techniques, Tools and Design Strategies Some brilliant ideas for extending your responsive web design toolbox.",
"keywords": ["chrome","extension","language","markdown","markup","outliner","shareware","textmate","awesome","boilerplate","breaks","chrome","daniel","design","google","hosting","initializr","jalkut","links","markdown","modern","nerds","presentations","project","responsive","strategies","techniques","textmate","tools","based","bookmarklet","break","brilliant","builder","bundle","catch","create","design","document","draft","extending","extension","going","ideas","interest","little","outline","outliner","presentation","project","responsive","script","seconds","settings","specs","steroids","through","toolbox"]
},{
"title": "Gratitude",
"url": "/2011/08/25/gratitude/",
"tags": ["apple","personal"],
"date": "Aug 25th, 2011",
"ts": "1314280500",
"summary": "Yesterday s news of Steve Jobs resignation was sad for me. My concern is not for Apple Apple is a vibrant community of designers and developers and Tim Cook will be excellent at the helm. My concern was for Steve Jobs. He has been one of the few people in my later life that I ve truly admired, and his work and principles have been of great inspiration to me. I d like to join many others in saying thanks, Steve.",
"keywords": ["apple","department","history","justice","reuters","states","steve","united","apple","steve","yesterday","admired","community","concern","designers","developers","excellent","great","inspiration","later","others","people","principles","resignation","saying","thanks","truly","vibrant"]
},{
"title": "OS X Service for natural language dates",
"url": "/2011/08/20/os-x-service-for-natural-language-dates/",
"tags": ["automator","naturallanguage","scripting","service"],
"date": "Aug 20th, 2011",
"ts": "1313852400",
"summary": "Updated to 1.3 on 6/1/13, more info here . A few people have requested a TextExpander set for dates. The problem is, getting the current date is easy with TextExpander variables, so that one s not worth the time to me. Anything else requires some scripting, and to be really flexible the set would need to include a very large array of snippets more than I could possibly keep straight. It could be done with one snippet if you could use the Fill In dialog as an input to a shell script, but you can t (are you listening Smile?). Instead, I whipped up a System Service this morning that lets you use keywords and natural language date input to return the specified date in various formats. You type out something like , select the text and run the Service and it will give you back . If there s no matching keyword at the beginning, it will assume ( strftime formatting ) and give you back . date = %m/%d/%y (slashed date) date today gives you 8/20/11 local = %F (localized date) local today gives you (well, me) 2011-8-20 short = %a, %b %d, %Y (abbreviated full date) short today gives you Sat, Aug 20, 2011 long = %A, %B %d, %Y (long full date) long today gives you Saturday, August 20, 2011 The language you can use depends on whether or not you have the chronic rubygem installed. If you can install rubygems, go to Terminal and run . If that fails, no worries, it will use PHP s to parse your string. It has a slightly more limited vocabulary, but anything like wednesday, yesterday or next friday will work. It installs like any other service, and you can set a keyboard shortcut for it in System Preferences - Keyboard - Keyboard Shortcuts - Services. Refer to my how-to on Installing System Services for a step-by-step explanation. This service was written on Lion, but should work fine on Snow Leopard, too. Feel free to extend the script with more keywords and formats. It s not too technical, just open up the workflow in Automator and find the case block for the keywords (around line 52). Then, copy the format and paste new lines (or edit existing ones) before the statement, keyword first then format (again, see PHP s documentation for strftime). Both Chronic and accept times as well, so if you wanted to do something like , you could add the format string for a time specification to an existing or new keyword. Convert Date - Natural Language Date Service v1.3 Download Convert Date - Natural Language Date Service v1.3 A System Service which takes",
"keywords": ["languages","leopard","programming","textexpander","automator","changelog","check","chronic","convert","donate","download","installing","keyboard","language","leopard","macdrifter","maestro","natural","preferences","published","python","saturday","service","services","shortcuts","smile","system","terminal","textexpander","updated","abbreviated","accept","again","ahead","array","assume","before","beginning","block","chronic","dates","define","depends","dialog","explanation","extend","fails","figured","first","flexible","format","formats","formatting","friday","getting","gives","input","install","installed","installs","keyboard","keyword","keywords","knocked","language","limited","listening","local","localized","looking","matching","morning","natural","parse","parses","paste","people","possibly","posted","problem","project","quick","requires","return","rubygem","rubygems","script","scripting","selected","service","share","shell","short","shortcut","similar","slashed","slightly","snippet","snippets","specification","standard","statement","straight","strftime","string","takes","technical","times","today","using","variables","various","version","vocabulary","wanted","wednesday","whipped","workflow","works","worries","worth","written","yesterday"]
},{
"title": "Sticking with what I know",
"url": "/2011/08/19/sticking-with-what-i-know/",
"tags": ["appreview"],
"date": "Aug 19th, 2011",
"ts": "1313806500",
"summary": "I ve been wanting to write more here, and seriously considering what I want to write about. Obviously, I should stick with what I know. What do I know best? Apps. When it comes to Mac and iOS apps, I try just about everything. I know my way around more apps than I can name apps I ll never use, apps I thought were terrible, apps I use every day whether I like them or not, I explore just about everything I can find. This gives me a great point of comparison when looking at any app, and I think my reviews are well-informed and fair. I know what I like, I know what sells, and I know that the two aren t always the same thing. This being the case, I m going to start writing app reviews here. If developers out there want to send me new apps, I ll gladly tell them what I think. However, I don t plan to stick to the new and shiny I also want to spread the word about some gems that I use regularly but which may not be in the spotlight at the moment. Yes, I still write app reviews for TUAW , and will likely continue to do so. In the last year, though, I accepted a salaried position with AOL. This has meant two things: first, my schedule is packed during the day, which is when important news tends to happen. Second, I don t get paid to write for TUAW anymore. The result is that my rate of posting on TUAW has slowed tremendously (from an already somewhat pathetic pace). Writing at a relaxed pace for my own blog makes sense at this point. If something is relevant enough, I ll write it up on TUAW and link it from here. I m hoping doing app reviews here will get me into blogging about things other than my personal projects. I m not going to slow down on that if I do something I think would be of interest, I m going to write it up like I always do. That s second nature, I just want to add on to that. If you re a dev who wants to send me previews or betas, feel free to contact me . I ll take a look at anything for Mac, iPad or iPhone. I m not interested in anyone paying for reviews, and not interested in any gifts post-review. I also tend to pass on writing about things I really dislike. If an app isn t ready for primetime, I prefer to give it time to mature rather writing negative reviews. If I don t like something, why would waste time criticizing it? That being said, if I think something is a really great idea but lacking in execution, or, conversely, a really great execution with an unsatisfactory core concept, I ll write a critique that will hopefully",
"keywords": ["apple","iphone","store","hopefully","however","second","writing","accepted","anymore","anyone","betas","blogging","comes","comparison","concept","considering","contact","continue","conversely","criticizing","critique","developers","dislike","doing","enlightening","enough","everything","execution","explore","first","gifts","gives","gladly","going","great","happen","hopefully","hoping","iphone","important","improvements","informed","interest","interested","intriguing","lacking","likely","looking","makes","mature","meant","nature","negative","packed","pathetic","paying","personal","point","position","posting","prefer","press","previews","primetime","projects","rather","ready","regularly","relaxed","relevant","reviews","salaried","schedule","second","sells","sense","seriously","shiny","slowed","somewhat","spotlight","spread","stick","system","tends","terrible","think","thought","tremendously","unsatisfactory","wanting","wants","waste","write","writing"]
},{
"title": "Web excursions: August 12, 2011 - August 19, 2011",
"url": "/2011/08/19/web-excursions-august-12-2011-august-19-2011/",
"tags": ["bookmarks"],
"date": "Aug 19th, 2011",
"ts": "1313766000",
"summary": "Links of interest from August 12, 2011 through August 19, 2011: Initializr - Start your HTML5 project in 15 seconds! HTML5 Boilerplate on steroids. Responsive Web Design Techniques, Tools and Design Strategies Some brilliant ideas for extending your responsive web design toolbox. Uniform - Sexy forms with jQuery Multiple themes and a good handful of options for accessible and good-looking forms. jQuery Chosen Plugin Very nice jQuery plugin for select elements as described by David Walsh. Chosen on GitHub Design with web fonts in your browser This is going to be pretty cool, I think. Requested my beta, I ll keep you posted.",
"keywords": ["cascading","david","design","development","github","javascript","jquery","luttrell","sheets","style","walsh","boilerplate","chosen","david","design","github","initializr","links","multiple","plugin","responsive","strategies","techniques","tools","walsh","accessible","brilliant","browser","described","design","elements","extending","fonts","forms","going","handful","ideas","interest","jquery","looking","options","plugin","posted","project","responsive","seconds","steroids","themes","think","through","toolbox"]
},{
"title": "Marked 1.2 is out!",
"url": "/2011/08/18/marked-1-2-is-out/",
"tags": ["macappstore","markdown","marked","multimarkdown"],
"date": "Aug 18th, 2011",
"ts": "1313702340",
"summary": "I m super-duper excited to announce that Marked version 1.2 is now in the Mac App Store. It s a rewrite from the ground up same great flavor, all new file watching mechanism. It uses Spotlight to track changes now, which is far more stable and adept at handling things like name changes and deletions of open files. The only catch is that you have to have Spotlight indexing turned on and available in the folder where your file is (i.e. not set to private in Spotlight settings). Marked 1.2 also adds niceties such as search, GitHub styles for editing files, and the ability to actually copy and paste from the preview and source views using standard shortcut keys (sorry that wasn t there to begin with). Here s hoping that I fixed more than I broke in the process, and that you all enjoy the new release! Check out the Marked website for more info, and see the release notes for the full (and very long) list of what s new! Also, I ll soon be unveiling a library of user-contributed custom styles, tips, tricks, scripts and System Services for making the most of Marked. If you have any of these that you d like to contribute (with attribution, of course), let me know!",
"keywords": ["computer","finder","github","keyboard","management","shortcut","spotlight","store","check","github","marked","services","spotlight","store","system","ability","adept","announce","attribution","available","begin","broke","catch","changes","contribute","contributed","custom","deletions","duper","editing","enjoy","excited","files","fixed","flavor","folder","great","ground","handling","hoping","indexing","library","making","mechanism","niceties","notes","paste","preview","private","process","release","rewrite","scripts","search","settings","shortcut","sorry","source","stable","standard","styles","super","track","tricks","turned","unveiling","using","version","views","watching","website","where"]
},{
"title": "KeyBinding madness",
"url": "/2011/08/13/keybinding-madness/",
"tags": ["keybindings","keyboard","macos"],
"date": "Aug 13th, 2011",
"ts": "1313252580",
"summary": "There s a somewhat mysterious individual who is consistently leaving brilliant little pieces of code and information in my comments. Dr. Drang has been visited by this apparition as well. We re both duly impressed with what he (or she?) does. So, I m digging through the code Lri s posted and I find a DefaultKeyBinding.dict file. It s the best one I ve ever seen, and it inspires me to do some fiddling of my own. I figured I d post my result, but with due credit to Lri (hi, Lri!). The DefaultKeyBinding.dict file tells your computer at a fairly root level how to handle keyboard shortcuts in input fields. It doesn t work everywhere, but sometimes it s surprising where it does work. In those cases, you can save yourself a ton of time by committing a few custom keystrokes to memory. You may be familiar with the basic Emacs keybindings that are default (Ctrl-a beginning of line, Ctrl-e end of line, etc.), but this allows you to go much further. For more information, check out Macworld hints , an older but very relevant article from Harvard and do a search for more information . Basically, all you need to do is put the DefaultKeyBinding.dict file into and restart applications you want it to work in. Edit away, and change shortcuts to things you re comfortable with. Several of mine are sequences which allow groupings, which I like, but you might not. Be aware that these can be a little unpredictable as to when they ll override a system/application default and when they ll be overridden (I know there s a logic to it, I just don t want to dive into that). I ve posted my KeyBindings on GitHub and included a cheatsheet in MultiMarkdown as well as a Readme with the tables already rendered. Direct download link below. If you re looking for something to nerd out on this weekend, this should whet your appetite. Killer DefaultKeyBinding.dict v1 Download Killer DefaultKeyBinding.dict v1 A custom DefaultKeyBinding.dict file which adds shortcuts for document navigation, Markdown and much more. Inspired by Lri . Published 08/13/11. Updated 08/13/11. Changelog Donate More info Your support is greatly appreciated! Or me on GitHub! Grouped items begin with the groups shortcut, followed by the Keys specified. Items separated by commas are sequential, not concurrent. Opt-, move paragraph up a line, inserting blank space after Ctrl-Cmd-w i,t image, selection as alt Ctrl-Cmd-w :,c create a reference from selected text, clipboard as url",
"keywords": ["control","github","keyboard","shift","shortcut","shortcuts","table","changelog","defaultkeybinding","direct","document","donate","download","drang","emacs","function","github","group","grouped","harvard","headlines","inspired","items","keybindings","killer","macworld","markdown","multimarkdown","paragraph","pgdown","published","readme","return","scroll","several","shift","surround","updated","above","allow","allows","apparition","appetite","applications","appreciated","article","aware","backticks","basic","before","begin","beginning","below","blank","bookmark","brilliant","capitalize","change","character","characters","cheatsheet","check","clipboard","combos","comfortable","commas","comment","comments","committing","computer","concurrent","consistently","create","credit","cursor","custom","default","digging","document","doesn","double","download","entire","entity","everywhere","fairly","familiar","fiddling","fields","figured","followed","force","greatly","groupings","groups","handle","hints","image","impressed","included","indent","individual","information","input","inserting","inspires","italicize","items","keybindings","keyboard","keystrokes","leaving","level","lists","little","logic","looking","lowercase","memory","modify","motion","mysterious","navigation","older","outdent","overridden","override","paragrah","paragraph","paste","pieces","posted","quote","quotes","relevant","rendered","repeat","restart","search","selected","selection","separated","sequences","sequential","shortcut","shortcuts","single","sometimes","somewhat","space","spaces","specific","support","surprising","system","table","tables","tells","through","transpose","unpredictable","uppercase","visited","weekend","where"]
},{
"title": "Web excursions: August 9, 2011 - August 12, 2011",
"url": "/2011/08/12/web-excursions-august-9-2011-august-12-2011/",
"tags": ["bookmarks"],
"date": "Aug 12th, 2011",
"ts": "1313208000",
"summary": "Links of interest from August 9, 2011 through August 12, 2011: Techniques For Gracefully Degrading Media Queries Some pitfalls and solutions in responsive web design. KeyBindings - Lri.me Pure. KeyBinding. Magic. Not for the faint of heart, but some awesome ideas in here from Lri. Add Markdown shortcuts system-wide and much, much more. Review: Coffee Joulies Thorough review, disappointing conclusion I was excited about these. Fixing the JavaScript typeof operator A review of and a handy function that s a fully-loaded, more reliable alternative that works directly with the language internals. WordPress plugin: re.place re.place is a module wich acts as a content filter. It searches for pre-defined regular expressions and replaces matches with pre-defined replacements. Simple concept, elegantly done.",
"keywords": ["expression","javascript","keyboard","media","programming","queries","regular","shortcut","tools","typeof","wordpress","coffee","degrading","fixing","gracefully","javascript","joulies","keybinding","keybindings","links","magic","markdown","media","queries","simple","techniques","thorough","wordpress","awesome","concept","content","defined","design","directly","disappointing","elegantly","excited","expressions","faint","filter","fully","function","handy","heart","ideas","interest","internals","language","loaded","matches","module","operator","pitfalls","plugin","regular","reliable","replacements","replaces","responsive","searches","shortcuts","solutions","system","through","typeof","works"]
},{
"title": "Quick Tip: Extracting Mac App Store reviews as text",
"url": "/2011/08/12/quick-tip-extracting-mac-app-store-reviews-as-text/",
"tags": ["hacks","macappstore","markdown","markdownifier","marked","quicktip","terminal"],
"date": "Aug 12th, 2011",
"ts": "1313204760",
"summary": "Quick tips are random posts regarding something I discovered on my way to something bigger. They usually get longer than quick would imply, for which I refuse to apologize. Apple has disabled the ability to copy and paste text (or even select it) in the Mac App Store. This is fine for descriptions, you can just view the web preview and get what you need (just right click the icon in the App Store app and choose Copy Link to paste into your browser). You can even get to the first few reviews that way. Marked users have left some insanely nice reviews, though, and I wanted to capture them all (both for marketing and for general warm fuzzies). First, we need to enable WebKit s Inspector in the App Store. In case you didn t know it, the App Stores for both Mac and iOS (iTunes) are just HTML. With the Webkit Inspector loaded, you can dig right into the code. Now, (after starting App Store back up) when you right click an element, you ll get a contextual menu with Inspect Element. Go ahead and select it. If you re not familiar with the Inspector, have a peek around. The main section you need for this, though, is the first one: Elements. It shows an outline of the DOM (post JavaScript processing) and lets you select any element on the page. You can get to elements quickly by turning on the magnifying glass at the bottom and hovering over elements on the page to highlight them in the Inspector. Note that you can break the inspector out of the main window and into it s own with the icon in the lower left corner. For my purposes I wanted all of the html text in the reviews section, so I navigated to the containing element and selected it. Right clicking on the element in the inspector now offers me the ability to Copy as HTML. Doing that gives me that whole chunk of HMTL and makes writing up testimonials for the new Marked website much, much easier. If you want to go the extra mile, and I do, you might want to convert all of this markup to something more readable. If you use the Blogsmith Blogging bundle in TextMate, you already have a command (Convert HTML to Markdown) that will turn the HTML chunk into nicely formatted Markdown. You can also use html2text.py , Markdownify for PHP or Pandoc. A couple of quick regular expression search and replace maneuvers later, I have a list of all of my reviews thus far, with attribution and title. Nice. Marked 1.2 is looking great, by the way, and should be in your hands faster than you can terrace a backyard,",
"keywords": ["apple","element","inspect","inspector","javascript","store","webkit","apple","blogging","blogsmith","convert","doing","element","elements","first","inspect","inspector","javascript","markdown","markdownify","marked","maybe","pandoc","quick","right","store","stores","terminal","textmate","webkit","webkit","ability","ahead","apologize","assuming","attribution","available","backyard","bigger","bottom","break","browser","bundle","capture","choose","chunk","click","clicking","command","containing","contextual","convert","corner","couple","descriptions","disabled","discovered","easier","element","elements","evening","expression","extra","familiar","faster","first","formatted","fuzzies","general","gives","glass","great","hands","highlight","hovering","itunes","insanely","inspector","later","loaded","longer","looking","lower","magnifying","makes","maneuvers","marketing","markup","moderate","navigated","nicely","offers","outline","paste","posts","preview","processing","quick","quickly","random","readable","refuse","regular","replace","reviews","right","search","section","selected","shape","shows","starting","terrace","testimonials","title","turning","users","usually","wanted","website","weekend","weeks","whole","window","writing"]
},{
"title": "Option-arrow navigation in iTerm2",
"url": "/2011/08/12/option-arrow-navigation-in-iterm2/",
"tags": ["keyboard","terminal"],
"date": "Aug 12th, 2011",
"ts": "1313162340",
"summary": "I ve been trying to get Option-arrow keys to move by word in iTerm2. I figured out a solution, but it s weird. If anyone has an explanation or a better way to do this, let me know. With these in place both work swimmingly. I don t know why I had to do both parts, though",
"keywords": ["arrow","control","keyboard","microsoft","shortcut","window","windows","escape","first","profiles","right","sequence","action","anyone","arrow","bottom","combinations","comments","explanation","field","figured","hotkey","iterm","keyboard","options","parts","possibly","preferences","pressing","readers","right","shortcut","solution","solutions","swimmingly","symbol","trying","under","weird"]
},{
"title": "Web excursions: July 30, 2011 - August 4, 2011",
"url": "/2011/08/09/web-excursions-july-30-2011-august-4-2011/",
"tags": ["bookmarks"],
"date": "Aug 9th, 2011",
"ts": "1312946820",
"summary": "Links of interest from July 30, 2011 through August 4, 2011: CSS Crush An extensible PHP based CSS preprocessor Nice script for CSS minification and concatenation using @import statements. CSS3 Bling in the Real World Some great tips for cross-browser and progressively enhanced CSS3 from A List Apart. Unofficial IMDb Still looking for a project to use this on, but it s pretty cool.",
"keywords": ["cascading","formats","sheets","style","tutorial","tutorials","world","apart","bling","crush","links","unofficial","world","based","browser","concatenation","cross","enhanced","extensible","great","import","interest","looking","minification","preprocessor","progressively","project","script","statements","through","using"]
},{
"title": "Prefixr OS X Service",
"url": "/2011/08/09/prefixr-service/",
"tags": ["macos","service"],
"date": "Aug 9th, 2011",
"ts": "1312946460",
"summary": "Just for giggles, and because Jeffrey Way was kind enough to provide a simple API for Prefixr , here s a System Service that will turn your standard CSS3 properties into cross-browser, vendor-prefixed versions. You can select an entire stylesheet and it will send back the text with the necessary changes, or just run it on a single rule to have it vendor-prefixed for you. It turns this: Pretty handy. Sass can do this for you, and there are already plugins for TextMate, Vim, Espresso, Coda and more on Prefixr s API page . Just thought I d add one more to the pile. Unzip it and drop it into . Select some text containing CSS3 properties and right click on the selection, then look under Services for the Prefixer service. Run it and (assuming you have an internet connection), it ll do some of the tedious parts of CSS3 for you. Prefixr Service v1 Download Prefixr Service v1 Uses the Prefixr.com API to process your standard CSS3 properties into cross-browser, vendor-prefixed versions. Published 08/09/11. Updated 08/09/11. Changelog Donate More info",
"keywords": ["cascading","espresso","interface","programming","sheets","style","textmate","vendor","changelog","donate","download","espresso","jeffrey","prefixer","prefixr","published","service","services","system","textmate","unzip","updated","assuming","because","browser","changes","click","containing","cross","enough","entire","giggles","handy","internet","necessary","parts","plugins","prefixed","process","properties","right","selection","service","simple","single","standard","stylesheet","tedious","thought","turns","under","vendor","versions"]
},{
"title": "nvALT Browser Extensions",
"url": "/2011/07/29/nvalt-browser-extensions/",
"tags": ["browser","nvalt"],
"date": "Jul 29th, 2011",
"ts": "1311944880",
"summary": "Elastic Threads has also put together some amazing browser extensions (Safari and Chrome) to go with the nvALT 2.1 release . Clip links, selected text and entire pages (optionally using Instapaper Mobilizer) straight to nvALT. You can download both extensions at Elastic s website . If you use the Instapaper Mobilizer option, you can turn off Readability in the import preferences. It s faster than the built-in Readability anyway.",
"keywords": ["bookmarklet","browser","chrome","extension","google","instapaper","readability","safari","chrome","elastic","instapaper","mobilizer","readability","safari","threads","amazing","anyway","browser","built","download","entire","extensions","faster","import","links","nvalt","optionally","pages","preferences","release","selected","straight","together","using","website"]
},{
"title": "nvALT 2.1 in the wild",
"url": "/2011/07/29/nvalt-2-1-in-the-wild/",
"tags": ["nvalt"],
"date": "Jul 29th, 2011",
"ts": "1311939540",
"summary": "nvALT users have waited a while for this version, and Elastic Threads and I are excited to finally be posting it for you. It s also available through automatic updates, so current users should be seeing an internal notice soon as well. This version adds a plethora of new features, including better MultiMarkdown 3 support, Simplenote tag sync 1 (and a fix for Lion syncing), the ability to lock a note to the preview window while editing another, auto-pairing and wrapping and quite a few bug fixes. The current features of nvALT are going to be merged into the main Notational Velocity trunk. nvALT will exist as a cutting edge development channel. We re excited about this change and about bringing the additional features of nvALT to the wider NV audience. Version 2.2 will follow much more quickly than the time between 2.0 and 2.1. There are many more additional features in progress, including baked-in MMD3 support, fixes from the main NV 2b5, Lion fullscreen, bounceback scroll, and other 10.7 compatibility stuff (fixed Find ). Snazzy new menubar icons will be included, too. Promise. If you re looking for more Markdown goodness in other applications, be sure to check out Marked , too. Marked is great for getting nvALT-style Markdown previews in other editors. It will work with nvALT if you save your notes to individual text files, but a more user-friendly integration is in the works. Darryl Thomas has done the development for the sync . It s in preliminary stages, but is working. It does not handle incremental/progressive sync yet, so very large note collections with many tags can see unusually long sync times.",
"keywords": ["iphone","locator","markdown","multimarkdown","notational","plaintext","resource","simplenote","velocity","darryl","elastic","markdown","marked","multimarkdown","notational","promise","simplenote","snazzy","thomas","threads","velocity","version","ability","another","applications","audience","automatic","available","baked","between","bounceback","bringing","change","channel","check","collections","compatibility","cutting","development","editing","editors","excited","exist","features","files","finally","fixed","fixes","friendly","fullscreen","getting","going","goodness","great","handle","icons","included","including","incremental","individual","integration","internal","looking","menubar","merged","notes","nvalt","pairing","plethora","posting","preliminary","preview","previews","progressive","quickly","scroll","seeing","stages","stuff","style","support","syncing","through","times","trunk","unusually","updates","users","version","waited","while","wider","window","working","works","wrapping"]
},{
"title": "Web excursions: July 12, 2011 - July 27, 2011",
"url": "/2011/07/27/web-excursions-july-12-2011-july-27-2011/",
"tags": ["bookmarks"],
"date": "Jul 27th, 2011",
"ts": "1311778800",
"summary": "Links of interest from July 12, 2011 through July 27, 2011: Hackinations: 5 really good Lion tweaks TUAW - The Unofficial Apple Weblog Some great Lion tweaks from Erica Sadun. For the most part I prefer to just get used to the way things are, but these cover some details that do actually bug the hell out of me. Calculate Browser Scrollbar Width Great jQuery trick from Jonathan Sharp for finding the width of the scrollbar in any given browser. Red Sweater Blog Picking Off iCal s Paper Bits In case the torn edges in Lion s iCal are bugging you 6 Methods For Vertical Centering With CSS Van SEO Design I m partial to negative margins, but that s just me. Some great info. jQuery.fn.each vs. jQuery.fn.quickEach Check out the live test results on this optimization for the jQuery each() function.",
"keywords": ["cascading","erica","formats","jquery","sadun","scrollbar","sheets","style","tools","apple","browser","centering","check","design","erica","great","hackinations","jonathan","links","methods","paper","picking","sadun","scrollbar","sharp","sweater","unofficial","vertical","weblog","width","browser","bugging","cover","details","edges","finding","function","great","interest","jquery","margins","negative","optimization","partial","prefer","quickeach","results","scrollbar","through","trick","tweaks","width"]
},{
"title": "Using Textile in Marked",
"url": "/2011/07/12/using-textile-in-marked/",
"tags": ["marked","textile"],
"date": "Jul 12th, 2011",
"ts": "1310471520",
"summary": "A few people have asked how to get Textile working in Marked . You need to have a Textile converter available from the command line. There are a few options, including Pandoc, but the two easiest I ve found are RedCloth for Ruby and Textile for Perl (requires that the Developer Tools be installed). Install one or the other: Install Textile from https://github.com/bradchoate/text-textile OR in Terminal. Set your preferences like this for the Perl version. Use for RedCloth. Note: your install paths may differ. You can determine the correct path using or in the Terminal.",
"keywords": ["added","business","languages","pandoc","programming","textile","value","developer","install","marked","pandoc","redcloth","terminal","textile","tools","asked","available","bradchoate","command","converter","differ","easiest","found","github","https","including","install","installed","options","paths","people","preferences","previewer","requires","textile","using","version","working"]
},{
"title": "Marked is on the Mac App Store",
"url": "/2011/07/11/marked-is-on-the-mac-app-store/",
"tags": ["macappstore","markdown","marked","multimarkdown"],
"date": "Jul 11th, 2011",
"ts": "1310441400",
"summary": "Well, my secret project is up and out: Marked was approved by Apple today for sale in the Mac App Store. It s a Markdown previewer which can watch any text file for changes, updating the HTML preview whenever you save it. It adds Markdown preview to any text editor. Marked has four built-in styles to suit most tastes, but you can also create your own custom CSS and tell Marked where to find it. Just export a document with lots of markup in it with the CSS embedded (check the box at the bottom of the Save dialog) and you ll have a full structure to work with. Marked can also print and print to PDF, and it maintains styling (without backgrounds) so you get professional, finished documents from your Markdown. As mentioned above, it also exports to HTML, with or without the preview styles. You can copy the HTML source as a snippet from your current document with a keystroke at any time (Command-Shift-C). Marked s preview panel can be floated, keeping it above all other application windows. You can also set a transparency level on it and have it become translucent when it s not the foreground application. There are document statistics, too, so if your text editor doesn t have line, word and character counts, Marked has you covered. The word count is in the bottom bar of the window (you can hide it in preferences, if you want) and clicking it will give you a popup with other statistics. I m excited to have pulled this off. It s not a huge application and it s a really simple idea, but I got some good Objective-C experience and am proud of the result. Hopefully it will sell a few copies, too",
"keywords": ["apple","cascading","editor","markdown","preview","processor","sheets","store","style","apple","check","command","hopefully","markdown","marked","shift","store","above","approved","backgrounds","bottom","built","changes","character","check","clicking","copies","count","counts","covered","create","custom","dialog","document","documents","doesn","editor","embedded","excited","experience","export","exports","finished","floated","foreground","keeping","keystroke","level","maintains","markup","mentioned","panel","popup","preferences","preview","previewer","print","professional","project","proud","pulled","secret","simple","snippet","source","statistics","structure","styles","styling","tastes","today","translucent","transparency","updating","watch","whenever","where","window","windows"]
},{
"title": "Web excursions: July 5, 2011 - July 10, 2011",
"url": "/2011/07/10/web-excursions-july-5-2011-july-10-2011/",
"tags": ["bookmarks"],
"date": "Jul 10th, 2011",
"ts": "1310353200",
"summary": "Links of interest from July 5, 2011 through July 10, 2011: BoxJS - A simple package management service Script loading and minification via third party. jingweno/jekyllandhyde - GitHub This may quench my desire for a good Markdown- HTML Presentation setup. loads.in - test how fast a webpage loads in a real browser from over 50 locations worldwide Nice webpage speed test with 50 some locations and your choice of browser. Bricss Cool CSS tips in a bite-size format. JavascriptTips - jslibs - JavaScript language advanced tips and tricks - standalone JavaScript development runtime environment with general purpose native libraries - Google Project Hosting Ever feel like you know JavaScript pretty well? Guess again.",
"keywords": ["cascading","javascript","jquery","languages","programming","sheets","style","boxjs","bricss","github","google","guess","hosting","javascript","javascripttips","links","markdown","presentation","project","script","advanced","again","browser","choice","development","environment","format","general","interest","jekyll","jingweno","jslibs","language","libraries","loading","loads","locations","management","minification","native","package","party","quench","runtime","service","setup","simple","speed","standalone","third","through","tricks","webpage","worldwide"]
},{
"title": "I think I'm switching to Jekyll...",
"url": "/2011/07/10/i-think-im-switching-to-jekyll/",
"tags": ["wordpress","jekyll"],
"date": "Jul 10th, 2011",
"ts": "1310349840",
"summary": "I just spent the weekend experimenting with the idea of converting this whole blog from WordPress to Jekyll . It s a blogging system that runs entirely off of static html files, and you can store your posts as individual Markdown files. Add a post and you can regenerate all of the indexes and archives at once and deploy the static site. The speed and stability increase is immense. Exporting from WordPress to Jekyll took a good, I don t know, five minutes. Since I stored all of my posts in Markdown in the WordPress database, it was basically a few minutes of scripting to add YAML headers and get things rolling. The biggest issue is WordPress-specific markup and custom shortcodes that I need to clean up. I spent way too long tweaking the design, though, and my weekend got away from me. In the meantime It s up as a temporary test site on GitHub . It s really, really rough it s very much still a work in progress, but I know you ll be forgiving. nvALT 2.1 should be out very soon, and I have secret project keeping me busy right now, so I m not giving any ETA s on the final product. In the meantime, I d love to hear everyone s thoughts on Jekyll and other blog-related nerdery.",
"keywords": ["github","jekyll","markdown","static","tools","wordpress","exporting","github","jekyll","markdown","since","wordpress","archives","biggest","blogging","clean","converting","custom","database","deploy","design","entirely","everyone","experimenting","files","forgiving","giving","headers","immense","increase","indexes","individual","keeping","markup","meantime","minutes","nerdery","nvalt","posts","product","project","regenerate","related","right","rolling","rough","scripting","secret","shortcodes","specific","speed","spent","stability","static","store","stored","system","temporary","thoughts","tweaking","weekend","whole"]
},{
"title": "oft: Bash function for opening a specific filetype",
"url": "/2011/07/07/oft-bash-function-for-opening-a-specific-filetype/",
"tags": ["scripting","terminal"],
"date": "Jul 7th, 2011",
"ts": "1310076180",
"summary": "Here s another simple Bash function that I ve used so much recently I thought I should share. It s called , which stands for Open File Type, and can be used as a standalone shell script or as a function in your . When run, it looks in the current directory for files with extensions that match (or partially match) the first argument and opens them. My most obvious use case is Xcode projects, where I may have dozens (and dozens) of files, but there s only one file (folder). I don t always know the name of the project in the folder, but if I run it will open it without my having to search. If there is more than one result, it gives you a numeric menu to select the file you want to open. You can cancel, select a single file or Open ALL from that menu. If you run with no arguments, it will read a (partial) extension from a prompt. This is a script born of laziness (so many good ones are, though). You can accomplish the same with an , spot the file and . This is just faster and better for me when I m working with less-than-optimal amounts of sleep.",
"keywords": ["computer","extension","filename","format","management","manager","microsoft","operating","systems","windows","xcode","amounts","another","argument","arguments","called","cancel","directory","dozens","extension","extensions","faster","files","first","folder","function","gives","having","laziness","looks","match","numeric","obvious","opens","optimal","partial","project","projects","prompt","recently","script","search","share","shell","simple","single","sleep","standalone","stands","thought","where","working"]
},{
"title": "OTask: CLI for OmniFocus",
"url": "/2011/07/02/otask-cli-for-omnifocus/",
"tags": ["appscript","omnifocus","otask"],
"date": "Jul 2nd, 2011",
"ts": "1309633800",
"summary": "I ve been sitting on this one for a while, until I got a request from Patrick regarding an OmniFocus CLI and LaunchBar. I thought it might be time to dig this up and post it. A reader named Tony left a comment on my Duplicating Safari browsing sessions post, recommending that I try out appscript for my AppleScript bridging needs. I frequently use system calls to to do this, and I ve shied away from scripting bridges in the past because they make things much harder to share and distribute. I thought I d give it a try, though. I like it. I like it a lot. It s frustrating that I can t just hand you this script without a list of requirements and dependencies, but I m going share it anyway, just to show off some of the appscript s capabilities. What I built was a CLI for OmniFocus. I had an AppleScript/Ruby monstrosity that actually worked with TaskPaper, The Hit List, Things and OmniFocus, but that one got out of hand. I took the good parts of it, concentrated on OmniFocus and converted it to appscript in short time. The result is OTask. You need a few things before this will even think about running for you. RubyGems is a must. I still haven t figured out if that s part of the default OS X install or not, but if you have Developer tools, you ve got it. Then you need the rb-appscript gem. You also need the gems chronic and amatch . You can install each by using , and you may have to run the command with , depending on your system s permissions. If you re still on board, here are the docs, and the script is on GitHub . OTask uses a custom syntax to allow entry of the various elements of an action in one line of text. The following formats can be used anywhere in the line, with the exception of the flag (!) which must be the last character on the line, preceded by a space. @context (fragment, no spaces) #project (fragment, no spaces) due(due date) (can be shortened as d(date)) start(start date) (can be shortened as s(date)) (notes) ! (sets task as flagged) Contexts and project specifiers should not include spaces. The algorithm that is used will find the best match for the string you give it, so you only need to include enough of it to distinguish it from other contexts or projects. For example, if I were going to put an action directly into my Markdown QuickTags folder, I could just use #mdqt and it will find it. @corr will get me the correspondence context. Dates are entered in natural language format. You can type",
"keywords": ["apple","applescript","github","launchbar","omnifocus","rubygems","taskpaper","action","applescript","below","calling","command","contexts","create","dates","developer","displays","download","duplicating","editor","everything","example","github","growl","launchbar","markdown","notes","nothing","otask","omnifocus","output","patrick","quicktags","quicksilver","rubygems","safari","single","taskpaper","tasks","verbose","write","above","action","algorithm","allow","amatch","anyway","anywhere","applications","appscript","attached","automated","automatic","background","because","before","board","bridges","bridging","browsing","built","called","calling","calls","capabilities","character","chronic","cleanup","clipboard","command","comment","concentrated","contents","context","contexts","converted","correspondence","create","creates","custom","default","dependencies","depending","directly","distinguish","distribute","elements","enough","entered","entry","errands","example","exception","feedback","figured","flagged","flags","folder","format","formats","fragment","frustrating","function","github","gives","going","growl","handy","happens","harder","haven","inbox","indexes","input","install","installed","language","launcher","leave","letter","little","looks","match","meeting","message","monstrosity","morning","named","natural","needs","notes","options","otask","output","overrides","parameter","parameters","parenthesis","parts","paste","permissions","piped","placed","point","possible","preceded","prefix","press","project","projects","quiet","reader","receive","recommending","removed","return","right","running","script","scripting","scripts","sessions","settings","share","shied","short","shortened","shown","sitting","space","spaces","specifiers","specifying","string","syntax","system","think","thought","tomorrow","tools","ttscoff","tuesday","unset","usage","using","various","verbose","wanted","wherever","while","worked","write"]
},{
"title": "Web excursions: June 28, 2011 - June 30, 2011",
"url": "/2011/06/30/web-excursions-june-28-2011-june-30-2011/",
"tags": ["bookmarks"],
"date": "Jun 30th, 2011",
"ts": "1309446000",
"summary": "Links of interest from June 28, 2011 through June 30, 2011: PEG Markdown Highlight Well, this part of my work just got easier. pressfs A WordPress Filesystem Holy mackerel, that s pretty cool. Sprite Cow - Generate CSS for sprite sheets Another hat tip to Erik Sagan this one is awesome. Check it out in Chrome next time you need to build a CSS sprite. Google Swiffy Convert Flash swf s to HTML5. Nifty. Hat tip to Erik Sagan . WordPress local dev tips: DB plugins An intriguing approach to local WordPress development environments.",
"keywords": ["google","hosts","publishers","templates","tools","wordpress","another","check","chrome","convert","filesystem","flash","google","highlight","links","markdown","nifty","sagan","sprite","swiffy","wordpress","approach","awesome","build","development","easier","environments","interest","intriguing","local","mackerel","plugins","pressfs","sheets","sprite","through"]
},{
"title": "Web excursions: June 15, 2011 - June 23, 2011",
"url": "/2011/06/26/web-excursions-june-15-2011-june-23-2011/",
"tags": ["bookmarks"],
"date": "Jun 26th, 2011",
"ts": "1309098840",
"summary": "Links of interest from June 15, 2011 through June 23, 2011: Too Long Didn t Read - Chrome Web Store I want this for Safari. luo.ma - My dot-source file More evidence that TJ is, in fact, super smart.Yummy shell goodness. How To Run A News Site And Newspaper Using WordPress And Google Docs - 10,000 Words Now that s pretty cool. Plugin available. CSS Lint Points out errors and warnings in your CSS. I always wished there was something like this around. Styling alt text on images CSS for styling something I d never considered styling. Popcorn.js There are so many unbelievably cool possibilities for HTML5 video interactions, and this framework makes doing it easy. Gridless - An awesome boilerplate for responsive, cross-browser websites Seems to me that HTML/CSS frameworks are getting smarter. I like this one. How to Squeeze the Most out of LESS Yeah, it s from 2010, but it got me re-excited about using Less. Again.",
"keywords": ["attribute","formats","google","safari","sheets","style","video","again","chrome","google","gridless","links","newspaper","plugin","points","popcorn","safari","seems","squeeze","store","styling","using","wordpress","words","yummy","available","awesome","boilerplate","browser","considered","cross","doing","errors","evidence","excited","framework","frameworks","getting","goodness","images","interactions","interest","makes","possibilities","responsive","shell","smart","smarter","source","styling","super","through","unbelievably","using","video","warnings","websites","wished"]
},{
"title": "A Bash function for Markdown bloggers",
"url": "/2011/06/24/a-bash-function-for-markdown-bloggers/",
"tags": ["markdown","mdfind","scripting","spotlight","terminal"],
"date": "Jun 24th, 2011",
"ts": "1308940620",
"summary": "I store all of my writing as separate Markdown files. A basic tagging system 1 adds more searchability, and I can quickly locate any file with Spotlight 2 . Given the amount of time I spend in Terminal (well, iTerm 2 these days), I use quite a bit to do the Spotlight searching. This function just makes it a little more convenient to search for and quickly edit an existing document. By default, it looks in a Dropbox Writing folder, but you can adjust that to restrict to any folder at the top of the script. You can also set your edit command there (, , , etc.). Then it takes all arguments and uses them as a Spotlight search, restricted to your writing folder and the Markdown filetype, and offers you a quick menu of matches. Selecting a match opens the file with your preferred editor. If there s only one match, it s opened automatically. It s written as a function to be included in your .bash_profile (or sourced from there). If you want to run it as a shell script, just remove the at the top and the closing , put it in your path and run . Once it s installed you can just type to find posts and drafts related to keyword. You can use multiple words (no quotes required) and prefixes like keyword: or tag: , just like a Spotlight query. I save drafts and posts to my desktop as files. During my daily review I use Tags.app or Filr to quickly add target keywords ( blogging , a tag for which blog it s for and one, maybe two topical tags). Hazel picks these up and stores them in my Dropbox Writing folder, in subfolders based on blog and filetype. I never realized it, but apparently Spotlight doesn t search these by default. My use of the QLMarkdown Quick Look plugin fixes that, I guess.",
"keywords": ["computer","dropbox","filesharing","markdown","spotlight","dropbox","hazel","markdown","qlmarkdown","quick","selecting","spotlight","terminal","writing","adjust","amount","apparently","arguments","automatically","based","basic","blogging","closing","command","convenient","daily","default","desktop","document","doesn","drafts","editor","files","filetype","fixes","folder","function","guess","iterm","included","installed","keyword","keywords","little","looks","makes","match","matches","maybe","multiple","offers","opened","opens","picks","plugin","posts","preferred","prefixes","profile","query","quick","quickly","quotes","realized","related","remove","required","restrict","restricted","script","search","searchability","searching","separate","shell","sourced","spend","store","stores","subfolders","system","tagging","takes","target","topical","words","writing","written"]
},{
"title": "Thanks WWDC",
"url": "/2011/06/10/thanks-wwdc/",
"tags": ["personal"],
"date": "Jun 10th, 2011",
"ts": "1307750460",
"summary": "Thanks to everyone I met at WWDC this year and to the friends I got to see for a great time. San Francisco was as beautiful as ever and the Mac and iOS development communities are, as usual, full of new and brilliant ideas. It s always heartening to see. TUAW and MacTech will be posting the result of our blogging work at WWDC over the next few weeks. The Smile party was a blast, and thanks to Jean MacDonald and Smile for throwing such a great geekfest. The TUAW bash was a great time, too, and it was great to see some Apple employees show up (happens less often than you d think). They were there with Daniel Jalkut , and it was great to finally meet him, too. Violet Blue, Jim Dalrymple, Manton Reese and more than I can remember right now, great to meet you all! I m headed back to Minnesota right now, and not looking forward to the two-hour drive I ll be in for after landing. Then I ll have about 5 days to get things in order at work, get nvALT 2.1 released and pack before I head off to a family reunion for almost a week. I seem to be moving around a lot for a grumpy homebody. Oh, well. So I m sitting and waiting for a tow truck to come start my car right now, and I realize I forgot to thank Victor Agreda, Jr. 1 who instigated most of these meetings, kept me alive and introduced me to In-n-Out Burger. Thanks, Victor!",
"keywords": ["apple","conference","developers","francisco","mactech","minnesota","violet","worldwide","addendum","agreda","apple","burger","dalrymple","daniel","francisco","jalkut","macdonald","mactech","manton","minnesota","reese","smile","thanks","victor","violet","alive","almost","amazing","beautiful","before","blast","blogging","brilliant","browse","communities","compliant","development","drive","employees","everyone","family","finally","forgot","friends","geekfest","great","grumpy","happens","headed","heartening","homebody","ideas","instigated","introduced","landing","looking","meetings","moving","nvalt","often","party","photos","posting","realize","released","remember","reunion","right","sitting","thank","thanks","think","throwing","truck","waiting","weeks"]
},{
"title": "Quick Tip: fixing the \"other account\" Mac App Store issue",
"url": "/2011/06/08/quick-tip-fixing-the-other-account-mac-app-store-issue/",
"tags": ["macappstore","macos","quicktip","solutions"],
"date": "Jun 8th, 2011",
"ts": "1307567640",
"summary": "Quick tips are random posts regarding something I discovered on my way to something bigger. They usually get longer than quick would imply, for which I refuse to apologize. I like the Mac App Store. I ve purchased a lot of apps since it opened, and I dig the centralized update system. I ve been having this issue on my MacBook Air, though, where trying to update an installed app would trigger a dialog which says You have updates available for other accounts and suggest that I log in with that account to update my software. Thing is, I only have one Apple ID, one account. After digging around and trying various things, I found this thread in the Apple Support Communities. The solution, buried in there somewhere, was to both repair disk permissions in Disk Utility and rebuild my Spotlight index. You can rebuild your index simply by adding your entire hard drive to the Privacy settings in Spotlight s System Preferences panel and then removing it. You can do it from the command line or from a utility such as Cocktail 1 , too, but don t make it complicated. After doing both (in that order), I ve been able to update without hassle. Somehow, it made LaunchBar stop indexing my applications, but I ll figure that out when I have time Cocktail s a great utility app for cleaning up log files, caches, etc. and handling a gazillion system tasks and maintenance. Plus, it doesn t mess up apps like 1Password the way that other cleaning apps tend to. Check it out .",
"keywords": ["apple","launchbar","macintosh","spotlight","store","utility","apple","check","cocktail","communities","launchbar","macbook","password","preferences","privacy","quick","somehow","spotlight","store","support","system","utility","account","accounts","adding","apologize","applications","available","bigger","buried","caches","centralized","cleaning","command","complicated","dialog","digging","discovered","doesn","doing","drive","entire","figure","files","found","gazillion","great","handling","hassle","having","index","indexing","installed","longer","maintenance","opened","panel","permissions","posts","purchased","quick","random","rebuild","refuse","removing","repair","settings","simply","since","software","solution","somewhere","suggest","system","tasks","thread","trigger","trying","updates","usually","utility","various","where"]
},{
"title": "Web excursions: June 6, 2011 - June 8, 2011",
"url": "/2011/06/08/web-excursions-june-6-2011-june-8-2011/",
"tags": ["bookmarks"],
"date": "Jun 8th, 2011",
"ts": "1307566800",
"summary": "Links of interest from June 6, 2011 through June 8, 2011: Action at a Distance The five-minute guide to Apple s announcements at the WWDC keynote in 2011 TUAW s Richard Gaywood s beautiful summary of the WWDC 2011 Keynote. I m amazed that he had this written up almost before the Keynote ended. Amazing CSS3 techniques you should know Basic tips, but some inspirational ideas. Personal Experience to: Dealing with Online Content Theft Good advice for anyone who gets their content scraped. A List Apart: Articles: Modern Debugging Tips and Tricks Good stuff. A MySQL Primer on Joins, Part One I m not an SQL pro. This is a great overview of JOIN statements, and I greatly appreciate the approach.",
"keywords": ["apple","gaywood","mysql","richard","tricks","action","amazing","apart","apple","articles","basic","content","dealing","debugging","distance","experience","gaywood","joins","keynote","links","modern","mysql","online","personal","primer","richard","theft","tricks","advice","almost","amazed","announcements","anyone","appreciate","approach","beautiful","before","content","ended","great","greatly","guide","ideas","inspirational","interest","keynote","minute","overview","scraped","statements","stuff","summary","techniques","through","written"]
},{
"title": "Taking the Markdown to Evernote service further",
"url": "/2011/06/05/taking-the-markdown-to-evernote-service-further/",
"tags": ["bookmarks","evernote","markdown","multimarkdown"],
"date": "Jun 5th, 2011",
"ts": "1307312340",
"summary": "Martin Kopischke has taken my little Markdown to Evernote Service and made it whole. I dropped the project pretty quickly as I stopped using Evernote as my primary storage for text notes, and I left it in pretty poor shape. Martin has fixed that . The new Service adds way better tag handling, MultiMarkdown-style metadata hooks for Notebook, tags and more, and generally amped up the parser and error handling, as well as the Evernote side of things. Check it out at NSUserView . Thanks Martin, nice work!",
"keywords": ["evernote","google","markdown","multimarkdown","programming","check","evernote","kopischke","markdown","martin","multimarkdown","nsuserview","notebook","service","thanks","amped","dropped","error","fixed","generally","handling","hooks","little","metadata","notes","parser","primary","project","quickly","shape","stopped","storage","style","taken","using","whole"]
},{
"title": "Web excursions: May 24, 2011 - May 31, 2011",
"url": "/2011/05/31/web-excursions-may-24-2011-may-31-2011/",
"tags": ["bookmarks"],
"date": "May 31st, 2011",
"ts": "1306886400",
"summary": "Links of interest from May 24, 2011 through May 31, 2011: CSS: Elastic Videos Using the max-width:100% and height:auto trick works with native HTML5 video tag, but it doesn t work with embed code using iframe or object tag Andy Rutledge - The Designer Designs if you re the client, you describe problems or concerns and the designer then shows you changes. If you re asking for changes you re the one doing the designing. In that case there s no need for you to have hired a designer and you re wasting money. Great response to 37signals from Andy Rutledge How To Implement Keyboard Shortcuts In Your Web Application - Part 1 This is a much more maintainable pattern for adding keyboard navigation than what I ve used in the past. This is the first part of a great, three-part series. Understanding the Publish/Subscribe Pattern for Greater JavaScript Scalability I didn t discover this pattern until I wrote my first Safari extension. It s worth getting a grasp on. Sean Coates blogs: Remote pbcopy Unbelievably cool. If you re into that sort of thing, I suppose. I am. Via @nriley",
"keywords": ["cascading","coates","design","javascript","keyboard","rutledge","safari","sheets","shortcut","style","coates","designer","designs","elastic","great","greater","javascript","keyboard","links","pattern","publish","remote","rutledge","safari","scalability","shortcuts","subscribe","unbelievably","understanding","using","videos","adding","asking","blogs","changes","client","concerns","describe","designer","designing","discover","doesn","doing","embed","extension","first","getting","grasp","great","height","hired","iframe","interest","keyboard","maintainable","money","native","navigation","nriley","object","pattern","pbcopy","problems","response","series","shows","signals","suppose","through","trick","using","video","wasting","width","works","worth","wrote"]
},{
"title": "Quick Link: Terminal navigation utilities",
"url": "/2011/05/24/quick-link-terminal-navigation-utilities/",
"tags": ["navigation","quicklink","terminal","utility"],
"date": "May 24th, 2011",
"ts": "1306233480",
"summary": "If you follow me on Twitter , you ve probably seen me express my adoration for autojump , a command-line utility for navigating frequently-used folders. The only problem is that I deal with a lot of repetitive folder hierarchies for example, the multiple site structures in my web development folder. almost certainly isn t going to take me to the one I was thinking of. I found a couple of solutions this morning. There s a package called which lets you bookmark folders with short names, autocomplete bookmarks, use bookmarks in copy and move actions and list and visually select from all of your bookmarks. I had some conflicts on my system that prevented me from using it, though, so I went with a simpler solution: bashmarks by Huy Nguyen. Bashmarks lets me do most of what cdargs can do, but with a few less frills (and no conflicts with my setup). I can bookmark the css folder in my blog development folder , and one in a client folder as and be able to quickly jump to the right one. Bashmarks provides autocomplete, too, so typing gets me to btcss in a jiffy. On the way, I also discovered a package called z , which bills itself as the new j (in reference to autojump). It takes multiple arguments and uses them to more specifically match the folder you want to jump to. So, if I have a css folder in /brettterpstra/ and in /myclientsite/, I could type or to distinguish between them. I haven t bothered with replacing autojump in my config files yet, but this looks promising.",
"keywords": ["bookmark","cascading","folder","javascript","locator","resource","sheets","style","twitter","bashmarks","nguyen","twitter","actions","adoration","almost","arguments","autocomplete","autojump","bashmarks","between","bills","bookmark","bookmarks","bothered","brettterpstra","btcss","called","cdargs","certainly","client","command","config","conflicts","couple","development","discovered","distinguish","example","express","files","folder","folders","found","frills","going","haven","hierarchies","itself","jiffy","looks","match","morning","multiple","myclientsite","names","navigating","package","prevented","problem","promising","provides","quickly","repetitive","replacing","right","setup","short","simpler","solution","solutions","specifically","structures","system","takes","thinking","typing","using","utility","visually"]
},{
"title": "Quick Tip: clean up your MultiMarkdown tables",
"url": "/2011/05/23/quick-tip-clean-up-your-multimarkdown-tables/",
"tags": ["automator","markdownservices","multimarkdown","quicktip","scripting","service"],
"date": "May 23rd, 2011",
"ts": "1306205520",
"summary": "Quick tips are random posts regarding something I discovered on my way to something bigger. They usually get longer than quick would imply, for which I refuse to apologize. The table syntax in MultiMarkdown is intuitive and can be really fast to work with. Much faster than coding HTML tables, to be sure. Unless you re pretty religious about your spacing, though, the plain text version can get out of hand pretty quickly. If only there were some way to make them pretty in one click You ve already got the tools, I would imagine, but you might not have known they were there. I didn t notice until tonight, but I don t work with tables much in MultiMarkdown. In the Utilities folder of the MultiMarkdown installation there s a Perl script that will do amazing things to messy MultiMarkdown tables. The more I play with it, the more I think that Fletcher Penney is a genius. My advice? Make it into a System Service and use it everywhere. Just open up the file at in your favorite text editor. Open Automator and create a new Service, dragging the Run Shell Script action into the right panel. Set it to Perl, accept text, replace text and copy the contents of the script into the action. Save it and run it on some table text! If you re running any of the Markdown Service Tools , you can name it md - Clean Up Tables and it will fit right in with your Services menu. Play around with it, it s pretty amazing. You can control certain aspects of the results by messing with the header rows, and it even centers text in centered columns (). Thank you, Fletcher Penney.",
"keywords": ["editor","element","markdown","multimarkdown","services","automator","clean","fletcher","markdown","multimarkdown","penney","quick","script","service","services","shell","system","tables","thank","tools","utilities","accept","action","advice","amazing","apologize","aspects","bigger","centered","centers","certain","click","coding","columns","contents","control","create","discovered","dragging","editor","everywhere","faster","favorite","folder","genius","header","imagine","installation","intuitive","longer","messing","messy","panel","posts","quick","quickly","random","refuse","religious","replace","results","right","running","script","spacing","syntax","table","tables","think","tonight","tools","usually","version"]
},{
"title": "Web excursions: May 16, 2011 - May 23, 2011",
"url": "/2011/05/23/web-excursions-may-16-2011-may-23-2011/",
"tags": ["bookmarks"],
"date": "May 23rd, 2011",
"ts": "1306173600",
"summary": "Links of interest from May 16, 2011 through May 23, 2011: Why aren t you using git-flow? - Jeff Kreeftmeijer Really, why aren t we all? It s a fairly complex git-based development workflow made very, very simple. WebKit Remote Debugging What you might not know is that Web Inspector can run outside of the browser environment Forkbombr Guest Post: Markdown is the new Word 5.1 Guest post by Kevin Lipe and a solid argument for plain text and Markdown. History has taught us How to Predict the Weather Without a Forecast - wikiHow I love being able to act like I made it to Eagle Scout. Wordpress - Lorem Ipsum Test Post Pack A ready-to-import pack of posts and pages full of Lorem Ipsum for testing WordPress themes. Very handy.",
"keywords": ["adobe","desktop","eagle","filler","ipsum","latin","lorem","markdown","pagemaker","publishing","scout","wordpress","debugging","eagle","forecast","forkbombr","guest","history","inspector","ipsum","kevin","kreeftmeijer","links","lorem","markdown","predict","remote","scout","weather","webkit","wordpress","wordpress","argument","based","browser","complex","development","environment","fairly","handy","import","interest","outside","pages","posts","ready","simple","solid","taught","testing","themes","through","using","wikihow","workflow"]
},{
"title": "The Mac and iOS mind mapping app extravaganza",
"url": "/2011/05/22/the-mac-and-ios-mind-mapping-app-extravaganza/",
"tags": ["blogging","macos","mindmapping","writing"],
"date": "May 22nd, 2011",
"ts": "1306093320",
"summary": "Most of my projects start out as mind maps (which I may have mentioned before ). Whether it s a packing list, a blog post or a TextMate bundle, I find it easiest to organize my (often scattered) thoughts using what Tony Buzan calls radiant thinking . Lists and outlines are rarely as effective as the non-linear format of a mind map. For me, if it involves brainstorming, it involves mind maps. This post isn t about how to mind map (but this one is ). It s a summary of the process by which I settled on my current set of tools. I used Mindjet MindManager (Mac) together with the web app MindMeister for years. As with all things in the Mac app world, I played with every mind mapping application that came out, but only recently have I found myself actually looking for a new workflow. It has, primarily, to do with three things: frustration with MindManager, the advent of the iPad, and a wealth of new alternatives. I m currently down to a collection of solutions across three platforms (Mac, iOS and web) which meet all of my requirements and offer interoperability with each other and other tools in my workflow. In my opinion, MindManager is still the most powerful mix of ease-of-use, OS integration and aesthetic options on the market. In recent years, though, it s been apparent that the Mac platform has become an afterthought for the developers. The Windows versions are taking leaps and bounds, and the Mac version has little parity with its feature set. The new features in the last $99 upgrade were pretty much useless to me in my workflow they were just feature bloat. The decision to find something else was based mostly on disappointment with the development and what I consider to be unduly expensive prices, even for existing customers. Intuitive keyboard navigation The ability to visually connect non-contiguous nodes Support for images Sufficient export options at the least, OPML , PDF and a format interoperable with other mapping applications (Freemind is pretty standard) The ability to import other mind map formats, and preferably OPML Smart/auto layout (moves existing nodes out of the way of new nodes without interaction) There s a fairly wide field of options to consider. I m quite certain I ve tried everything available on both Mac and iOS at this point. For Mac, these include NovaMind , iMindMap , Freemind , MindNode , XMind and Curio , among others. I already use Curio for project management, and it s an excellent choice for any",
"keywords": ["apple","iphone","mindmeister","mindnode","textmate","windows","blogsmith","boards","bundle","buzan","curio","dashboard","download","fluid","freemind","geistesblitz","headspace","indents","intuitive","launchbar","library","lists","markdown","mindmanager","mindmeister","mindnode","mindjet","moleskine","nifty","novamind","omnigraffle","omnioutliner","popplet","quick","quicksilver","quicktags","scrivener","service","services","since","smart","speaking","support","system","textmate","wikipedia","windows","wordpress","xmind","ability","across","added","adding","advent","aesthetic","afterthought","allowed","almost","alternatives","amazing","among","anywhere","applications","audio","available","awesome","based","basic","because","before","began","begin","believe","benefit","bloat","bounds","brainstorm","brainstorming","branch","browser","building","bullet","bundle","button","buying","calls","certain","checklist","choice","choices","clockwise","collaborating","collaboration","collaborative","collection","color","coloring","compare","connect","consider","considering","contiguous","control","convert","converted","copied","couldn","create","customers","customizable","customize","dealing","decision","desktop","developer","developers","development","disappointment","document","draft","dropdown","easiest","easily","editor","edits","effective","efforts","embedded","everything","example","excellent","expensive","export","exporting","extensive","extra","fairly","feature","features","fiddling","field","first","fleshed","flexible","focused","footnote","format","formats","found","frustration","functionality","gathering","general","going","great","handles","haven","headers","heavy","hierarchical","homebrew","homescreen","hopefully","imindmap","iphone","ithoughts","image","images","import","indented","information","install","instant","integrate","integrates","integrating","integration","interaction","interactive","interoperability","interoperable","involves","items","keyboard","layout","leaps","levels","limited","linear","links","lists","little","looking","maintaining","major","management","mapping","market","media","mediums","meets","mentioned","method","minimalist","mixes","mobile"]
},{
"title": "Quick Tip: throttling parallel batch processes in Terminal",
"url": "/2011/05/20/quick-tip-throttling-parallel-batch-processes-in-terminal/",
"tags": ["quicktip","scripting","terminal"],
"date": "May 20th, 2011",
"ts": "1305881220",
"summary": "Quick tips are random posts regarding something I discovered on my way to something bigger. They usually get longer than quick would imply, for which I refuse to apologize. It starts out with mdfind and all of the creative scripting you can do with it. You start finding batches of files with something in common and you do things with them or to them. It sounds genocidal it s not. It s very productive after the initial script setup. Take, for example, a little script I run to add thumbnails to weblocs I have laying around. It looks something like this: It s a one-liner, you d want to reassemble it to run it (remove the backslashes at the line ends and join them all together), but it uses mdfind to search my shared bookmarks folder for recent items which don t already have a custom thumbnail, passes them to setWeblocThumb and processes them one at a time. I know my machine and my bandwidth can handle more than that, but if the list is 50+ long, that s a lot of processes doing some relatively intensive labor. It would grind my machine to a halt. Yes, I tried it just to be sure. So I needed a way to throttle the number of simultaneous processes, and I know that someone out there must have long beat me to the solution. There it was: parallel . It s a script you can download and make executable in your path, and then run it with a few parameters and a batch of files or arguments. It will keep your defined number of processes going until the job is done, but won t let things get out of hand. You can add ( man page ) in each process if you need more cpu control over the process. Seriously, if you re doing anything in batch you should check Parallel out , or show me an even better one. Parallel made my morning, and by keeping CPU from maxing I actually got through some batches even faster. I m sure there are other elegant ways of handling this. Let em rip.",
"keywords": ["computer","languages","operating","programming","system","thumbnail","parallel","quick","seriously","apologize","arguments","backslashes","bandwidth","batch","batches","bigger","bookmarks","check","command","common","control","creative","custom","defined","discovered","doing","download","elegant","example","executable","faster","files","finding","folder","genocidal","going","grind","handle","handling","initial","intensive","items","keeping","labor","laying","liner","little","longer","looks","machine","maxing","mdfind","morning","needed","parallel","parameters","passes","posts","process","processes","productive","quick","random","reassemble","recent","refuse","relatively","remove","script","scripting","search","setweblocthumb","setup","shared","simultaneous","solution","sounds","starts","throttle","through","thumbnail","thumbnails","together","tried","usually","weblocs"]
},{
"title": "nvALT 2.1 progress report",
"url": "/2011/05/20/nvalt-2-1-progress-report/",
"tags": ["nvalt"],
"date": "May 20th, 2011",
"ts": "1305870720",
"summary": "Development on the next version of nvALT is going more slowly than I d like, but some very cool changes are happening. In addition to implementing the latest changes and fixes from the main branch of Notational Velocity , I ve also worked in a few new features and a small bucket of fixes. Usability fixes I m waiting for input from elasticthreads on this one, but for now I m removing the hold-control-for-temporary-preview feature. It s baffling for people who like to use Cocoa s Emacs emulation when typing. Understandable, especially since it was undocumented. I m still working on a fix for the Spaces behavior, but that s definitely a bug that will be squashed before the 2.1 release. I ve updated the External Editor feature to use scrod s ODBEditor solution. Yes, this one consistently provides TextMate as an editing option. MultiMarkdown 3 While I haven t implemented the fully live preview that Fletcher is hoping I will, I have made nvALT compatible with MultiMarkdown 3 , if you have it installed. It s fast. nvALT will also check for metadata headers in your note, and if they exist it will export the straight MMD-rendered document (no custom CSS 1 ). Tag Sync Totally not my doing. Darryl H. Thomas has been hard at work revamping the Simplenote sync and adding Tag Syncing to NV. I ve incorporated his changes for testing, and things are looking really good. Preview Window The preview window is no longer a HUD, but rather a utility panel. This change was needed to add some additional features: Lock the preview on a note so you can edit other notes and use it as a reference Print the preview. This can easily be used to save rendered Markdown as a PDF Icons for all features beyond the View Source button Display preferences You can now remove the grid lines and/or add alternating row colors to the notes list. It s still one color across the whole window, but I may change it to allow a separate edit field color before release. There s more, but my primary goal for the next week is to work with scrod to implement all of the things he s already fixed and bring nvALT up to parity with the trunk. It ll be worth it. The source is back up on GitHub now, so if you want to see any of these changes in action (and have Developer Tools installed), feel free. Pull requests are welcome as well. This is because MMD 3 doesn t have any override for snippet vs. complete. If you add headers, you re getting a complete document. So nvALT",
"keywords": ["emacs","github","markdown","multimarkdown","notational","simplenote","textmate","velocity","cocoa","darryl","developer","development","display","editor","emacs","external","fletcher","github","icons","markdown","multimarkdown","notational","odbeditor","preview","print","simplenote","source","spaces","syncing","textmate","thomas","tools","totally","understandable","usability","velocity","while","window","across","action","adding","allow","alternating","avoids","baffling","beautiful","because","before","behavior","beyond","branch","bring","bucket","button","change","changes","check","color","colors","compatible","consistently","control","custom","definitely","detects","document","doesn","doing","easily","editing","elasticthreads","emulation","especially","exist","export","feature","features","field","fixed","fixes","found","fully","getting","going","happening","haven","headers","hoping","implemented","implementing","incorporated","input","inside","installed","latest","longer","looking","metadata","needed","notes","nvalt","outputting","override","panel","parity","people","preferences","preview","primary","provides","rather","release","remove","removing","rendered","requests","revamping","scrod","sensible","separate","simply","since","slowly","small","snippet","solution","source","squashed","straight","temporary","testing","trunk","typing","undocumented","updated","utility","version","waiting","welcome","whole","window","worked","working","worth"]
},{
"title": "Web excursions: May 4, 2011 - May 16, 2011",
"url": "/2011/05/16/web-excursions-may-4-2011-may-16-2011/",
"tags": ["bookmarks"],
"date": "May 16th, 2011",
"ts": "1305550800",
"summary": "Links of interest from May 4, 2011 through May 16, 2011: Cool, but obscure unix tools :: KKovacs There are many sweet-looking UNIX tools in there, most available through homebrew . 10+ useful tools to simplify CSS3 development Some useful online tools, javascripts and references for CSS3 styling. AppControls I ve been using this Mac app for a while. It s a very simple way to visually create CSS3-styled buttons, text areas and other controls, and output cross-browser CSS3 code for them. Worth every penny. mrtazz/simplenote.vim - GitHub Vim plugin to interact with the simplenote service. Neato. kirotawa/gmailCommandLine - GitHub This works a treat. I hacked in my own means of securely passing a password without interaction, so now I ve got a groovy sendmail replacement. Easy attachments, too.",
"keywords": ["cascading","github","javascript","sheets","style","appcontrols","github","kkovacs","links","neato","worth","areas","attachments","available","browser","buttons","controls","create","cross","development","gmailcommandline","groovy","hacked","homebrew","interact","interaction","interest","javascripts","kirotawa","looking","mrtazz","obscure","online","output","passing","password","penny","plugin","references","replacement","securely","sendmail","service","simple","simplenote","simplify","styled","styling","through","tools","treat","useful","using","visually","while","works"]
},{
"title": "A cheat sheet for App Store pricing",
"url": "/2011/05/15/a-cheat-sheet-for-app-store-pricing/",
"tags": ["appstore","marketing"],
"date": "May 15th, 2011",
"ts": "1305480960",
"summary": "It might sound weird coming from a non-seller of apps, but I like seeing higher prices in the App Store. If the market will support higher prices, that s a really good sign that the App Store is becoming a quality marketplace, not just a snack machine. I use both free and paid apps that are probably worth hundreds of dollars to me based on what they do for me. Value is worth paying for, and the more profit potential the App Store offers, the better development we ll see in it. I agree. I ve put myself on an app budget lately, so I m spending less overall. As a result, I find myself saving up for the $10+ apps rather than trying every ninety-nine cent app out there. A realistic price for excellent apps makes them more valuable to me, increasing both perceived value and my likelihood to continue using an app. They become less discardable. This could backfire if all of the crappy apps out there start upping their price just to increase their perceived value. It only takes getting burned once on a $15 app to make you think you should just stick with the cheap stuff. The fact that some really valuable apps are made available for less than three dollars only makes this pitfall worse. If only there were a better try-before-you-buy system in place, and prices weren t set so arbitrarily. I know that setting a price for your own app is a difficult decision. Maybe we need a cheat sheet for developers to determine the sweet spot for their app pricing. Farts: go to jail, do not pass go. Do not collect 99 cents. Is a less-useful mimic of an existing app: Divide the superior app s price by 3. Stop here. Provides rudimentary entertainment: Add $.99 Provides unique entertainment with a refined experience: Add $2.99 Provides an experience that makes full use of iOS features: Add $2.99 Provides a valuable portable experience that rivals or beats a similar desktop experience: Add $10.00 Is a tool that syncs with a valuable desktop experience: Add $5.00 Syncs with a valuable desktop experience and adds utility appropriate to the mobile platform: Add another $10.00 Blows the mind of your target demo: Add $20.00 There, your starter pricing cheat sheet. It needs some refinement and a more complete handling of edge cases, but the basic rule of thumb is: Create good apps with intrinsic value and refined experiences, then value your app appropriately. Your customers at least most of us will truly appreciate it.",
"keywords": ["apple","cheat","eddie","iphone","itunes","sheet","smith","store","blows","create","divide","eddie","farts","maybe","provides","smith","store","syncs","value","agree","another","appreciate","appropriately","arbitrarily","available","backfire","based","basic","beats","becoming","before","budget","burned","cents","cheap","cheat","collect","coming","continue","crappy","customers","decision","desktop","developers","development","difficult","discardable","dollars","entertainment","excellent","experience","experiences","features","getting","handling","higher","hundreds","increase","increasing","intrinsic","likelihood","machine","makes","market","marketplace","mimic","mobile","myself","needs","ninety","offers","overall","paying","perceived","pitfall","platform","portable","potential","price","prices","pricing","profit","quality","rather","realistic","refined","refinement","rivals","rudimentary","saving","seeing","seller","setting","sheet","similar","snack","sound","spending","starter","stick","stuff","superior","support","syncs","system","takes","target","think","thumb","truly","trying","unique","upping","useful","using","utility","valuable","value","weird","weren","worse","worth"]
},{
"title": "Duplicating Safari browsing sessions between Macs",
"url": "/2011/05/03/duplicating-safari-browsing-sessions-between-macs/",
"tags": ["applescript","macos","safari","scripting"],
"date": "May 3rd, 2011",
"ts": "1304461800",
"summary": "Hey, you re just in time for another stupid trick of the day script. I have good reason for this one, and it only took me about 8 minutes to set up. It will take me longer to write about it than it s probably worth, but it might be of use to anyone in a similar situation. Here s the scenario: I bought a MacBook Air recently. I have never been this happy with an Apple hardware purchase before. Not to gush, but I ve bought and loved a lot of Macs and this one takes the cake. I m doing more and more of my everyday work and writing on it, but I still like to sit down at the dual-monitor setup of my Mac Pro fairly regularly. When I do that, the Air becomes an auxiliary machine and I offload most of my chat and social apps to it. The annoying side of this setup is that I end up with Safari tabs piling up on both Macs, and half of them really make more sense on the other machine. I wrote a pair of scripts that execute over SSH to pull in all of the browser tabs from the front window of Safari on the other Mac into new tabs on the one calling the script. They re designed to run on Macs on the same network, though they d work remotely if you could think of a reason to do it. I run it in both directions, and call it with a simple AppleScript in so it s in my menubar when I m browsing. You need keyless ssh set up between the two (or more) Macs. If you want a two-way sync, you need keys in both directions. This article has everything you need . To keep things simple, set up a file on each machine you want to pull tabs to. Create the file if you don t have one, or add this at the bottom of an existing one, modifying it for your setup: Now you can just install the scripts, edit one line on each and start pulling tabs back and forth between computers. This goes on the machine you want to pull from. If you re going both directions, you ll want both scripts on both machines. Easy enough, right? Save this one as in and run . Note that it doesn t attempt to do any error reporting, it just fails silently or times out if there s a problem. You ll know something went wrong, you just won t know what. It s mysterious, enjoy it. Because I often run Webkit , and because Webkit demands that it be addressed separately from Safari, there s a quick check in here to see which one is running at the time. This goes on the machine that s doing the pulling. Save it as in and run . You need to edit the variable in this script on each machine to match the hostname you set",
"keywords": ["apple","applescript","hostname","macbook","safari","secure","shell","apple","applescript","because","create","macbook","safari","webkit","addressed","annoying","another","anyone","anywhere","article","auxiliary","because","becomes","before","between","bottom","bought","browser","browsing","calling","check","command","computers","demands","designed","directions","doesn","doing","enjoy","enough","error","everyday","everything","execute","fails","fairly","forth","front","getremotetabs","going","happy","hardware","hostname","install","keyless","longer","loved","machine","machines","making","match","menubar","minutes","modifying","monitor","mysterious","network","offload","often","piling","prerequisites","problem","pulling","quick","recently","regularly","remotely","remotetabs","reporting","right","running","scenario","script","scripts","sense","separately","setup","silently","similar","simple","situation","social","stupid","takes","think","times","trick","variable","window","worth","write","writing","wrong","wrote"]
},{
"title": "Automated HTML5 video encoding revisited",
"url": "/2011/05/01/automated-html5-video-encoding-revisited/",
"tags": ["automation","scripting","shell","terminal","video"],
"date": "May 1st, 2011",
"ts": "1304263260",
"summary": "A little while ago I approached the subject of scripting automated encoding for HTML5 video formats . I started using the process regularly as I built the Blogsmith Bundle video site . Pretty soon I got some help from friend and TUAW editor Mike Rose , and working together we refined the script and improved the speed tremendously. It was built for use on Mac OS X, but with just a few lines modified, it should work on any *NIX system. The script is specifically designed to take an MPEG-4, H.264 file, move it to a new folder based on the filename, create WEBM and OGV versions of it in the new folder, and upload the whole folder to a server using . SSH information and target directories are specified in the config at the top of the script. At the end, it takes what it knows about the files and filenames and creates a TextMate Markdown blog template, inserts the video shortcode for the VideoJS WordPress plugin (which is common syntax for other plugins as well) and opens it for editing in TextMate. The command really needs keyless SSH login for this to be considered fully-automated. If you run this script with Hazel , you can just render an H.264 video ( files that pass the H.264 test 1 will automatically be renamed to ) to that folder from your screen-recording application of choice, sit back for a few minutes (or start writing the post) and wait for the pre-populated TextMate blog post to pop open. Then type or paste your text in, hit Control-Command-P (assuming you re set up for TextMate- WordPress blogging) and your video is posted. The first thing that happened in this rewrite was a major simplification of the WEBM encoding process, which now only takes a third of the time it did before and the files are not significantly larger in most cases. They may even look better. The old command involved two passes, one of them turning out to be unnecessary is smarter than I thought. The new command (using the variables from the script) is just . I also added better logging, optional progress reports with Growl , batch file handling and a few other refinements. The logging, if enabled in the config at the top, will output information including processing time for each file and total processing time to STDOUT (command line) and to the system log where you can watch it from Console. If you enable growl notifications, the messages at the beginning and end of each conversion will be growled on your screen. To run the script and do the encoding, you ll need and",
"keywords": ["command","ffmpeg","interface","textmate","theora","actions","blogsmith","bonus","bundle","camelcased","command","console","control","download","folder","growl","hazel","homebrew","hopefully","improvements","markdown","stdout","terminal","textmate","using","videojs","wordpress","added","anyway","apart","appears","approached","assumes","assuming","automated","automatically","available","avoid","based","batch","batches","battle","before","beginning","below","between","binaries","binary","blogging","bottom","break","build","built","change","check","choice","clipboard","codec","command","comment","common","config","configuration","considered","conversion","conversions","couple","create","creates","creating","credit","criteria","designed","details","detected","developer","directories","doesn","doing","download","easier","easily","editing","editor","enabled","encode","encoding","entirety","essential","extension","feature","ffmpeg","ffmpegx","filename","filenames","files","first","folder","folders","formats","freeform","friend","fully","great","growl","growled","handle","handles","handling","happened","hassle","haven","improved","including","information","inserts","install","installed","involved","keyless","knows","larger","little","lives","logging","login","longer","major","manually","match","message","messages","minutes","modified","modify","multiple","needed","needs","nifty","notifications","opens","optional","original","output","parent","passes","paste","pasted","people","played","plugin","plugins","populated","possible","posted","procedure","process","processing","quick","rather","recording","refined","refinements","regularly","renamed","rendering","reports","rewrite","rounded","running","screen","script","scripting","section","seems","server","share","shell","shortcode","significantly","simple","simplification","smarter","somewhere","source","specific","specifically","specify","speed","started","steps","syntax","system","takes","target","targets","template","tested","theora","think","third","thought","title","together","tools"]
},{
"title": "Web excursions: May 1, 2011",
"url": "/2011/05/01/web-excursions-may-1-2011/",
"tags": ["bookmarks"],
"date": "May 1st, 2011",
"ts": "1304262000",
"summary": "Common elements used in interface button design Just in case you re designing outside of the CSS3 range, there are some great tips (and tutorials) for mimicking common interface design elements here. 15 Examples To Master Linux Command Line History Brush up a little more on those commands List of 175 Mac OS X Terminal Commands Sure, you knew some of these, but did you know about ? ? I didn t. ConversionMatrix - Develop All of the ffmpeg and ffmpeg2theora recipes you ll need to cover output for HTML5, PSP, mobile devices and more. It s a very handy reference. Getting Started with Backbone.js More on the MVC javascript framework, Backbone.js. Great overview tutorial.",
"keywords": ["backbone","cascading","ffmpeg","javascript","linux","sheets","style","theora","tutorial","backbone","brush","command","commands","common","conversionmatrix","develop","examples","getting","great","history","links","linux","master","started","terminal","button","commands","common","cover","design","designing","devices","elements","ffmpeg","framework","great","handy","interest","interface","javascript","little","mimicking","mobile","output","outside","overview","range","recipes","theora","tutorial","tutorials"]
},{
"title": "Web excursions: April 26 - May 1",
"url": "/2011/05/01/web-excursions-april-26-may-1/",
"tags": ["bookmarks"],
"date": "May 1st, 2011",
"ts": "1304249340",
"summary": "Vico Editor With a little more polishing (and better support for existing TextMate commands), this little editor is primed to take TextMate 2.0 off of my wishlist. Vim keybindings, extensibility, split views and a good-looking interface. Simple podcasting with Skype on OS X I love scripted automation. Extending Your jQuery Application with Amplify.js Excellent tutorial on setting up subscriptions and requests in a jQuery application using Amplify.js. Apprise - The attractive alert alternative for jQuery Nice alerts and dialog boxes in a small jQuery package. [awk] Command line calculator using awk A neat trick, and better than my previous command line calculator solution",
"keywords": ["command","interface","jquery","languages","programming","python","skype","textmate","amplify","command","editor","excellent","extending","links","simple","skype","textmate","alert","alerts","attractive","automation","boxes","calculator","command","commands","dialog","editor","extensibility","interest","interface","jquery","keybindings","little","looking","package","podcasting","polishing","primed","requests","scripted","setting","small","solution","split","subscriptions","support","through","trick","tutorial","using","views","wishlist"]
},{
"title": "Web excursions: April 20 - April 24",
"url": "/2011/04/24/web-excursions-april-20-april-24/",
"tags": ["bookmarks"],
"date": "Apr 24th, 2011",
"ts": "1303675200",
"summary": "Omnifocus Themes I ll explain this more when I get a chance, but for someone just switching back to OmniFocus, this collection of themes is pretty awesome. A second mention of Ben Brooks Solarized Omnifocus Themes goes along with this Showcase of Excellent Graphic Email Newsletter Designs - Noupe Design Blog Email or not, there are some great marketing-based design inspirations in here. CSS3 Linear Gradient Syntax Breakdown A complete overview of the syntax for cross-browser CSS3 gradients. Easy reading, very useful. inuit.css cooler than a polar bear s toenails A minimal, extensible CSS framework from Harry Roberts It combines years of my best dev tips, tricks and practices in one handy file. Demo: CSS drop-shadows without images Nicolas Gallagher Oh, the cross-platform, cross-browser possibilities.",
"keywords": ["cascading","formats","jquery","omnifocus","shadow","sheets","style","breakdown","brooks","design","designs","email","excellent","gallagher","gradient","graphic","harry","linear","links","newsletter","nicolas","noupe","omnifocus","omnifocus","roberts","showcase","solarized","syntax","themes","awesome","based","browser","chance","collection","combines","cooler","cross","design","explain","extensible","framework","gradients","great","handy","images","inspirations","interest","inuit","marketing","mention","minimal","overview","platform","polar","possibilities","practices","reading","second","shadows","switching","syntax","themes","through","toenails","tricks","useful","years"]
},{
"title": "A couple of TextMate Macros for Markdown lists",
"url": "/2011/04/24/a-couple-of-textmate-macros-for-markdown-lists/",
"tags": ["markdown","multimarkdown","textmate","video"],
"date": "Apr 24th, 2011",
"ts": "1303667940",
"summary": "I was playing with the new TextMate Markdown bundle for MultiMarkdown 3 when I remembered an old nit I had with the list commands: no single-keystroke way to move list items up and down. Unless I m completely forgetting about a shortcut, moving list items around involves selecting the entire line and using Control-Command-Up/Down to move it. Obviously, not a big deal, but 5 minutes with the Macro recorder in TextMate saves the time. Control-Right and Control-Left are already set up in the Markdown bundle to indent and outdent lines within lists. These two macros just add Control-Up and Control-Down for quickly shifting the order of a list. They only work with single lines if you want to move a chunk of lines, you ll want to use the old select and hit Control-Command-Up/Down method. You can download the TextMate List Macros from here, but for more details, check out the video I added to the Blogsmith Bundle Video Site . Here s a quick, semi-related tip: TextMate s Web Preview running through MultiMarkdown 3 is wicked fast. There s no visible latency. It s practically an nvALT killer for people who primarily use nvALT for its MultiMarkdown preview. Definitely give it a shot. Fletcher Penney s video on setup and usage is all you need. Well, that and MultiMarkdown 3 . By the way, the next release of nvALT deals much better with custom MultiMarkdown 3 installs. Coming soon.",
"keywords": ["fletcher","markdown","multimarkdown","penney","shareware","sublime","textmate","windows","blogsmith","bundle","coming","command","control","definitely","fletcher","macro","macros","markdown","multimarkdown","penney","preview","right","textmate","video","added","bundle","check","chunk","commands","completely","custom","deals","details","download","entire","forgetting","indent","installs","involves","items","keystroke","killer","latency","lists","macros","method","minutes","moving","nvalt","outdent","people","playing","preview","primarily","quick","quickly","recorder","related","release","remembered","running","saves","selecting","setup","shifting","shortcut","single","through","usage","using","video","visible","wicked","within"]
},{
"title": "Markdown QuickTags makes 1000 people happier and more attractive",
"url": "/2011/04/23/markdown-quicktags-makes-1000-people-happier-and-more-attractive/",
"tags": ["wordpress","markdown","plugin","quicktags"],
"date": "Apr 23rd, 2011",
"ts": "1303585440",
"summary": "I can t prove that anybody is happier, really, and attraction is entirely subjective. For all I know they were run off by the invalid header error 1 and never even tried it out, but Markdown QuickTags finally passed the 1000 downloads mark on the Wordpress Plugins site. I m celebrating by diving into nvALT for the weekend, but version 0.8 of MDQT is in the works. I ve handled almost all of the bug reports for the plugin and it s a smooth-running machine for me now. If you like Markdown and use WordPress, you really should check it out. I m not making any money on it, but it makes my insides feel gooey to know I made your life that much easier. You re totally worth it. It s a plugin with a powerful Markdown editor that replaces the WordPress HTML view. It provides auto-pairing, wrapping, link detection, smart list continuation, reference link title completion and much more. Auto-pairing and wrapping are my favorite features select text and type the left character of a double or single quote, square, curly or angle brackets or a backtick and the appropriate pairing will surround your selection. If you type the left character without a selection, it will create the pair and place your cursor in the middle. If you finish typing and your cursor is to the immediate left of the right character in the pair, typing the right character will jump you out of the scope and not double the quote/bracket. You can save your post as Markdown if you have a plugin installed to render it on the front end ( like this one ), or you can use the built-in Markdown (Extra) converter to turn it into clean HTML and switch back the the visual view. You can also go the other way, turning existing HTML posts into Markdown for editing using the Markdownify button at the bottom. It works just like Marky . There s also an overlay preview system (which can take custom styles) and a full-screen editing mode with customizable background color and transparency. You can even customize the font in the editor with built-in Google fonts . Whew. I could go on for a long, long time, but I just wanted to let people know that Markdown QuickTags is alive and kicking, and making some new strides soon. It s not perfect, but it definitely makes my life easier. Check it out at the Wordpress Plugins site . There s an error that s still plaguing the plugin where, when you first install it, it tells you it was unsuccessful because of an invalid header . I can not find the problem, but going",
"keywords": ["directory","google","hypertext","marky","plugin","protocol","tools","wordpress","check","extra","google","markdown","markdownify","marky","plugins","pressing","quicktags","wordpress","wordpress","activating","again","alive","almost","angle","answer","anybody","attraction","autocomplete","background","backtick","because","bottom","bracket","brackets","breakdown","built","button","celebrating","character","characters","check","clean","color","containing","continuation","converter","couple","create","curly","cursor","custom","customizable","customize","definitely","detection","disables","diving","double","downloads","easier","editing","editor","entirely","error","favorite","features","field","finally","finish","first","fonts","format","front","going","gooey","handled","happen","happier","header","heard","immediate","inline","insides","install","installed","invalid","itself","kicking","leaving","links","machine","makes","making","manually","middle","money","nvalt","overlay","pairing","parse","passed","paste","people","plaguing","plugin","plugins","posts","powerful","preview","previously","problem","prove","provides","quick","quote","ready","replaces","reports","right","running","scope","screen","selected","selection","single","smart","smooth","source","square","strides","styles","subjective","surround","switch","system","tells","title","titles","totally","transparency","tried","turning","twice","typing","unsuccessful","upgrades","using","version","visual","wanted","weekend","where","works","worth","wrapping"]
},{
"title": "Bored with your MacVim icon? Me too.",
"url": "/2011/04/23/bored-with-your-macvim-icon-me-too/",
"tags": ["design","macvim"],
"date": "Apr 23rd, 2011",
"ts": "1303568340",
"summary": "I got bored with the default MacVim icon a long time ago, before I was even using it regularly. I ve been using Daniel Fischer s replacement icons since then, but today I got bored again. I didn t find anything great out on the net, so I set off to make my own. If you want to try them out, just download the zip at the bottom of the page. It contains a folder for each available style (6) and each folder has a MacVim.icns file in it. If you go to MacVim.app in Finder and right click it, you can choose Show Package Contents to get into the bundle. Then navigate to Contents - Resources and drop your new MacVim.icns file over the existing one. You might want to move the old one somewhere safe first, you might hate the new one Let me know what you think. It s not my shining moment in graphic design, but I rather like the blue ones. There s no accounting for taste, right? Update: Here s the PSD file (Photoshop CS5), if you want it. You can tweak your own angles, colors and fonts/text easily (there are only a few layers). Most of it is simple layer styles with shapes and masks, and everything is editable. Change the color just by double clicking the bottom shape layer, everything else will shift with it. Brett's MacVim Icons v1 v1 Download Brett's MacVim Icons v1 v1 I just got bored with the existing MacVim icons so I thought I'd try to throw something together. Zip file contains ICNS files ready to drop into the Resources folder, as well as PNG versions at 512px. Published 04/23/11. Updated 04/23/11. Changelog Donate More info",
"keywords": ["click","context","double","finder","macvim","management","manager","brett's","change","changelog","contents","daniel","donate","download","finder","fischer","icons","macvim","package","photoshop","published","resources","updated","accounting","again","angles","available","before","bored","bottom","bundle","choose","click","clicking","color","colors","contains","default","design","double","download","easily","editable","everything","files","first","folder","fonts","graphic","great","icons","layer","layers","masks","navigate","rather","ready","regularly","replacement","right","shape","shapes","shift","shining","simple","since","somewhere","style","styles","taste","think","thought","throw","today","together","tweak","using","versions"]
},{
"title": "Web excursions: April 13 - April 19",
"url": "/2011/04/19/web-excursions-april-13-april-19/",
"tags": ["bookmarks"],
"date": "Apr 19th, 2011",
"ts": "1303257600",
"summary": "From Me To You These are amazing. GIF128 has come a long way since 94. Filter RSS feeds with Feed Rinse This is on my list of things to do when I feel more like fiddling than getting anything else done. fever is a very cool concept, but I m usually looking for stories that haven t been everywhere yet Photobooth with PHP, jQuery and CSS3 This web-based photobooth script has some possibilities API Documentation for text-processing.com text-processing.com API v1.0 documentation All of my favorite text analysis functions in one free API. OmniFocus Solarized Themes Ben Brooks turned the Solarized Vim themes into OmniFocus themes. Sweet.",
"keywords": ["group","interface","iphone","omnifocus","programming","brooks","filter","links","omnifocus","photobooth","rinse","solarized","themes","amazing","based","concept","everywhere","favorite","feeds","fever","fiddling","functions","getting","haven","interest","jquery","looking","photobooth","possibilities","processing","script","since","stories","themes","through","turned","usually"]
},{
"title": "Web excursions: April 9 - April 13",
"url": "/2011/04/13/web-excursions-april-9-april-13/",
"tags": ["bookmarks"],
"date": "Apr 13th, 2011",
"ts": "1302714000",
"summary": "murtaugh/HTML5-Reset - GitHub An HTML5 blank wordpress theme. I m planning a major overhaul of the blog, this would probably be a good starting point. Nurph. Chatting in Twitter? Get a Room. This is a great idea, really. A way to offload extended/mundane conversations from Twitter to a more appropriate forum. I just hope I remember it next time I need it. Ah, bookmarking. The New Guy s Computer - (37signals) Nice this is very close to my own collection of must-install apps, just substitute LaunchBar for Alfred and Divvy for SizeUp. Pow: Zero-configuration Rack server for Mac OS X Rails developers especially ones who deal with multiple Ruby configurations will love this for local development. Snazzy. ded/qwery - GitHub Qwery is a 1k blazing fast query selector engine [ ] according to our benchmarks Qwery is 2x faster than Sizzle It s half the size of Sizzle, too. Diffbot: Follow Anything Whoa, hot. Readability clone with page spanning and REST API.",
"keywords": ["divvy","github","jquery","launchbar","twitter","alfred","chatting","computer","diffbot","divvy","github","launchbar","links","nurph","qwery","rails","readability","reset","sizeup","sizzle","snazzy","twitter","benchmarks","blank","blazing","bookmarking","clone","close","collection","configuration","configurations","conversations","developers","development","engine","especially","extended","faster","forum","great","install","interest","local","major","multiple","mundane","murtaugh","offload","overhaul","planning","point","query","qwery","remember","selector","server","signals","spanning","starting","substitute","theme","through","wordpress"]
},{
"title": "Address Book search and Skype from the command line",
"url": "/2011/04/13/address-book-search-and-skype-from-the-command-line/",
"tags": ["scripting","skype","terminal"],
"date": "Apr 13th, 2011",
"ts": "1302696720",
"summary": "Here s a neat little command-line utility for searching your address book: aboo . It s not complex it just takes a single word or phrase and searches your Address Book entries names for it. It can output vcards and YAML, too. I created a fork that adds a few things, most importantly I extended search to business names and notes. It also does a better job of realizing there s no proper name and substituting the Company name in the output, if it exists. There s a compiled binary of my fork on GitHub, too. Just put it in and run to see the options. So, I m toying with that this morning and I get a sudden urge to be able to make a Skype phone call from the command line. I added a -p flag to which only returns entries which have a phone number. A little on the output, and you can get a menu of people to send straight to a function that can call them with Skype. I ll skip the middle part for now, but here s a bash function for dialing a number. It accepts multiple formats of strings and tries to turn it into a standardized format for Skype (+15554321111). Usage: or (it will strip the extra characters, makes it easier to paste and dial quickly). I normally make most of my Skype calls from LaunchBar, but this will come in handy every once in a while when I m already working in Terminal. Thought it might be handy for someone else, too.",
"keywords": ["address","france","github","launchbar","skype","telecommunication","telephone","address","company","github","launchbar","skype","terminal","thought","usage","accepts","added","address","binary","business","calls","characters","command","compiled","complex","created","dialing","easier","entries","exists","extended","extra","format","formats","function","handy","importantly","little","makes","middle","morning","multiple","names","normally","notes","options","output","paste","people","phone","phrase","proper","quickly","realizing","returns","search","searches","searching","single","standardized","straight","strings","strip","substituting","sudden","takes","toying","tries","utility","vcards","while","working"]
},{
"title": "Another pit bull proves her good citizenship",
"url": "/2011/04/13/another-pit-bull-proves-her-good-citizenship/",
"tags": ["aditi"],
"date": "Apr 13th, 2011",
"ts": "1302677520",
"summary": "Our pit bull, Emma, passed the Canine Good Citizenship (CGC) test today. If you re not familiar, it s a 10-part behavioral test in which failing any part of the test is a total disqualification. Emma passed all 10 tests with flying colors, and I couldn t be more proud. My wife, Aditi , gets 100% of the credit. She s a Certified Professional Dog Trainer and has worked with the ASPCA doing dog assessments on military bases where they ve instituted breed bans. She s been working with Emma since we first adopted her a few years ago. She recently took her through somebody else s class and then through the CGC test this evening. I do what I can, but not nearly enough. Nonetheless, I get coated in slobbery love daily. So, here s to Emma. May she live out her life as an ambassador for a maligned breed. In the meantime, we continue to run Minnesota Pit Stop , assessing and placing lost and surrendered pit bulls one at a time. Check out Emma on Flickr . And don t miss this shot: Emma balancing a full wine glass on her head. No strings.",
"keywords": ["aditi","american","animals","canine","citizen","cruelty","flickr","minnesota","prevention","society","aspca","aditi","canine","certified","check","citizenship","flickr","minnesota","nonetheless","professional","trainer","adopted","ambassador","assessing","assessments","balancing","bases","behavioral","breed","bulls","class","coated","colors","continue","couldn","credit","daily","disqualification","doing","enough","evening","failing","familiar","first","flying","glass","instituted","maligned","meantime","military","nearly","passed","placing","proud","recently","since","slobbery","somebody","strings","surrendered","tests","through","today","where","worked","working","years"]
},{
"title": "Web excursions: April 3 - April 9",
"url": "/2011/04/09/web-excursions-april-3-april-9/",
"tags": ["bookmarks"],
"date": "Apr 9th, 2011",
"ts": "1302372000",
"summary": "Common Elements Used in Wooden UI Design Some cool tutorials included, even if you re already bored with wooden UI design. CSS3 Generator - By Eric Hoffman Peter Funk Another CSS3 generator Team From Engadget Makes Jump to SB Nation - NYTimes.com I shouldn t be proud about figuring out something so obvious early on, but I have to say: I knew it. 10 more useful iPhone tips tricks Again I m amazed at how much I don t know. Did you know that if you type an extra e after were on your iPhone, it will autocorrect to we re? Lots more where that came from VimGolf - real Vim ninjas count every keystroke! I am so outclassed.",
"keywords": ["design","engadget","generator","handhelds","interface","iphone","smartphones","again","another","common","design","elements","engadget","generator","hoffman","links","makes","nytimes","nation","peter","vimgolf","wooden","amazed","autocorrect","bored","count","design","extra","figuring","generator","iphone","included","interest","keystroke","ninjas","obvious","outclassed","proud","shouldn","through","tricks","tutorials","useful","where","wooden"]
},{
"title": "nvALT 2.0: it's here",
"url": "/2011/04/05/nvalt-2-0-its-here/",
"tags": ["multimarkdown","nvalt","readability"],
"date": "Apr 5th, 2011",
"ts": "1302023340",
"summary": "The long-promised 2.0 (yeah, I skipped 1.0.8) is finally here. Please download it here , as the application filename has changed to nvALT and Check for Updates won t work properly. It also uses its own preference files and database now, so you ll have to rebuild your preferences when you first launch it. This version is no longer my own project. I ve teamed up with ElasticThreads , and nvALT 2.0 would not have happened without him. I got too busy for a while to update with all of the sweet changes that Scrod made to the original Notational Velocity, and things were looking a little grim for a release any time soon. ElasticThreads picked up my fork, incorporated most of my changes with his own and applied them to version b4 of the trunk, effectively rescuing me and creating a spectacular release at the same time. Scrod already brought great changes like [[note linking]], improved widescreen view and automatic list bullet creation, among a dozen other new features. The following is a list of highlights in nvALT 2.0. See the project page for a complete list of new features. Textile and (Multi)Markdown support with Preview window (hold down Control to view temporarily) HTML source code tab in the Preview window for fast copy/paste to blogs, etc. Customizable HTML and CSS files for the Preview window Custom HTML/CSS templates can be included in saved output from the Preview Unique interface design changes Social note sharing via Peggd Convert imported URLs to Markdown, and optionally strip excess content with Readability Multi-note tagging with autocompletion Full-screen mode Optional menubar and menubar-only modes Color schemes Improved readability with optional width limit and margins Really cool scrollbars Word Count (hold down Option to view temporarily) Open note in 3rd party text editor (also part of NV, now) I ll post a roadmap soon, after David and I have a little more time to agree on the next steps. In the meantime, enjoy the new release! Source code will be available soon, and I ll post the link on the project page once it s updated. As always, thanks to Scrod (aka Zachary Schneirov) , Christian Tietze , and others whose work is a part of this version. Note: Apparently our build is not particularly PowerPC compatible. Since we don t have PPC machines to test on, it s difficult to provide compatibility for them. Well do our best, but in the meantime its probably best for PPC users to hold off or use this",
"keywords": ["cascading","count","locator","markdown","notational","resource","sheets","source","style","velocity","apparently","check","christian","color","control","convert","count","custom","customizable","david","elasticthreads","improved","markdown","multi","notational","optional","peggd","powerpc","preview","readability","schneirov","scrod","since","social","source","textile","tietze","unique","updates","velocity","zachary","agree","among","applied","autocompletion","automatic","available","blogs","brought","build","bullet","changed","changes","compatibility","compatible","content","creating","creation","database","design","difficult","download","dozen","editor","effectively","enjoy","experimentally","features","filename","files","finally","first","great","happened","highlights","imported","improved","included","incorporated","interface","launch","limit","linking","little","longer","looking","machines","margins","meantime","menubar","modes","nvalt","optional","optionally","original","others","output","particularly","party","paste","picked","preference","preferences","project","promised","properly","readability","rebuild","release","rescuing","roadmap","saved","schemes","screen","scrollbars","sharing","skipped","source","spectacular","steps","strip","support","tagging","teamed","templates","temporarily","thanks","trunk","updated","users","version","while","whose","widescreen","width","window"]
},{
"title": "AutoTag2: smarter tagging for TextMate and WordPress",
"url": "/2011/04/03/autotag2-smarter-tagging-for-textmate-and-wordpress/",
"tags": ["wordpress","blogging","tagging","textmate"],
"date": "Apr 3rd, 2011",
"ts": "1301861460",
"summary": "I was tooling around the Vim website looking at blogging plugins this morning. I noticed that one of them, Vimpress , had linked to an old project of mine that allowed you to work with Ultimate Tag Warrior tags through XML-RPC . Since the inclusion of tagging support in WordPress, Ultimate Tag Warrior has been defunct, and so have the UTW-RPC plugin and associated AutoTag TextMate bundle. Thinking about it for a minute, I realized I really did miss the functionality that AutoTag had given me. While I ve toyed around with blogging from Vim, I still primarily use TextMate, not least because of the Blogsmith Blogging Bundle . Until that kind of functionality is ported to Vim, I m happy right here. Thus, I spent my Sunday afternoon reviving the AutoTag bundle. If you use TextMate to blog on a WordPress site , you ll want to see this. There are two parts to this: a WordPress plugin that adds an XML-RPC call for getting all of the tags in use on the blog, and a small TextMate bundle for making good use of it. The TextMate bundle cribs off of my previous AutoTag project, and borrows most of the remote functionality from the original TextMate blogging bundle. Why reinvent the wheel? I m bundling both together in the download, so if you want to use the WordPress plugin to port the functionality elsewhere (say, Vim?), you can just pull out the parts you need. What the bundle does (short version) is find the most appropriate tags for your content based on tags you ve already used before. This helps you easily keep your tag collection trim and useful. No disparate tags because of inconsistent capitalization, plurals or conjugation. Things that are related stay related. This can be especially difficult blogging from TextMate because you can t quickly see all tags the way you can from the WordPress editor. This solves the problem. Upload the gettags-rpc folder from the zip download to your folder on your server. Open your admin page and go to the Plugins panel. Activate the GetTags-RPC plugin in the plugin list. If the plugin activates without error, you should be ready to go. It s a very simple plugin without a lot of error checking, so let me know if you have any trouble with it. To install AutoTag in TextMate, double click on the bundle in the download zip file. It should open TextMate, pop up the Bundle Editor and show you the installed bundle and its commands. Done. Assuming you have AutoTag installed in TextMate and the GetTags-RPC plugin",
"keywords": ["textmate","wordpress","activate","again","assuming","autotag","autotagging","blogging","blogs","blogsmith","bundle","bundles","changelog","commands","common","compares","control","donate","download","editor","finish","first","gettags","github","install","keywords","measures","plugins","porter","published","second","setup","since","standard","stemming","strips","sunday","textmate","thinking","ultimate","updated","upload","using","vimpress","warrior","while","wordpress","words","activates","adding","adjective","admin","adverb","afternoon","algorithm","allowed","although","anywhere","appreciated","array","associated","assume","automatically","available","based","because","before","blank","blogging","borrows","build","bundle","bundling","capitalization","casing","challenge","check","checking","click","collection","colon","combination","command","commands","commas","common","compare","conjugation","content","creates","cribs","curious","cursor","defunct","dialog","difficult","disparate","doesn","double","download","easily","editing","editor","elsewhere","entire","error","especially","eventually","favorite","figure","finding","folder","forms","frequency","functionality","gettags","getting","gives","going","greatly","happy","headers","helps","ignores","inclusion","inconsistent","install","installed","keeping","linked","looking","makes","making","manually","match","matches","minute","morning","noticed","original","panel","parts","permanently","plugin","plugins","plurals","point","ported","primarily","primary","problem","processing","project","punctuation","quickly","ranked","ready","realized","reinvent","related","relevance","remote","resulting","results","return","returned","reviving","right","satisfactory","selection","server","short","similar","simple","simply","small","solves","sorts","space","spent","stemmed","stems","support","tagging","template","through","together","tooling","toyed","trigger","triggered","trouble","useful","version","website","wheel","words","worth","write","writers","written"]
},{
"title": "Web excursions: April 2 - April 3",
"url": "/2011/04/03/web-excursions-april-2-april-3/",
"tags": ["bookmarks"],
"date": "Apr 3rd, 2011",
"ts": "1301839200",
"summary": "Ceaser - CSS Easing Animation Tool - Matthew Lein A tool to generate code for custom easing in CSS3 animations. Not only a time-saver, it makes possible things I didn t even know I could do. CSS Typography: Examples and Tools Huge roundup of CSS typography tools and examples. EasyMotion - Vim motions on speed! : vim online Jump around! Jump around! jQuery Waypoints Given that our lives revolve around scrolling as much as they do, this jQuery plugin has some great possibilities for improving experiences. Mac OS X Screencasts - Scrivener Some more great screencasts about Scrivener, these from Andreas Zeitler. I think Scrivener should get an award for facilitating so much harmony among nerds.",
"keywords": ["cascading","formats","jquery","scrivener","sheets","style","tools","typography","andreas","animation","ceaser","easing","easymotion","examples","links","matthew","screencasts","scrivener","tools","typography","waypoints","zeitler","among","animations","award","custom","easing","examples","experiences","facilitating","great","harmony","improving","interest","jquery","lives","makes","motions","nerds","online","plugin","possibilities","possible","revolve","roundup","saver","screencasts","scrolling","speed","think","through","tools","typography"]
},{
"title": "Mirror your Pinboard bookmarks with OpenMeta tags",
"url": "/2011/04/02/mirror-your-pinboard-bookmarks-with-openmeta-tags/",
"tags": ["openmeta","pinboard","spotlight","tagging"],
"date": "Apr 2nd, 2011",
"ts": "1301772120",
"summary": "Update [April 3rd, 2011]: The current version, 1.0.4 at the moment, has bugfixes for running without Tags.app installed, more error handling and a new setting for locations where the date format is . If you had a previous version and run into trouble, please replace the script with the latest and delete your file to regenerate a new one with the additional localization setting. The download is at the end of this post, but I highly suggest reading at least the setup section before you get all crazy with it. I wrote a script a while back that would watch for changes in my Delicious bookmarks and mirror new ones to .webloc files on my drive, applying OpenMeta tags so that they were locally searchable with Spotlight and other OpenMeta applications . I stopped using Delicious, though, and started using Pinboard , which I mentioned recently that I adore . In the process of revamping the script it became a little more involved than the original. This script is for people who want to take advantage of Pinboard with its full text search, easy privacy settings, accessible API, etc. yet still want to be able to search their bookmarks in local Spotlight (and similar) searches. While it has the option to save bookmarks with a certain tag as searchable PDF files, it doesn t attempt to replicate the full spectrum of Pinboard features. It s just a way to make your remote bookmarks locally searchable, available system-wide and OpenMeta compatible. I toyed around for a long time with using safaribookmark files instead of webloc files. They let you store a larger preview image, and you can include full text from websites within the XML of the file. Lots of possibilities there. For many reasons, I decided to stick with these little webloc files. If I want fancier images and web text, I ll use Webbla , and if I want comprehensive full text search I ll use HistoryHound , both excellent programs in their own right. I want OpenMeta and simplicity, though. If I know I m looking for a bookmark from Pinboard, I can just go to Delibar and do some searching. The goal is to be able to include my web discoveries in larger searches on my Mac. First, put the script (download below) somewhere you can leave it, preferably somewhere in your system path. That s not a huge deal, though, because you ll be supplying an absolute path in most automation cases anyway. Once you have it situated, open Terminal and run . Now you can run the script from the command line to configure and test",
"keywords": ["coverflow","delicious","document","dropbox","format","openmeta","pinboard","portable","spotlight","anyway","changelog","choosy","chrome","cocoa","comments","configuration","coverflow","delibar","delicious","donate","download","dropbox","features","firefox","first","github","growl","hazel","historyhound","instructions","leave","leopard","library","lingon","notes","openmeta","optional","paparazzi","pinboard","preferences","published","python","running","sqlite","stdout","safari","setting","setup","spotlight","store","target","terminal","uninstalling","updated","webbla","while","above","absolute","accessible","activity","additions","address","adore","advantage","adventurous","again","agile","allow","annotated","another","anyway","anywhere","applications","applied","applying","appreciated","automatically","automating","automation","available","average","background","backup","became","because","before","below","blank","bookmark","bookmarking","bookmarks","boolean","bothers","bottom","browser","bucks","bugfixes","certain","change","changes","channels","check","choice","collected","collection","comes","command","comment","compares","compatible","comprehensive","computers","config","configuration","configure","convenience","couple","covered","crazy","create","created","creating","credentials","cross","custom","database","dateformat","debug","debugging","decide","decided","dedicated","default","defaults","defined","deletions","description","descriptions","determines","disable","discoveries","display","distracted","doesn","doing","download","downloading","drive","easiest","easily","editor","either","enabled","enough","entire","error","essentially","everything","excellent","exist","expects","external","false","fancier","favicon","favorite","feature","features","field","filename","files","first","folder","force","format","found","fully","functionality","generally","generates","going","great","greatly","grouping","handier","handling","happen","haven","highly","hours","icons","image","images","imagine","import","imported","included","insertions","install","installed","instantly","instructions","integer","integration","interface","intervals","involved","keeps","larger"]
},{
"title": "Web excursions: March 29 - April 2",
"url": "/2011/04/02/web-excursions-march-29-april-2/",
"tags": ["bookmarks"],
"date": "Apr 2nd, 2011",
"ts": "1301767200",
"summary": "browserling - interactive cross-browser testing in your browser Really, really nice web-based browser testing. Test most Windows browsers without leaving your awesome Mac browser. Let EC3 run the VMs, I don t wanna. drdrang/tedist at master - GitHub A python script from @drdrang to get us one step closer to an easily distributable/shareable TextExpander snippet format. Goes along with the experiment I did last week . Thanks! Cloud9 - Your code anywhere, anytime I have to at least try this out. It could be my future. Display Guidelines The freedom (and API) that made Twitter beautiful are already becoming things of the past. Scrivener from my POV - yuvi zalkow What a great screencast. If you love Scrivener, or are wondering why everybody else does, here you go.",
"keywords": ["browser","github","howbert","interface","programming","python","textexpander","twitter","windows","cloud","display","github","guidelines","links","scrivener","textexpander","thanks","twitter","windows","anytime","anywhere","awesome","based","beautiful","becoming","browser","browserling","browsers","closer","cross","distributable","drdrang","easily","everybody","experiment","format","freedom","great","interactive","interest","leaving","master","python","screencast","script","shareable","snippet","tedist","testing","through","wanna","wondering","zalkow"]
},{
"title": "Web excursions: March 28",
"url": "/2011/03/28/web-excursions-march-28/",
"tags": ["bookmarks"],
"date": "Mar 28th, 2011",
"ts": "1301317200",
"summary": "icanhazip.com Finds Your Public IP Anywhere I d link the service, but there s not much to see. Which is why it s awesome. Huge Showcase of Detailed Interface Design Elements Highlights from Dribbble. LeaVerou/CSSS - GitHub Lea Verou s CSSS HTML5-based presentation platform. This is my new base for my slideshow projects, and deservedly so. Check it out! Note: adding stacks, builds and external note/next slide popup. Lea Verou I ll admit it. I had never heard of Lea Verou until I found the name in a few very cool javascripts. This blog deserves a place in the RSS reader of any web designer. CSS gradients please! Nice script to convert standard linear-gradient syntax to -moz, -o, and -webkit syntax, with ready-to-paste properties.",
"keywords": ["address","aggregator","cascading","dribbble","github","sheets","standards","style","usability","verou","anywhere","check","design","detailed","dribbble","elements","finds","github","highlights","interface","leaverou","links","public","showcase","verou","adding","admit","awesome","based","builds","convert","deservedly","deserves","designer","external","found","gradient","gradients","heard","icanhazip","interest","javascripts","linear","paste","platform","popup","presentation","projects","properties","reader","ready","script","service","slide","slideshow","stacks","standard","syntax","webkit"]
},{
"title": "Make CSSEdit use the latest Webkit nightly every time",
"url": "/2011/03/28/make-cssedit-use-the-latest-webkit-nightly-every-time/",
"tags": ["cssedit","macos","webdesign"],
"date": "Mar 28th, 2011",
"ts": "1301313240",
"summary": "If you re a web designer with a Mac, you probably use or at least know of CSSEdit . In it s heyday, it was the way to edit CSS. It s fallen a little out of repair it doesn t recognize new selectors and properties (which messes up color coding and completion). Plus, it doesn t play well with nifty frameworks like LESS or SASS, if you re in the habit of using those. My watcher script was my solution to the latter. There s a cool trick, though, that allows you to force CSSEdit to use the bleeding-edge Webkit for rendering. Quite a while back, developer Jan Van Boghout posted a tip for unlinking the default Webkit framework and using the one inside of the latest nightly build you have installed. It was a simple Terminal command that you had to launch from the command line, and the effect only lasted for that session. The command eventually stopped working, until Ian Beck noted that the location of the frameworks in Webkit.app had changed. It worked with that tweak, but it was still a pain sometimes, even with aliases. I don t know why it took me this long to think of it, but there s an easy way to make the command into a wrapper within the CSSEdit application bundle. This isn t for the faint of heart, and it will have to be done again if CSSEdit ever updates in the future, but it s a good hack for the time being. I m going to write these instructions to exclusively use Terminal, although many steps can be accomplished through Finder (use Show Package Contents from the right click menu). Save the file, close it, and make it executable: Now, when you launch the app, it will run the shell command to unlink and relink the Webkit framework. Note that if you do this on Leopard, you ll need to change the DYLDFRAMEWORKPATH to point to 10.5 instead of 10.6. Enjoy!",
"keywords": ["cascading","chrome","finder","google","opera","sheets","style","webkit","boghout","cssedit","contents","create","enjoy","framework","finder","leopard","package","rename","terminal","webkit","accomplished","again","aliases","allows","although","bleeding","build","bundle","change","changed","click","close","coding","color","command","default","designer","developer","doesn","editor","eventually","executable","faint","fallen","folder","force","framework","frameworks","going","habit","heart","heyday","inside","installed","instructions","lasted","latest","latter","launch","little","location","messes","nifty","nightly","noted","point","posted","properties","recognize","relink","rendering","repair","right","script","selectors","session","shell","simple","solution","sometimes","steps","stopped","think","through","trick","tweak","unlink","unlinking","updates","using","watcher","whatever","while","within","worked","working","wrapper","write"]
},{
"title": "Web excursions: March 26 - March 28",
"url": "/2011/03/28/web-excursions-march-26-march-27/",
"tags": ["bookmarks"],
"date": "Mar 28th, 2011",
"ts": "1301308860",
"summary": "Hacker s Guide to Tea I took the Community Ed course from Mandala Tea , so I knew this stuff. Here it is, though, all put in one great article. Use the Bash trap Statement to Clean Up Temporary Files A great little Bash tip for any budding shell scripters. has all kinds of possibilities for reducing code and providing better error handling. Syntax - Kramdown A Markdown superset for Ruby which adds most importantly to me the ability to set attributes (class, id, etc.) on both inline span and block-level elements. S5: A Simple Standards-Based Slide Show System Really still the best HTML slideshow. I ve tried a ton now, but I love features like the external note/time HUD. CSS3 A practical introduction I m working on rebuilding S5 to use Maruku (Markdown+), HTML5 and CSS3. This site includes most of the tricks I want to do CODE2K:LABS - MailPluginFix If you re like me, Mail.app is only bearable with a few plugins, all of which break when Apple updates OS X. Here s an easy fix for incompatibility issues that arise. Pinboard API (v1) Documentation Pinboard finally documented their API! PHP plist parsing Handy rundown on parsing OS X plist files with PHP and XML scripting.",
"keywords": ["apple","element","interface","journal","linux","markdown","programming","apple","based","clean","community","files","guide","hacker","handy","kramdown","links","mailpluginfix","mandala","markdown","maruku","pinboard","simple","slide","standards","statement","syntax","system","temporary","ability","arise","article","attributes","bearable","block","break","budding","class","documented","elements","error","external","features","files","finally","great","handling","importantly","includes","incompatibility","inline","interest","introduction","issues","kinds","level","little","parsing","plist","plugins","possibilities","practical","providing","rebuilding","reducing","rundown","scripters","scripting","shell","slideshow","stuff","superset","through","tricks","tried","updates","working"]
},{
"title": "Automating HTML5 video encodes",
"url": "/2011/03/27/automating-html5-video-encodes/",
"tags": ["automation","terminal","video"],
"date": "Mar 27th, 2011",
"ts": "1301271540",
"summary": "I spent an inordinate amount of time not doing useful things today. During this non-productivity bender, I got a little obsessed with making the HTML5 video encoding process easier. I ve been working on a tutorial site for the Blogsmith Bundle, so this whole deal needed to be sped up. I came out with a script which, when combined with the right command line utilities, takes 90% of the manual labor out of creating the multiple formats needed. HTML5 video, if you re not familiar, provides a means to supply modern browsers with high-quality video without using Flash. It works across iOS devices beautifully, and the markup is highly semantic. The problem is that every browser has chosen a different format to promote, and using HTML5 video effectively means providing the same video in three formats (OGV, MP4, WEBM). Then, you need to code in a Flash fallback for older browsers. This would all be fine if my usual video conversion tools had a multiple-encode feature. They don t. The only one that comes close is Evom , which has an HTML5 preset to encode OGV and MP4 at the same time, but the OGV files won t play in Firefox and it can t do WEBM at all right now. Four steps, and I only have to interact with two of them. The script is pretty hardcoded for my setup, but I moved some of the config up to the top for convenience. You ll need ffmpeg and ffmpeg2theora installed, both of which are really easy to set up with homebrew . You can probably find binaries, too, but I just used for these. Here s the script, hope it helps someone else, too: Let me know if you have a better way to automate this. Also, let me know if you ve found a good way to encode h.264 from the command line on a Mac. I haven t been able to get ffmpeg to compile with x/h.264 support yet, but it was irrelevant as I had to output some format to begin with. Might as well save to the one format I can t encode properly from a shell script",
"keywords": ["basename","ffmpeg","filename","firefox","flash","multimedia","theora","blogsmith","bundle","creates","export","firefox","flash","hazel","textexpander","videojs","wordpress","across","amount","automate","based","beautifully","begin","bender","binaries","browser","browsers","bucket","chosen","close","comes","command","config","convenience","conversion","converted","create","creating","detects","devices","different","doing","easier","effectively","encode","encoding","extension","fallback","familiar","feature","ffmpeg","files","finished","first","folder","format","formats","found","frame","growl","hands","hardcoded","haven","helps","highly","homebrew","image","inordinate","installed","interact","irrelevant","labor","little","looks","making","manual","markup","matters","modern","moved","moves","multiple","needed","notification","obsessed","older","output","passes","plugin","poster","preset","problem","process","productivity","promote","properly","provides","providing","quality","right","rsync","running","screencast","script","semantic","sequence","server","setup","shell","shortcode","simply","spent","steps","support","takes","taking","theora","today","tools","tutorial","ungodly","uploaded","useful","using","utilities","version","video","whole","workflow","working","works"]
},{
"title": "Web excursions: March 20 - March 25",
"url": "/2011/03/27/web-excursions-march-20-march-25/",
"tags": ["bookmarks"],
"date": "Mar 27th, 2011",
"ts": "1301265660",
"summary": "Formalize CSS - Teach your forms some manners! So, so nice. Consistent and beautiful form styling. 10 Omnigraffle tips you might not know (plus one bonus!) Trying to get a little better with OmniGraffle lately. My DuckDuckGo travels led me here Using Git Versioning inside your XCode Project Automatically fill in CFBundleVersion and CFBundleShortVersionString when using Git. 6 .htaccess Tricks for Better WordPress SEO Security Some great ideas in here. I especially like the @admin trick at the end. Flow: Task Management and Online Collaboration for Teams This is slick. [via TUAW ] The AeroPress and its fervent coffee-loving fans - latimes.com via Marco.org . Vim Ruby Runner The Pug Automatic Replicate TextMate s Command-R to run Ruby scripts in Vim while editing. Linux Programming: Fuzzy Clock Freeware - Fuzzy Clock is a Python class and command line utility to generate fuzzy clock output. Finally found a decent link for the fuzzyclock command line utility.",
"keywords": ["aeropress","cascading","omnigraffle","python","sheets","style","textmate","aeropress","automatic","automatically","cfbundleshortversionstring","cfbundleversion","clock","collaboration","command","consistent","duckduckgo","finally","formalize","freeware","fuzzy","links","linux","management","marco","omnigraffle","omnigraffle","online","programming","project","python","replicate","runner","security","teach","teams","textmate","tricks","trying","using","versioning","wordpress","xcode","admin","beautiful","bonus","class","clock","coffee","command","decent","editing","especially","fervent","forms","found","fuzzy","fuzzyclock","great","htaccess","ideas","inside","interest","latimes","little","loving","manners","output","scripts","slick","styling","through","travels","trick","using","utility","while"]
},{
"title": "New: TextExpander downloads with custom prefixes",
"url": "/2011/03/26/new-textexpander-downloads-with-custom-prefixes/",
"tags": ["experiments","textexpander","tools"],
"date": "Mar 26th, 2011",
"ts": "1301162460",
"summary": "Hey, TextExpander users! Wanna see something cool? I made a little tool this morning to allow any of my TextExpander groups to be installed with your own custom prefix. You can now use whatever is standard for your shortcuts. All of the group links on the project page now go to this tool, and you can open it directly for access to all of my groups. The tool lets you select the group and enter your prefix, then provides you with a download link, a URL for Add group from URL in TextExpander, as well as a preview of all of the snippets in the group and how their shortcuts will be modified. If you follow a link from the TextExpander project page into the tool, it will select the appropriate group and add a suggested prefix automatically. I m more than happy to share the process and code with anyone who wants to implement it. There are folks working to bring together a TE community site , and I d love to see this kind of tool implemented there. I built it was a certain amount of scalability in mind, and made it as easy as possible for people to create compatible files for it. If you want to add your own groups to my tool, let me know. I ll come up with a way of providing attribution and possibly start a full repository here, to be mirrored or moved once a dedicated outlet becomes available. In case you re wondering how it works: you take a .textexpander file, run a search and replace on it to change your own standard prefix into [[PREFIX]] and rename the file with a extension. Drop it into a folder on the web server and it will automatically show up in the list of available groups, and the snippets preview is generated on the fly by parsing the plist via an Ajax call. No database for now, just globbing and parsing. I like it. The code is available on GitHub for anyone who wants to play. The next step is to turn it into a community site: add a means of attribution (which will either mean a database or metadata in the .tedist files) and an uploader for contributions. Then search and organization features, of course. That s the direction Poslavsky Alexander and I want to head with http://te-snippets.com . We ll keep you posted.",
"keywords": ["dropbox","github","howbert","locator","resource","textexpander","addendum","alexander","github","prefix","poslavsky","textexpander","wanna","access","allow","amount","anyone","attribution","automatically","available","becomes","bring","built","certain","change","community","compatible","contributions","create","custom","database","dedicated","direction","directly","download","either","enter","extension","features","files","folder","folks","generated","globbing","group","groups","happy","implemented","installed","links","little","metadata","mirrored","modified","morning","moved","organization","outlet","parsing","people","plist","possible","possibly","posted","prefix","preview","process","project","provides","providing","rename","replace","repository","scalability","search","server","share","shortcuts","snippets","standard","suggested","tedist","textexpander","together","uploader","users","wants","whatever","wondering","working","works"]
},{
"title": "Additional Characters for TextExpander",
"url": "/2011/03/23/additional-characters-for-textexpander/",
"tags": ["textexpander"],
"date": "Mar 23rd, 2011",
"ts": "1300877760",
"summary": "Thanks to Thomas Borowski , the Characters group in my TextExpander project has been expanded to include Home, End, Control, Escape, Enter and Delete symbols. Check it out on the TextExpander project page . If you already have the group installed from the URL, you can update it from within TextExpander.",
"keywords": ["dropbox","howbert","locator","resource","snippets","textexpander","borowski","characters","check","control","enter","escape","textexpander","thanks","thomas","expanded","group","installed","project","symbols","within"]
},{
"title": "Web excursions: March 12 - March 20",
"url": "/2011/03/20/web-excursions-march-12-march-20/",
"tags": ["bookmarks"],
"date": "Mar 20th, 2011",
"ts": "1300643580",
"summary": "trash Use Finder s trash method from the command line. This build enables the Put Back feature in Finder for undeleting files. asprint View color-coded output of compiled AppleScripts from the command line. Dropbox Forms: Receive files from your web site to your dropbox! Handy upload possibilities for getting client files. Opening Ruby gems in TextMate - TextMate Good primer on setting up your own tab-completion sets in Bash. rsync + Automator = free and easy backups for your Mac Good tip for backing up your Mac at Practically Efficient. wfarr/dotjs.safariextension - GitHub This is pretty sweet for Chrome/Safari hackers. You can just add scripts to a ~/.js folder, named based on the domain they should run on. jQuery 1.4.4 is loaded automatically with your scripts. It ties in with defunkt s dotjs . Ten Things Every WordPress Plugin Developer Should Know - Smashing Magazine If you re developing (or ever develop) WordPress plugins, these are some great tips.",
"keywords": ["directory","dropbox","finder","github","jquery","plugin","textmate","wordpress","applescripts","automator","chrome","developer","dropbox","efficient","finder","forms","github","handy","links","magazine","opening","plugin","receive","safari","smashing","textmate","wordpress","asprint","automatically","backing","backups","based","build","client","coded","color","command","compiled","defunkt","develop","developing","domain","dotjs","dropbox","enables","feature","files","folder","getting","great","hackers","interest","jquery","loaded","method","named","output","plugins","possibilities","primer","rsync","safariextension","scripts","setting","through","trash","undeleting","upload","wfarr"]
},{
"title": "Filesystem navigation with TextExpander",
"url": "/2011/03/20/filesystem-navigation-with-textexpander/",
"tags": ["finder","snippet","textexpander"],
"date": "Mar 20th, 2011",
"ts": "1300642740",
"summary": "I just added a TextExpander group called Filesystem to my TextExpander project page . It s just a small set of paths that I find myself typing often in support emails, but here s the cool part: they also work in Go to folder mode in Finder dialogs. If you re not familiar with Go to folder, it s a keyboard geeks way of navigating in Finder. From a finder window or any save/open dialog, just type Command-Shift-G to get a little dialog where you can type a path directly in POSIX syntax (). You can also bring it up just by typing the tilde symbol (~). Tab completion works to a minimal extent, in that it s case sensitive and generally guess wrong if there is more than one possible completion. Handy nonetheless. With these snippets, and any that you add, you can just type things like to jump to your Application Support folder. I have a few that get more specific, but they re not really general-use, so I kept them separate. The group is more of a starting point than any kind of complete library. You can download it from the TextExpander project page or, better yet, install it using the url provided there with the Install from URL option in TextExpander. I also added some new snippets to the Characters set, and made some handy changes/additions to the CSS3 set. For example, it doesn t automatically insert a # in the color field anymore, so you can use RGBA without having to backspace. It also adds a field in that snippet s fill form for inset shadows. If you don t want inset, just leave it blank, but if you do, fill it in with inset and you won t have to manually edit that on all three lines after you insert. There s a new snippet for RGBA colors, and an entire set of Webkit scrollbar mods you can use. Have fun.",
"keywords": ["command","finder","howbert","locator","resource","snippets","textexpander","characters","command","filesystem","finder","handy","install","posix","shift","support","textexpander","webkit","added","additions","anymore","automatically","backspace","blank","bring","called","changes","color","colors","dialog","dialogs","directly","doesn","download","emails","entire","example","familiar","field","finder","folder","geeks","general","generally","group","guess","handy","having","inset","install","keyboard","leave","library","little","manually","minimal","myself","navigating","nonetheless","often","paths","point","possible","project","scrollbar","sensitive","separate","shadows","small","snippet","snippets","specific","starting","support","symbol","syntax","tilde","typing","using","where","window","works","wrong"]
},{
"title": "TextMate as WriteRoom, for free",
"url": "/2011/03/18/textmate-as-writeroom-for-free/",
"tags": ["experiments","minimalism","textmate","writing"],
"date": "Mar 18th, 2011",
"ts": "1300459260",
"summary": "I use TextMate for editing most of my Markdown. I could name a dozen reasons why this is the case, but let s leave it at auto-pairing, wrapping and the Blogsmith Bundle features. Anyhow, I got a bug yesterday to make TextMate work in concentration mode (ala WriteRoom ). Not because I think that will improve my writing habits, I just wanted to see if it was possible. A few Google searches later, I have a pretty good solution. Hide other windows, desktop and icons Match the background to our TextMate theme background Maximize the TextMate window, preferably remove top bar Hide scrollbar when not needed The first step is easy. I used Isolator , which can hide everything but the foreground window and let you specify a background color (taking care of the second point as well). There are a few apps that do this well, Isolator is just simple and free. It s great for screencasting, too. Now we need to maximize the TextMate window, but only vertically. The most effective way to do this is with a SIMBL plugin called Megazoomer, which will remove the top bar, too. There s a hack of Megazoomer available which only maximizes vertically. If you maximize the window to the full width of a widescreen monitor, editing is less than friendly, so this is important. If you re not into installing SIMBL (and if you re not using it for anything else 1 , I wouldn t), stick with zooming or take a look at the Fullscreen Plugin on GitHub. Finally, some adjustments to the chrome in TextMate. The Green Moleskine mod for TextMate is worth downloading for many reasons, and I ve used it without issue on multiple Macs. I d recommend just doing it. It will give you a cooler icon, nicer Bundle Editor, HUD Go to line and more. It will also hide the scrollbars when they re not needed, taking care of the last point. Turn off all of the Gutter options under the view menu. Now, with a few clicks, you ve got a WriteRoom-style editing space in TextMate. Visor makes SIMBL worthwhile to me, and I use it for Leech as well, but that s about all. SIMBL on Snow Leopard isn t as annoying as it was on Leopard, but still a chance I wouldn t take if I didn t feel it was worth the consequences.",
"keywords": ["barbara","favola","github","isolator","leopard","markdown","megazoomer","textmate","writeroom","anyhow","blogsmith","bundle","editor","finally","fullscreen","github","google","green","gutter","isolator","leech","leopard","markdown","match","maximize","megazoomer","moleskine","plugin","simbl","textmate","visor","writeroom","adjustments","annoying","available","background","because","called","chance","chrome","clicks","color","concentration","consequences","cooler","desktop","doing","downloading","dozen","editing","effective","everything","features","first","foreground","friendly","great","habits","icons","important","improve","installing","later","leave","makes","maximize","maximizes","monitor","multiple","needed","nicer","options","pairing","plugin","point","possible","preferably","reasons","recommend","remove","screencasting","scrollbar","scrollbars","searches","second","simple","solution","space","specify","stick","style","taking","theme","think","under","using","vertically","wanted","widescreen","width","window","windows","worth","worthwhile","wouldn","wrapping","writing","yesterday","zooming"]
},{
"title": "The one monitor experiment",
"url": "/2011/03/17/the-one-monitor-experiment/",
"tags": ["minimalism"],
"date": "Mar 17th, 2011",
"ts": "1300383780",
"summary": "I m fascinated by this whole minimalism concept. I don t practice it very well, and I don t feel terrible about that. I have to admit, though, that all of those pictures of barren desktops and minimal computer systems actually appeal to me. That was the first motivation for this experiment. For the record, I know that the concept of minimalism doesn t eschew necessary peripherals, but the desktop photos I ve appreciated most did not have multiple monitors (or cables coming out of every available port). Since the day it was feasible, I ve had two monitors on every computer I ve owned. I know quite well how to make use of the extra space efficiently. I have trouble getting along without it. However, my last three computers have been laptops, and I get so used to using them with external monitors and peripherals that I have trouble using them as mobile computers. This frustrates me, and became the second motivation for this experiment. What I wanted to do was see if I could get along with a single display for at least one month. I had previously swapped out my fancy keyboards for Apple s bluetooth aluminum keyboard, which I have fallen in love with. The fact that its layout matches my MacBook Pro was a big deal, and once I got good with it, mobile computing became that much less awkward (obvious tip: the Function key [fn] is your friend). Next, I had discovered that the Magic Trackpad completely relieved my RSI. I was having wrist pain to the point where I could t even work, and since getting the Magic Trackpad, I have had none. That s a little off-topic, though. The point is that I had already minimized my peripherals, I just hadn t done away with the second display. I got a HengeDock and set it up behind my primary display. This allowed me to hide my MacBook Pro from view and still have access to all of its ports. It worked pretty well, with a 24 display, Bluetooth keyboard and trackpad. I did it for 6 weeks and thought I was getting used to it, for the most part. The thing that bugged me the most was using CSSEdit, along with other programs where I want room to edit and room to preview at full size. Constantly swapping foreground windows is annoying to me. Annoying enough, in fact, that the experiment failed. I added a 23 display to my setup using the newest Sewell USB-to-DVI adapter . It felt like, I don t know, trying a drug after you ve been clean long enough to forget about it. I was instantly at home with the situation, and once again",
"keywords": ["apple","computing","iphone","macbook","magic","mobile","trackpad","annoying","apple","bluetooth","cssedit","constantly","drobo","dutch","function","hengedock","however","irish","lacie","macbook","magic","oxygen","patrick","rugged","sewell","since","trackpad","access","adapter","added","admit","again","allowed","aluminum","annoying","appeal","appreciated","available","awkward","barren","became","behind","bluetooth","bugged","cables","chance","clean","clone","coming","completely","computer","computers","computing","concept","configuration","decide","desktop","desktops","discovered","display","doesn","drive","efficiently","enough","eschew","experiment","external","extra","failed","fallen","fancy","fascinated","feasible","first","foreground","forget","friend","frustrates","getting","happy","having","iphone","instantly","keyboard","keyboards","laptop","laptops","layout","little","lived","matches","minimal","minimalism","minimized","mobile","monitor","monitors","motivation","multiple","necessary","needed","newest","obvious","original","owned","peripherals","photos","pictures","plugged","point","ports","practice","preview","previously","primary","programs","record","relieved","second","setup","since","single","situation","space","speakers","stand","surname","swapped","swapping","systems","terrible","think","thought","topic","trackpad","trouble","trying","using","wanted","weeks","where","whole","windows","wondering","worked","wrist"]
},{
"title": "Pinboard redesign experiment",
"url": "/2011/03/13/pinboard-redesign-experiment/",
"tags": ["design","experiments","pinboard","webdesign"],
"date": "Mar 13th, 2011",
"ts": "1300002660",
"summary": "A Pinboard redesign built off of the styles started by Josh Pigford , I m providing a bare stylesheet which works with StyleBot on Chrome and User CSS on Safari. The Chrome version can be installed straight from Stylebot.me . Stylebot.me also has a userscript version which could be used with Greasemonkey, but my styles don t seem to translate well to Firefox, yet. I ll work on that when I have time. Here s the raw stylesheet if you want to grab it and use it in User CSS or somewhere else: pinboard.css . I m not going to tell you it s bulletproof, but feel free to send in obvious bugs. Also feel free to pick it up and run with it, just link the credit chain back and make sure to show us what you did!",
"keywords": ["cascading","chrome","firefox","formats","google","greasemonkey","pinboard","safari","sheets","style","chrome","firefox","greasemonkey","pigford","pinboard","safari","stylebot","stylebot","built","bulletproof","chain","credit","going","installed","obvious","pinboard","providing","redesign","somewhere","started","straight","styles","stylesheet","translate","userscript","version","works"]
},{
"title": "Project status report, March 2011",
"url": "/2011/03/12/project-status-report-march-2011/",
"tags": ["beyond","instapaper","nvalt","status"],
"date": "Mar 12th, 2011",
"ts": "1299985260",
"summary": "Instapaper Beyond : I just sent an update to Apple this morning, and hope to have it approved shortly. It s a basic maintenance release to catch up with the recent changes to Instapaper. I want to incorporate the new sharing features into the t menu, but that s not quite ready yet. Current users of the plugin should receive an automatic update as soon as Apple gives me the ok. Markdown QuickTags : Version 0.7.11 is out as of today, and includes several fixes for minor annoyances. Of particular note is the bug that caused the page to scroll up when pressing the enter key in Firefox 4 that s fixed, thanks to some help from Kai Schlamp. nvALT : A release is imminent. I am indeed working with ElasticThreads on this one. The roadmap will diverge a little, and even the name might change, but the first joint release combines the best of both of our forks and the latest changes to Notational Velocity. I can t guarantee at this point that the auto-updater in nvALT will make the leap, but I will post here to let you know if a new download will be required. Keep your eyes peeled, this is going to be cool. Pinboard.in custom style: for those aware of the custom stylesheet I m creating for Pinboard (unofficial, just an override), that should be ready soon. I have a few secondary page style issues to deal with, and then it should be ready to go. I ll post it here as soon as it s ready. Here s a preview Changes at the day job are probably going to reduce the overall time I have for this kind of mad science, but I m planning to keep all of these projects going. I also know myself well enough to be certain that my brain will make time for code experimentation, even if it means losing a few nights of sleep.",
"keywords": ["apple","delicious","firefox","google","instapaper","notational","pinboard","twitter","velocity","apple","beyond","changes","elasticthreads","firefox","instapaper","markdown","notational","pinboard","quicktags","schlamp","velocity","version","annoyances","anyone","approved","automatic","aware","basic","brain","catch","caused","certain","change","changes","combines","creating","custom","diverge","download","enough","enter","experimentation","features","first","fixed","fixes","forks","gives","going","guarantee","imminent","includes","incorporate","indeed","issues","joint","latest","little","losing","maintenance","minor","morning","myself","nights","nvalt","overall","override","particular","peeled","planning","plugin","point","pressing","preview","projects","ready","receive","recent","release","required","roadmap","science","scroll","secondary","several","sharing","shortly","sleep","style","stylesheet","thanks","today","unofficial","updater","users","where","wondering","working"]
},{
"title": "Web excursions: March 7 - March 12",
"url": "/2011/03/12/web-excursions-march-7-march-12/",
"tags": ["bookmarks"],
"date": "Mar 12th, 2011",
"ts": "1299967200",
"summary": "Ruby for Newbies: Working with Directories and Files Good overview of the basics of Ruby file and directory handling. jessegrosjean/DropboxSync - GitHub An iOS framework for incorporating Dropbox in a way that allows it to perform like it does on other operating systems. Thanks Jesse! WordPress Upgrade Class for Commercial or Client Plugins WordPress and Ajax Work in progress, according to the author, but a great option for WordPress plugin authors for handling automatic updates outside of the main repository. pinboard-backup.sh at master from symm/pinboard-backup - GitHub Even if you don t need to back up Pinboard bookmarks, the automated use of curl, git and logger get the mind churning, don t they? jQuery Form Framework - jFormer A form framework written on top of jQuery that allows you to quickly generate beautiful, standards compliant forms. Very nice.",
"keywords": ["dropbox","github","jquery","pinboard","wordpress","class","client","commercial","directories","dropbox","dropboxsync","files","framework","github","jesse","links","newbies","pinboard","plugins","thanks","upgrade","wordpress","working","allows","author","authors","automated","automatic","backup","basics","beautiful","bookmarks","churning","compliant","directory","forms","framework","great","handling","interest","jformer","jquery","jessegrosjean","logger","master","operating","outside","overview","pinboard","plugin","quickly","repository","standards","systems","through","updates","written"]
},{
"title": "Watch for file changes and refresh your browser automatically",
"url": "/2011/03/07/watch-for-file-changes-and-refresh-your-browser-automatically/",
"tags": ["automator","macos","service","webdesign"],
"date": "Mar 7th, 2011",
"ts": "1299486780",
"summary": "After my epic three-part post on Saturday, I spent the rest of the weekend doing more useful things. Now it s Sunday night (Monday morning, I think), and I ve got some kind of minor food poisoning which is currently keeping me awake. Thus a hey, cool trick post. I actually already own an app which can do this to some extent, and I know there are more available. I like to do things the hard way once in a while. What I wanted was a basic script which could execute arbitrary code whenever a file of a certain type changed within a directory. The use case is web development: whenever I change a site-related file (html, php, css, less, rb, erb, etc.), I want Safari to refresh the related page. Folder Actions don t work well on my system (do they work for anyone?). Hazel would work, but I needed something more immediate. I had a version that used , but it was difficult to consistently start and stop from a script. Here s the final solution I came up with. At the top, let me say that the heavy lifting in my script was taken from a SASS file-watching script by Carlo Zottman . It uses Ruby to poll a file collection for modification date variations, and keeps a pretty low profile. I wanted to avoid compiled code for this, as I eventually do want to go to bed tonight. I built both a command line script and a System Service to do this, and both work as standalone solutions. The Automator action makes it possible to right click a folder in Finder and choose Watcher to start watching it, and it asks you for the tab keyword in a nice popup dialog. Beyond that, it really just wraps the command line script. You can modify either with the following instructions. If you want to use the above script from Terminal, just put it in a directory in your path and run on it. Then you can call it with . The keyword you pass will determine which tabs will refresh in your browser. For example, if I m working on dev.heckyesmarkdown.com (my local development version), I would use dev.heckyes to limit the refresh to only associated tabs. Once the script is running, you can stop it any time by typing Control-C in that Terminal. If you ve run it in the background, you ll either need to foreground it or kill it manually. To install the System Service, download the workflow , unzip it and place it in (where ~ is your home folder). It will now show up when you right click on one or more selected folders in the Finder. Choose Watcher, enter a URL-matching keyword and let it go. You",
"keywords": ["command","computer","interface","languages","locator","programming","resource","safari","action","actions","applescript","automator","beyond","carlo","changelog","choose","chrome","control","customizing","donate","download","events","executing","finder","firefox","folder","hazel","installing","leopard","monday","published","refresh","safari","saturday","service","sunday","system","terminal","updated","using","watch","watcher","zottman","above","across","action","anyone","applicable","arbitrary","associated","assume","available","avoid","awake","background","basic","beginning","below","block","browser","browsers","build","built","certain","change","changed","changes","changing","choose","click","collection","command","compiled","consistently","contains","crazy","customization","customized","decent","default","detail","development","dialog","difficult","directory","doing","download","easily","either","elegant","enter","eventually","example","examples","excuse","executable","execute","exotic","extensively","externalize","files","filetype","filetypes","folder","folders","folks","foreground","front","goals","heavy","heckyes","heckyesmarkdown","hyperactive","immediate","install","instructions","keeping","keeps","keyword","lifting","limit","little","local","makes","manually","matching","menubar","minor","modifications","modified","modify","morning","needed","night","occurs","offer","outside","parameter","poisoning","popup","portion","portions","possible","primary","profile","refresh","refreshes","related","reloading","replace","requires","retch","right","route","running","script","scripting","selected","shell","solution","solutions","specific","spent","spinning","standalone","starting","support","system","taken","think","tonight","trick","trivial","typing","unzip","useful","variations","version","wanted","watch","watched","watches","watching","weekend","whenever","where","while","windows","within","workflow","working","wraps"]
},{
"title": "Web excursions: March 3 - March 7",
"url": "/2011/03/07/web-excursions-march-3-march-7/",
"tags": ["bookmarks"],
"date": "Mar 7th, 2011",
"ts": "1299478560",
"summary": "A simpler and faster alternative to wireframes Attack Of Design Amen to that. sergeche/xmlview - GitHub Another holy cow Safari Extension. This one works in tandem with the XML Viewer plugin and provides Espresso-esque styling, XPath searching and sidebar nav for XML files in Safari. Snipe by Joseph Schmitt One of the coolest Safari Extensions I ve seen yet, both in functionality and design. It lets you instantly jump to any open tab by typing any part of the tab s title. Control AirPort from the keyboard Wow. I knew about the command, but this one is awesome. Check out to see everything else it can do! Schedule Computer Jobs for Later with the At Command A *nix command I didn t know about. A cool one at that. jparise/stale - GitHub Python script searches your Pinboard (or Delicious) bookmarks for dead links, optionally deleting them.",
"keywords": ["github","joseph","operating","pinboard","python","safari","schmitt","source","systems","airport","another","attack","check","command","computer","control","delicious","design","espresso","extension","extensions","github","joseph","later","links","pinboard","python","safari","schedule","schmitt","snipe","viewer","xpath","awesome","bookmarks","command","coolest","deleting","design","esque","everything","faster","files","functionality","instantly","interest","jparise","keyboard","links","optionally","plugin","provides","script","searches","searching","sergeche","sidebar","simpler","stale","styling","tandem","through","title","typing","wireframes","works","xmlview"]
},{
"title": "Grabbing a Mac app's icon: Automator style",
"url": "/2011/03/05/grabbing-a-mac-apps-icon-automator-style/",
"tags": ["automator","macos","terminal"],
"date": "Mar 5th, 2011",
"ts": "1299372000",
"summary": "We ve covered a small truckload of Bash scripting ideas for Mac and OS X in the previous two posts . It s time to put them to use and create an Automator app that we can use as a droplet in Finder. If you skipped straight here, it probably means you don t really want to know about the messy details of the scripts, so this post won t go into a lot of Unix mumbo jumbo. You can download ready-to-go versions of the workflows covered in this post here: GrabIconWorkflows.zip . If you want to customize these workflows, you ll need to know a little bit about the inner Bash workings, but nothing an up-and-coming nerd can t figure out. To get started, open up Automator.app and create a new file with the Application preset. We ll start with a really simple Automator application that you can drop an application onto to extract its icon at 512px and save it as a JPEG to the Desktop. One step, no interaction. In your new Automator workflow, find Run Shell Script in the Library on the left. You can use the filter at the top to quickly narrow down the choices. Drag the action into your workflow editor on the right, and paste the following code into it: Make sure the shell is set to /bin/bash and change Pass input to as arguments . Save the workflow. You ll probably want to name it something creative and put it somewhere useful, such as . I have the utmost faith that you ll come up with something brilliant. Here s what your workflow should look like: Now, you can just drop an application onto the icon for 512Desktop.app and the extracted icon will show up on your Desktop, named based on the name of the application you dropped on the workflow, with _icon.jpg appended to it. That was easy, right? To make something more universally useful, we ll create a workflow that asks the user where to save it. This time, we ll output a PNG file and use the maximum available icon size. We covered how to do both of these in the last post, so I won t go into all of the details in this one. Page back if you re curious (or confused). We ll also need to store variables and pass multiple arguments to shell scripts in the workflow to pull this off. This is the stuff that makes Automator both awesome and frustrating, but once you get the hang of it, new possibilities open up. In this example it may seem like a lot of work just to ask a user where to save a file, but the concept allows you to get user input (without using AppleScript) in shell scripts. It s worth knowing.",
"keywords": ["applescript","automator","command","finder","interface","script","shell","again","allow","applescript","applescripts","applications","automator","bonus","change","click","create","desktop","files","finder","folders","grabiconworkflows","items","library","multiple","paste","running","script","section","selections","shell","since","title","value","variable","above","access","action","alias","allows","appended","appname","arguments","asked","asking","available","awesome","based","basic","before","beginning","brilliant","bundle","change","choices","choose","coming","command","concept","confused","containing","copies","covered","create","creative","curious","customize","default","destination","details","dialog","directly","directory","download","dragging","dropdown","droplet","dropped","dropping","easier","editor","embedded","example","extract","extracted","faith","faster","figure","files","filter","finding","first","folder","frustrating","going","handlers","hands","ideas","image","incorporate","inner","input","interaction","jumbo","knowing","later","library","little","location","makes","manually","maximum","messy","modify","multiple","mumbo","named","narrow","nerdery","nothing","offer","output","outputs","parameter","passed","paste","possibilities","posts","practical","preset","prompt","quickly","ready","requesting","resulting","right","running","script","scripting","scripts","selected","selection","sense","shell","sidebar","simple","single","skipped","small","somewhere","stack","started","stick","store","straight","stuff","think","toolbar","truckload","uncheck","unchecked","universally","useful","using","utility","utmost","variable","variables","versions","wants","whatever","where","window","workflow","workflows","workings","worth"]
},{
"title": "Grabbing a Mac app's icon: advanced Bash usage",
"url": "/2011/03/05/grabbing-a-mac-apps-icon-advanced-bash-usage-2/",
"tags": ["macos","terminal"],
"date": "Mar 5th, 2011",
"ts": "1299371700",
"summary": "In the previous post in this series, we looked at the basic Terminal commands we d use to grab a Mac application s icon from the command line. In this post, we ll flesh out the script a little and turn it into a Bash function with some added features: We ll also look at a very, very cool trick for adding tab-completion for application names to the command, as well as our function. Yes, it s that nerdy. In the next post, we ll use Automator to make this into a droplet we can drag apps onto from Finder. If you don t give a flying fire truck about Terminal, you can skip straight there and create something useful without touching the command line. This one s for the nerds (and wannabe nerds). We ll use a bash loop to search some predefined locations. You could also use 1 to let Spotlight locate the app, but we ll keep it simple for now. I ve set it up to look in some standard locations for the file: $APPDIR is now set to the location that $APP was found, or to (blank) if it wasn t found in any of the specified folders. We can check for that in the next part and fail gracefully if we didn t find the specified app. Modern Mac icons generally have a pixel width of 512 or greater, but some legacy applications icons are 256px or smaller. Finding the maximum pixel width of the image allows us to avoid creating a distorted image as a result of sizing up beyond the largest image in the .icns file. The command can do this with a little help from 2 to clean up the output. The following command gets the property from the icon file, grabs the last line of output and removes extraneous text to leave us with just a number: We could use the number we found to output a file with the maximum dimensions, but since we re making a general-purpose function, we ll ask the user what they want. There are a few ways to offer options in Bash. This is the simplest route I know. It doesn t innately allow for a lot of error checking the user could enter letters instead of numbers or an unattainable dimension, for example. We ll add some basic checks, but we ll assume that you can properly enter a number when asked. You re smart like that. We echo the prompt (the -n keeps it from echoing a newline), and we use our previously determined $MAXAVAIL variable to set a cap. If the user s answer is empty or larger than $MAXAVAIL, we default to $MAXAVAIL. Here s a complete Bash function that you can paste at the end of your . It offers to open the resulting image in Preview.app",
"keywords": ["automator","command","directory","interface","spotlight","appdir","allow","applications","automator","before","click","download","extra","finder","finding","first","getting","holburn","logic","maxavail","modern","preview","spotlight","terminal","added","adding","alias","aliased","allow","allows","answer","applications","asked","assume","assuming","autocomplete","automatically","available","avoid","basic","below","beyond","blank","build","capitalization","check","checking","checks","clean","command","commands","completions","create","creating","credit","death","decide","default","determined","dimension","dimensions","directory","distorted","doesn","droplet","easier","easily","echoing","empty","enter","error","example","exists","extraneous","features","flesh","flying","folder","folders","found","function","functions","general","generally","grabs","gracefully","greater","icons","image","innately","input","insensitive","keeps","larger","largest","launch","leave","legacy","letters","little","located","location","locations","looked","makes","making","maximum","mdfind","modify","modifying","names","nerds","nerdy","newline","numbers","offer","offers","options","output","outside","paste","pixel","predefined","previously","process","profile","prompt","properly","property","removes","resulting","right","route","script","search","sense","series","settings","shebang","simple","simplest","since","sizing","smaller","smart","spacing","standard","straight","touching","trick","truck","unattainable","updated","useful","using","variable","wannabe","whatever","where","whole","width","workflow","wouldn"]
},{
"title": "Grabbing a Mac app's icon: building blocks",
"url": "/2011/03/05/grabbing-a-mac-apps-icon-building-blocks/",
"tags": ["macos","terminal"],
"date": "Mar 5th, 2011",
"ts": "1299371400",
"summary": "I spent a few hours last night nerding out over an easy way to grab a Mac application s icon. I sent the basic Bash script and an example Automator action off to the other writers at TUAW. Then there was dinner, a movie, drinks and dessert. I found myself back at it when I got home. I am Jack s complete inability to leave well enough alone 1 . My solution ended up having some tricks in it that I thought were worth sharing, so I m going to write it up here. This is the first post in a three-part series an epic tribute to obsessive nerdery. It will probably eventually be summarized into the how-to section , but this is the ever-so-informative longhand version. I use application icons quite a bit in my writing for TUAW , so having a quick way to do this is worthwhile. You may never need an application icon as a ready-to-post JPEG, but it s worthwhile to know tricks such as how to grab, resize and convert images from the command line or how to build an Automator action which combines Finder dialogs, shell scripts and Automator variables. On a Mac, every application is actually a folder, referred to as a bundle . Within that folder are libraries, executables and resources (like images and icons). There s also an important file called Info.plist which stores information like the application s name, identifiers, file types and most relevant right now the name of the file containing the application s icon. The application icon is an an file, stored in . Its title does not have to be the same as the app s, so before we can extract and convert it we need to get its actual filename from Info.plist. Info.plist is stored as an XML file (as opposed to a binary plist). As such, we could grep for the filename and run a bunch of Unix commands to parse out the filename, but there s an easier and more reliable way to do it using the 2 command built into OS X. reads plist files and can output the value of specific keys. The key we want is , which holds the icon s filename. We ll assume that we ve already retrieved the name of the app and stored it in a variable called . Here s what you would run on the command line: The response may or may not have a file extension (.icns). We want to trim the extension if it exists so that we have a clean foundation to build on. You can do this with several different Unix utilities, including basic bash substitution we ll stick with 3 for now. We pipe () the output of the command into , and remove .icns if it exists: The .icns",
"keywords": ["fight","graphic","imagemagick","network","portable","acorn","applications","assuming","automator","convert","converting","desktop","extra","fight","finder","finding","fortunately","imagemagick","imageoptim","introduction","jpegs","macworld","since","skitch","terminal","using","within","above","action","adjust","alone","amazingly","another","argument","article","assume","assuming","automate","automating","avoid","background","basic","before","binary","build","built","bunch","bundle","called","cased","clean","combines","command","commands","complex","compress","compressed","compression","confusion","containing","convert","converted","converting","cover","created","credit","customized","default","defaults","dessert","destination","dialogs","different","dinner","directory","doesn","drinks","easier","easily","ended","enough","eventually","example","excusatory","executables","exists","expects","extension","extra","extract","filename","files","first","folder","format","formats","found","foundation","fully","function","going","goodies","graphics","great","handle","having","holds","horribly","hours","icons","identifiers","image","images","important","improve","inability","including","information","informative","installation","jpegtran","leave","libraries","locating","location","longhand","making","manipulation","movie","multiple","myself","nerdery","nerding","night","normally","obsessive","opening","opens","opposed","optimization","optimizer","original","output","parameter","parse","pieces","plist","pngcrush","properly","quick","quickly","reads","ready","record","relevant","reliable","remove","resize","resizing","resources","response","resulting","retrieved","right","saved","saves","saving","script","scripts","section","series","several","sharing","shell","snowflake","solid","solution","specific","spent","standard","steps","stick","stored","stores","straight","substitute","substitution","summarized","temporary","think","thought","title","titled","transparency","tribute","tricks","types","using","utilities","utility","value","variable","variables","various","verbage"]
},{
"title": "Web excursions: February 24 - March 2",
"url": "/2011/03/02/web-excursions-february-24-march-2/",
"tags": ["bookmarks"],
"date": "Mar 2nd, 2011",
"ts": "1299052800",
"summary": "Show Hidden Files in Mac OS X Dialog Boxes with Command+Shift+Period Not new, but neat to know. Aliases - Git SCM Wiki Handy, handy stuff. I suppose that depends on whether you use Git or not, though. The Completely Redesigned Evernote for iPhone and iPod Touch Nice update. Very nice. Gauges Nice looking hosted analytics app from Ordered List. CSS3 Progress Bars CSS-Tricks That s pretty cool. A Hand-Coded Designer CSS UI Kit MediaLoot Nice set of UI elements, at least for the right project. Consistent and well-crafted.",
"keywords": ["evernote","iphone","aliases","boxes","coded","command","completely","consistent","designer","dialog","evernote","files","gauges","handy","hidden","links","medialoot","ordered","redesigned","shift","touch","tricks","analytics","crafted","depends","elements","handy","hosted","iphone","interest","looking","project","right","stuff","suppose","through"]
},{
"title": "Dynamic placeholder images, now with kittens",
"url": "/2011/02/28/dynamic-placeholder-images-now-with-kittens/",
"tags": ["design","lipsum","textexpander"],
"date": "Feb 28th, 2011",
"ts": "1298942820",
"summary": "Thanks to Michael Jones for brightening an otherwise dull day for me. He pointed me to placekitten , a site that mimics placehold.it and inserts dummy images into HTML mockups for you. The difference being that placekitten does it with pictures of, yes, kittens. While you might not ever show a design filled with kittens to the average client, you can keep yourself feeling warm and fuzzy while you code out the details. You were going to put the client s images into those placeholders anyway, right? For whatever you d actually use it for, I threw snippets into the Tools group ( started here ) in my TextExpander snippets. If you re curious, just install them from my TextExpander project page , or update your existing group if you ve installed via the urls. The in there makes it greyscale, just pull it out of the url to make it color instead. Both versions are in the Tools snippets. Hey, lighten up. Try some kittens .",
"keywords": ["dropbox","howbert","iphone","locator","resource","snippets","textexpander","jones","michael","textexpander","thanks","tools","while","anyway","average","brightening","client","color","curious","design","details","difference","dummy","feeling","filled","fuzzy","going","greyscale","group","images","inserts","install","installed","kittens","lighten","makes","mimics","mockups","pictures","placehold","placeholders","placekitten","pointed","project","right","simply","snippet","snippets","started","threw","versions","whatever","while"]
},{
"title": "nvALT 1.0.8 progress and status",
"url": "/2011/02/25/nvalt-1-0-8-progress-and-status/",
"tags": ["notational","nvalt","velocity"],
"date": "Feb 25th, 2011",
"ts": "1298654940",
"summary": "I know a lot of people are growing nervous about whether the promised version 1.0.8 of nvALT is actually going to reach fruition. It will. I m not sure how much further I ll take this incarnation of the project after that the roadmap may be shifted to a new project but I ll follow through with the updates I ve planned for the upcoming release. I ve spoken (twittered) very briefly with ElasticThreads about combining forces on a hybrid version of our forks, and I think that would be a great idea. I ll update more on that when we get a little further in the conversation. Depending on how quickly we could pull that together, it may supersede my current release plans. At the point where the latest release of the main Notational Velocity was released, I had v1.0.8 at a point where it incorporated 90% of my planned features. However, the changes to the trunk were significant and highly desirable in my fork, so I began merging them together. Then, I decided to reverse tracks and work from the new main source, adding my features back in. That slowed me down, and now I ve been traveling and working more than usual, so release has been delayed. Work has to come first! I ll be updating again soon. In the meantime, I do have a version of 1.0.8b that incorporates my changes prior to the NV update and uses a separate preferences and database file. I will post that here as an interim update in the next week. It allows you to run the new version of NV and nvALT on the same system. It also incorporates the Readability and Markdownify features I promised for URL import. More details when I post the download. So, in short, sit tight. I haven t abandoned the project!",
"keywords": ["apple","icloud","iphone","notational","programming","velocity","depending","elasticthreads","however","markdownify","notational","readability","velocity","abandoned","adding","again","allows","began","briefly","changes","combining","conversation","database","decided","delayed","desirable","details","download","features","first","forces","forks","fruition","going","great","growing","haven","highly","hybrid","import","incarnation","incorporated","incorporates","interim","latest","little","meantime","merging","nervous","nvalt","people","planned","plans","point","preferences","project","promised","quickly","reach","release","released","reverse","roadmap","separate","shifted","short","significant","slowed","source","spoken","supersede","system","think","through","tight","together","tracks","traveling","trunk","twittered","upcoming","updates","updating","version","where","working"]
},{
"title": "Web excursions: February 22 - February 23",
"url": "/2011/02/23/web-excursions-february-22-february-23/",
"tags": ["bookmarks"],
"date": "Feb 23rd, 2011",
"ts": "1298512800",
"summary": "Stickto s - Organization for people who love Moleskines A dynamic todo solution for Moleskins. A little silly, a little awesome. Command-line CSS spriting / Stoyan s phpied.com Not the most bulletproof spriting method, but I love the curl command for using Smushit from the command line. HTML5 Tutorials and Techniques That Will Keep You Busy - Noupe Design Blog More HTML5 tutorials than you have time to read, unless that s all you happen to be doing lately. Some great stuff. A List Apart: Articles: Rapid Prototyping with Sinatra Interesting idea, especially now that I m finally developing with Rails. The Art of the Facebook Page Design I hate Facebook right now, but I have this sinking feeling that I ll eventually have to design one of these. Should probably start collecting resources. Sending Tasks to Omnifocus from Dropbox and Simplenote Great AppleScript from Gabe at Macdrifter.",
"keywords": ["cascading","command","facebook","interface","manufacturing","omnifocus","prototyping","rapid","sheets","style","technology","apart","applescript","articles","command","design","dropbox","facebook","great","interesting","links","macdrifter","moleskines","moleskins","noupe","omnifocus","organization","prototyping","rails","rapid","sending","simplenote","sinatra","smushit","stickto","stoyan","tasks","techniques","tutorials","awesome","bulletproof","collecting","command","design","developing","doing","dynamic","especially","eventually","feeling","finally","great","happen","interest","little","method","people","phpied","resources","right","silly","sinking","solution","spriting","stuff","through","tutorials","using"]
},{
"title": "Web excursions: February 19 - February 22",
"url": "/2011/02/22/web-excursions-february-19-february-22/",
"tags": ["bookmarks"],
"date": "Feb 22nd, 2011",
"ts": "1298426400",
"summary": "Using HTML5 To Transform WordPress TwentyTen Theme - Smashing Magazine Ready to start using HTML5? Some solid arguments for, with good examples of how. The Difference Between jQuery s .bind(), .live(), and .delegate() - Alfa Jango Blog I know the basics of optimizing these, but this article really helps you understand why to use the various jQuery bindings. Why You re a Bad PHP Programmer Nettuts+ I don t rank so hot on this. This post is an impetus for my personal improvement in all areas of coding. Neven Mrgan s tumbl: iChat Masterpiece Theatre Ok, it s not useful, but it s really funny. jQuery SuperTextArea Plugin Sure is a useful plugin, despite the odd web design choices. textmate/s5.tmbundle - GitHub More HTML/Markdown slideshow fun. I wish the templates weren t as ugly, but the notes and previews in a separate window is killer.",
"keywords": ["github","google","jquery","mrgan","neven","tools","wordpress","between","difference","github","jango","links","magazine","markdown","masterpiece","mrgan","nettuts","neven","plugin","programmer","ready","smashing","supertextarea","theatre","theme","transform","twentyten","using","wordpress","areas","arguments","article","basics","bindings","choices","coding","delegate","design","examples","funny","helps","ichat","impetus","improvement","interest","jquery","killer","notes","optimizing","personal","plugin","previews","separate","slideshow","solid","templates","textmate","through","tmbundle","tumbl","understand","useful","using","various","weren","window"]
},{
"title": "On sorting, tagging and other nerdery",
"url": "/2011/02/22/on-sorting-tagging-and-other-nerdery/",
"tags": ["openmeta","productivity","tagging"],
"date": "Feb 22nd, 2011",
"ts": "1298378160",
"summary": "Nerd post alert. As if you were expecting anything else. Since posting my latest desktop , I ve received a few questions about how I keep my Mac s Desktop icons under control. I thought I d answer that question before I got around to posting my whole GeekTool setup. Beyond hiding disk icons and making the icons smaller in Finder s Desktop view settings, I have a system. My filing system is simple to use, but a little complicated to explain (and set up), so it gets a whole post to itself. I doubt many will follow directly in my footsteps, but you asked The basic idea is that my Desktop is an inbox. During the day, I save just about everything I work on to my Desktop. Like any system I ve ever used, the secret is actually doing the reviews . At the end of each day I do a scan and file what obviously has a place (I have some neat tricks for speeding that part up, but I ll get there in a bit). Things that represent new projects or that don t fit into an existing folder/tag setup take further action if there are enough related items to represent a project or topic, they get collected into a new Desktop folder which is descriptively named. The new folders will generally stay on the Desktop until the weekend, when I do a Weekly Review. If a file is singular and has no context, it stays on the Desktop and waits for company. If a file sits alone for a few days, it usually ends up being tossed into a pile of similar filetypes. Let Spotlight sort em out. In the Weekly Review, I go through the new folders on the Desktop and determine what type of information they represent. Is it a project? A client? Reference material? I have a folder hierarchy based on these types, the top levels being Work, Code, Reference and File Cabinet. Each breaks down a couple more levels. If a Desktop folder can be filed into one of these categories, it s moved there. Not before it s tagged, though. Tags, tags, tags I use OpenMeta tags to sort and search all of my data. I primarily use Tags from Case Apps, Default Folder X and Spotlight, but make frequent use of HoudahSpot and the command line openmeta utility as well (among many other OpenMeta-compatible apps ). I don t stake the life of my data on the continued availability or stability of the OpenMeta system, but in combination with a consistent, shallow folder hierarchy, I know where things are, even without the convenience of tags. Tags make it easy to group files and work with those groups, but there s more than enough",
"keywords": ["apple","geektool","spotlight","apple","beyond","cabinet","chances","default","desktop","dropzone","filer","finder","folder","geektool","growl","hazel","houdahspot","notational","openmeta","searching","simplenote","since","smart","sometimes","spotlight","store","support","tagging","velocity","weekly","while","within","yearly","across","action","added","again","alert","allow","allows","alone","among","answer","anyway","article","asked","assign","associated","availability","backed","backups","based","basic","beauty","because","before","beginning","benefit","between","brain","breaks","buckets","built","cache","called","categories","categorizations","categorizing","character","child","choose","client","collected","collection","color","combination","command","comments","common","company","compatible","complexity","complicated","concession","connected","consistent","consistently","contains","content","context","continued","control","convenience","convenient","couldn","couple","creates","creation","cruft","daily","decided","define","defined","defines","depend","describe","descriptively","design","desktop","destination","diatribe","difficult","directly","disaster","disks","doesn","doing","doubt","drill","drilling","easier","easily","elements","emails","enough","essence","essentially","events","everything","example","exist","expecting","explain","extra","filed","filename","filenames","files","filesystem","filetype","filetypes","filing","filter","finding","first","flagged","folder","folders","followed","footsteps","forgotten","formed","frequent","function","gathered","gathering","gathers","general","generally","gives","going","group","groups","happen","having","heavy","hiding","hierarchy","iphone","icons","important","inbox","includes","individual","information","inline","inspiration","inspirational","intelligently","items","itself","keyword","larger","latest","learned","letting","level","levels","liberal","little","location","looking","maintain","makes","making","match","matching","mdfind","merged","metadata","modified","moved","moves"]
},{
"title": "ImageMagick and GeekTool (or NerdTool)",
"url": "/2011/02/20/imagemagick-and-geektool-or-nerdtool/",
"tags": ["desktop","geektool","imagemagick"],
"date": "Feb 20th, 2011",
"ts": "1298264940",
"summary": "This is going to be a relatively quick post, and it s definitely aimed at people who can already find their way around the command line, and probably have a little experience with GeekTool and/or NerdTool as well. I kind of stumbled on this concept while working on something unrelated. Basically, you pipe output from a shell command into ImageMagick s command as a label, and then manipulate it to get an image you can display on your desktop. It allows for reflections, rotations, gradients and all kinds of fun things you could never do with a shell Geeklet alone. As an experiment, I just wanted a basic reflection, with a little bit of vertical text Install ImageMagick. It s easiest with Homebrew (), but you ll figure out a way. Think you already have it? Check for the command. (Also make sure you have GhostScript, which should be installed by HomeBrew. Thanks to Rich G. for the catch.) Install the script below in ~/scripts/shadow.sh (you can put it anywhere, just be sure to modify the upcoming instructions appropriately). Make the script executable: Set up a shell geeklet or nerdlet (GeekTool or NerdTool) to refresh every 60 seconds and run this command: . Alternatively, you can run this with cron. Make the Geeklet invisible by sizing it or setting transparency on it. Add an Image geek/nerdlet to display /Users/yourusername/reflected.png. Make it really big, left aligned and turn off scaling. Set the refresh time to 60 seconds. Since it s not running a shell script, you could probably set it to 10 seconds and not raise CPU average load noticeably. Your choice. The script is adapted from one I found at imagemagick.org s forum , and there s a good breakdown of how it works at the bottom of the thread. You should see something like the image above on your desktop now, if all went well. If not, first look for the output file (~/reflected.png) and see if it exists. If it does, check your image geeklet. If it doesn t, try executing the script on the command line and see what happens (). Any error messages you get will help you start debugging. There are a lot of fancy things you can do with ImageMagick, but this is what I had time to throw together. Play with the settings, and then find some decent documentation for ImageMagick and do something way cooler!",
"keywords": ["command","geektool","ghostscript","graphics","imagemagick","interface","check","geektool","geeklet","ghostscript","homebrew","homebrew","image","imagemagick","install","nerdtool","since","thanks","think","users","above","adapted","aimed","aiming","allows","alone","anywhere","appropriately","average","basic","below","bottom","breakdown","catch","check","choice","command","concept","cooler","debugging","decent","definitely","desktop","display","doesn","easiest","error","executable","executing","exists","experience","experiment","fancy","figure","first","forum","found","geeklet","going","gradients","happens","image","imagemagick","installed","instructions","invisible","kinds","label","little","manipulate","messages","modify","nerdlet","noticeably","output","people","quick","raise","reflected","reflection","reflections","refresh","relatively","rotations","running","scaling","script","scripts","seconds","setting","settings","shadow","shell","sizing","stumbled","thread","throw","together","transparency","unrelated","upcoming","vertical","wanted","while","working","works","yourusername"]
},{
"title": "My Desktop, February 2011",
"url": "/2011/02/20/my-desktop-february-2011/",
"tags": ["desktop","geektool","nerdtool"],
"date": "Feb 20th, 2011",
"ts": "1298253600",
"summary": "What the heck, right? This is what I see when I slide four fingers up my Magic Trackpad (or hit F11). NerdTool does all of the heavy lifting: top memory processes, top CPU processes, 5 min average load, date, fuzzy time ( fuzzyclock ), weather icon and the current weather text. If you re curious about how any of the scripts work, just ask. I might do a post on the process for the weather icon, that one s pretty nifty. As a side note, I just learned how to use ImageMagick s command to take shell output and do crazy things with it. This means trouble.",
"keywords": ["apple","imagemagick","logitech","magictrackpad","weather","imagemagick","magic","nerdtool","trackpad","average","command","crazy","curious","fingers","fuzzy","fuzzyclock","heavy","learned","lifting","memory","nifty","output","process","processes","right","screenshots","scripts","shell","slide","trouble","weather"]
},{
"title": "Natural language date conversion for TextMate",
"url": "/2011/02/20/natural-language-date-conversion-for-textmate/",
"tags": ["experiments","naturallanguage","textmate"],
"date": "Feb 20th, 2011",
"ts": "1298241060",
"summary": "I ve been flirting with a plain-text to-do system again. The biggest problem for me is that a plain text system opens up so many possibilities for fiddling and scripting. I always end up fiddling more than working when I try it. I don t see any reason this time would be different, but it s Sunday and I have some extra time on my hands after being snowed in today. So I m fiddling. In the process, I wrote a quick TextMate command which lets me enter a date in natural language and have it converted to whatever format I need for my system. It has variables at the top of the command for defining the date format and output string template. I packaged it up in its own little bundle for people to play with. The command is similar to what I built as a TaskPaper script a while back. Just download at the end of the post, unzip and double-click to install. The output format of the command defaults to a full date in the system s preferred format. This makes it easy to see the effect of various strings. For most purposes, you ll want something more along the lines of 2011-02-22 instead. To change the format, you just need to edit the variable at the top of the command s script. To edit the command, just go to Bundles Bundle Editor Show Bundle Editor and find the Date Entry bundle. Select the Natural Date Entry command and edit it in the field on the right. There s a commented-out replacement above the current variable, and you can modify it to fit whatever you need. Don t forget to comment out or remove the current variable if you uncomment the one above it. The % format elements use Ruby s strftime format . I built the command to work with GTDAlt and TaskPaper , and on my system both use the YYYY-MM-DD format, so that s what the secondary option is set to. To be practical, you probably also need to output some delimiters with the date. In GTDAlt, it would look like due:[2011-02-22] , and in TaskPaper it would look like @due(2010-02-22) . You can set this up using the variable below . It uses as a placeholder which will be replaced with the date in the format you specified above. As an example, if you wanted to use the command with TaskPaper files, you would set it to . The command uses Command-Shift-D by default, but you can change that to whatever s clever when you re in the Bundle Editor. When run, it pops up an input dialog courtesy of TextMate s built-in dialog system. You can enter text in an intuitive natural language format and it will output the",
"keywords": ["calendar","languages","programming","rubygems","taskpaper","textmate","abbreviated","bundle","bundles","changelog","chronic","cocoadialog","command","conversion","customizing","donate","download","editor","entry","format","gtdalt","moving","natural","output","published","rubygems","shift","sunday","support","taskpaper","template","textmate","updated","usage","above","again","allow","based","because","below","biggest","built","bundle","bundled","change","characters","clever","click","command","comment","commented","configurable","contains","conversion","converted","converts","courtesy","customizable","default","defaults","defined","defining","delimiters","dialog","different","distributed","double","download","either","elements","elsewhere","enter","example","extra","fiddling","field","files","flirting","folder","forget","format","hands","handy","happen","included","including","input","install","installed","intuitive","language","library","lists","little","makes","modifier","modifiers","modify","morning","natural","needing","opens","output","outputs","packaged","people","placeholder","possibilities","practical","preferred","problem","process","punches","quick","remove","replaced","replacement","requests","requires","right","script","scripting","secondary","selected","service","similar","snowed","statements","strftime","string","strings","support","system","template","think","thursday","today","together","tomorrow","triggered","twice","uncomment","unzip","using","variable","variables","various","wanted","wednesday","whatever","wherever","while","working","write","wrote"]
},{
"title": "WordPress, custom taxonomy, and XML-RPC",
"url": "/2011/02/19/wordpress-custom-taxonomy-and-xml-rpc/",
"tags": ["wordpress","blogging","xmlrpc"],
"date": "Feb 19th, 2011",
"ts": "1298134320",
"summary": "This is a quick tip for anyone who may be searching for an answer to the question: Is there any way to use XMLRPC to send custom post types to WordPress and attach custom taxonomy terms to them? Yes, there is. It took me longer than it should have to find it, but I ve successfully uploaded images, and attached them to a howtos post type with level and topic set under its custom taxonomies. The custom post part is easy, and if you re working with XML-RPC, you ve probably already figured it out. Just set your post_type to your registered custom post type when you pass the construct to create a new post. Then it got sticky for me. I ended up finding a nearly 2-year-old patch to the xmlrpc.php file with the answer, and I was pleasantly surprised to see it had already been applied in current versions. So much for documentation. The construct just needs an element called , and it takes an associative array with two keys: and . holds the terms you want to apply, either as another array or in a comma-separated list, and is the name of the custom taxonomy they re assigned/available to. At this point, I think I m just taking notes for myself. Hopefully this pointer will be enough to help someone else not spend an hour banging their head against the desk. Custom post types are fun, and growing more flexible, but there are a lot of walls you can run into right now.",
"keywords": ["custom","metaweblog","taxonomies","taxonomy","tools","types","wordpress","custom","hopefully","metaweblog","quick","wordpress","xmlrpc","adding","against","another","answer","anyone","applied","apply","array","assigned","associative","attach","attached","available","banging","called","comma","construct","create","custom","either","element","ended","enough","example","figured","finding","flexible","function","generally","growing","handling","holds","howtos","images","interface","level","longer","methods","myself","nearly","needs","notes","patch","pleasantly","point","pointer","quick","receives","registered","right","searching","separated","specific","spend","sticky","successfully","surprised","takes","taking","taxonomies","taxonomy","terms","think","topic","types","under","uploaded","versions","walls","working","xmlrpc"]
},{
"title": "Web excursions: February 8 - February 19",
"url": "/2011/02/19/web-excursions-february-8-february-19/",
"tags": ["bookmarks"],
"date": "Feb 19th, 2011",
"ts": "1298119980",
"summary": "nakajima/slidedown - GitHub Generate HTML slides with Markdown. I ve been playing with this, surprised to note I haven t bookmarked it before. It s not S5, but it s neat. atiw003/html5-slides-markdown - GitHub Another nice Markdown generator for deck-based presentations, this one in Python. I m still trying to find the real Keynote Killer. Nothing against Keynote, but if I can Keynote in Markdown adamzap/landslide - GitHub This is getting closer, plus you can work Python Markdown Extra into the deal and have some fun. Table of contents, easy transitions and styling through CSS, nice work. Totem: A Vertical Ticker jQuery Plugin And for the elusive Vertical Scrolling Ticker. Cross-format color manager Convert color formats and manipulate colors in JavaScript. This class is very full-featured and exactly what I ve been looking for. Seemed worth sharing Steve Heller hunts down a Nazi graphics standards manual : Observatory: Design Observer I had no idea. Simple Domain Name Registrar - iWantMyName Tired of your current domain registrar s ugly, confusing and cluttered website? Yes, yes I am. Nice, neat registrar, via Patrick Rhone .",
"keywords": ["cascading","domain","github","javascript","jquery","markdown","python","registrar","sheets","style","another","convert","cross","design","domain","extra","github","heller","javascript","keynote","killer","links","markdown","nothing","observatory","observer","patrick","plugin","python","registrar","rhone","scrolling","seemed","simple","steve","table","ticker","tired","totem","vertical","adamzap","against","based","before","bookmarked","class","closer","cluttered","color","colors","confusing","contents","domain","elusive","featured","format","formats","generator","getting","graphics","haven","hunts","iwantmyname","interest","jquery","landslide","looking","manager","manipulate","manual","markdown","nakajima","playing","presentations","registrar","sharing","slidedown","slides","standards","styling","surprised","through","transitions","trying","website","worth"]
},{
"title": "Markdown in ScreenSteps",
"url": "/2011/02/19/markdown-in-screensteps/",
"tags": ["macos","markdown","screensteps"],
"date": "Feb 19th, 2011",
"ts": "1298098860",
"summary": "I love ScreenSteps , the app from Blue Mango which makes creating documentation for screen-based applications as fast and easy as making documentation can possibly be. It s a little clunky sometimes, but the features outweigh the cons by far, at least for me. In recent versions they ve added the ability to post directly to WordPress, which has been pretty cool. I always got a little frustrated with the amount of extra markup included in the templates, though. Today I asked them if they could add a Markdown export feature. Their response? It s already there. It doesn t process Markdown to HTML, but that s great for me as I do that server-side. It uploads the images in your lesson, inserts the resulting urls in your page, and uploads the plain old Markdown straight to your blog as either a post or a page. I re-created a couple of my older how-to s using this new template, and they came out great. Check them out in the new How-To section . Creating the template is quite simple, and everything you need to know is detailed in Blue Mango s help system . I m not going to go into a lot of detail, but here s a copy of the template I m using . Just unzip the file into and edit the index.html file inside. Here s where I went a little crazy. I have a custom post type in WordPress for the How-To s, and I have plans to expand that section over time. I can t post directly to WordPress as a How-To, and it was a little annoying to post it as a page and copy it over just to get the images uploaded. So here s a service called Upload Images to Blog . You can export as HTML in ScreenSteps using the above template and save it to a local folder. Run the service on the html file created, and it will upload all of the images to your blog and create a new file with the new image urls. You can render that to HTML or paste the Markdown directly to your post page, if your blog supports that. The service requires a configuration file to be located at . The content of the file is just one line, like this: It also requires that you re using an image output format like the one found in the template above. It just scans the file for lines for the uploadable images. I can t guarantee the service will work for everybody. It s a quick and dirty solution, but it works really well for me. It even has Growl notifications, if you have Growl installed. That s it. Back to work on more serious things.",
"keywords": ["growl","markdown","templates","wordpress","check","creating","growl","images","mango","markdown","screensteps","today","upload","wordpress","ability","above","added","amount","annoying","applications","asked","based","called","clunky","configuration","content","couple","crazy","create","created","creating","custom","detail","detailed","directly","dirty","doesn","either","everybody","everything","expand","export","extra","feature","features","folder","format","found","frustrated","going","great","guarantee","image","images","included","index","inserts","inside","installed","lesson","little","local","located","makes","making","markup","notifications","older","output","outweigh","paste","plans","possibly","process","quick","recent","requires","response","resulting","scans","screen","section","serious","server","service","simple","solution","sometimes","straight","supports","system","template","templates","unzip","upload","uploadable","uploaded","uploads","using","versions","where","works"]
},{
"title": "Markdown snippets for TextExpander touch",
"url": "/2011/02/17/markdown-snippets-for-textexpander-on-ios/",
"tags": ["markdown","snippet","textexpander"],
"date": "Feb 17th, 2011",
"ts": "1297971000",
"summary": "It may come as a surprise to some (many), but I ve never really made effective use of TextExpander on my iPad or iPhone ( TextExpander touch ). I don t do a lot of the things on my iPad which I do on my desktop, and the things that are similar often don t support TE. When I want to write some Markdown quickly, I use Nebulous Notes with my custom macros. Lastly, my shell scripts don t work on iOS, and most of my favorite snippets are, as you ve seen , shell scripts. Early this morning, though, I decided to figure out how TextExpander was going to speed up what I do on iOS. The fact that %clipboard (insert contents of clipboard) and $| (position the cursor after inserting) still work on iOS is a big deal. I built quick snippets for auto-pairing characters and placing the cursor in the middle, and accompanying snippets for doing the same with the contents of the clipboard. inserts [] and places the cursor between inserts () and places the cursor between , , same thing ,, and insert pairs surrounding the contents of the clipboard creates an inline markdown link (), assumes clipboard is the link and places cursor in the square brackets after insertion The biggest downside is the innate inability of TextExpander to act on selected text. To use the snippets effectively, you have to cut the text and then run the snippet. Not my favorite thing to do, but combined with the macro in Nebulous Notes, they make for pretty snappy typing. Here s the current set of the ones that actually worked out. Let me know what you re doing with TE in iOS and how you re making it useful. I don t need to know about your signoffs and abbreviations, of course, but general workflow enhancements would be awesome to hear about! Then you can auto-update if I expand the set in the future. I ll be adding urls for my other TE groups soon as well. Markdown for TextExpander iOS v1.1 Download Markdown for TextExpander iOS v1.1 Markdown snippets for TextExpander, especially useful on iOS. Published 02/17/11. Updated 02/17/11. Changelog Donate More info Your support is greatly appreciated! Or me on GitHub!",
"keywords": ["howbert","iphone","locator","markdown","resource","snippets","textexpander","changelog","donate","download","github","lastly","markdown","nebulous","notes","published","textexpander","updated","abbreviations","above","adding","appreciated","assumes","awesome","below","between","biggest","brackets","built","characters","clipboard","contents","creates","cursor","custom","decided","desktop","doing","download","downside","effective","effectively","enhancements","especially","expand","favorite","figure","general","going","greatly","group","groups","iphone","inability","inline","innate","inserting","insertion","inserts","install","macro","macros","making","markdown","middle","morning","often","pairing","pairs","places","placing","position","quick","quickly","scripts","selected","shell","signoffs","similar","snappy","snippet","snippets","speed","square","support","surprise","surrounding","touch","typing","updated","useful","using","worked","workflow","write"]
},{
"title": "Meet Marky, the Markdownifier",
"url": "/2011/02/12/meet-marky-the-markdownifier/",
"tags": ["markdown","markdownifier","marky"],
"date": "Feb 12th, 2011",
"ts": "1297497000",
"summary": "I was featured on MacSparky.com today. Well, the home screen of my iPhone was, anyway. He mentioned a project of mine that I haven t actually had time to blog about yet, so here s a quick introduction. It s called MarkdownRules , and comes in two flavors: mild-mannered and salty. You can choose which you get from the main menu page at http://markdownrules.com . The Markdownifier you ll find there (his name is Marky), will take a url you provide and do its best to clean up comments and ads (using PHP Readability ) and then convert it to Markdown (using PHP Markdown ). It does a pretty decent job overall, and I ve been tweaking as I have time to handle edge cases. The fun is really in the bookmarklets, though, which you ll find toward the bottom of the page in either version. The API that I set up will take a series of query arguments and return different formats based on your request. You can tweak the URL in the bookmarklet to do more than the four provided do, including returning JSON-formatted output. Why? Web clipping mostly. I wanted to be able to quickly save articles and blog posts into nvALT in a format that would be workable. The next version of nvALT will include this capability internally, but this was something that everyone could, ostensibly, make use of. To see updates as they happen, and to be somewhat entertained on an infrequent basis, follow @imarky on Twitter.",
"keywords": ["interface","iphone","locator","markdown","programming","resource","twitter","macsparky","markdown","markdownrules","markdownifier","marky","readability","twitter","anyway","arguments","articles","based","basis","bookmarklet","bookmarklets","bottom","called","capability","choose","clean","clipping","comes","comments","convert","decent","different","either","entertained","everyone","featured","flavors","format","formats","formatted","handle","happen","haven","iphone","including","infrequent","internally","introduction","mannered","markdownrules","marky","mentioned","mostly","nvalt","ostensibly","output","overall","posts","project","query","quick","quickly","return","returning","salty","screen","series","somewhat","today","toward","tweak","tweaking","updates","using","version","wanted","workable"]
},{
"title": "Quick tip: running nvALT after a Notational Velocity update",
"url": "/2011/02/08/quick-tip-running-nvalt-after-a-notational-velocity-update/",
"tags": ["notational","nvalt","velocity"],
"date": "Feb 8th, 2011",
"ts": "1297186140",
"summary": "Unimportant update: its an update, not an udpate. I need a headline proofreader. If you ve run the newest version of Notational Velocity , you may have noticed that you can no longer run nvALT ( as mentioned here ). The database changes, and even though it offers to run anyway, either button quits the app. I m working on the next version of nvALT, but incorporating the changes is proving tedious and it s going to be a little while (a week or two, I think). In the meantime, I will soon be posting an interim version which switches the database it uses, creating a new one with a different name. If you sync with Simplenote and don t run both versions at the same time, your notes will stay the same. If you import from Dropbox, you can store both preference files in the Dropbox folder, and your notes will show back up from there. You will, however, lose your local tags (Simplenote tags will be fine). When the final 1.0.8 comes out, it should be able to use the original database, which Simplenote and/or Dropbox will have kept up-to-date. More instructions on that as soon as I get the interim update out. In the meantime, if you want to use the current version of nvALT and can t, here are some options. No matter which you choose, you ll be missing your local tags until the new version comes out, and any tags created between now and then won t be kept (older tags will be restored, if I get it right). If you happen to be a new user and don t have any notes you need to save, just delete the Notes Settings file (See below for where to find the file) and let nvALT create a new one. If you sync via Simplenote, just delete the Notes Settings file on your drive, and let the notes sync back down. If you store your notes as files in Dropbox, you can delete the Notes Settings file in your Dropbox folder and restore it to a previous version using the web interface for Dropbox. That s an ideal solution, as any tags created up to that point will show back up. If you do neither, you re out of luck unless you have a backup of the Notes Settings file from before the first time you ran the updated nvALT. Time Machine may be of assistance, or BackBlaze/Mozy/Arq, etc. If you do have a backup, just restore it, overwriting the current version. If you keep your notes in the database only (you don t write files to disk), your Notes Settings file will be in , where the ~ is your user s home directory. If you do write files to disk, whether it s Dropbox or elsewhere,",
"keywords": ["backup","computer","dropbox","management","microsoft","notational","simplenote","velocity","windows","backblaze","dropbox","machine","notational","notes","restoring","settings","simplenote","simply","unimportant","velocity","anyway","backup","before","below","between","button","changes","choose","comes","create","created","creating","database","different","directory","drive","either","elsewhere","files","first","folder","going","happen","headline","helps","however","ideal","import","instructions","interface","interim","little","local","longer","meantime","mentioned","missing","neither","newest","notes","noticed","nvalt","offers","older","options","original","overwriting","point","posting","preference","proofreader","proving","quits","replacing","restore","restored","right","solution","store","switches","tedious","think","trouble","udpate","updated","using","version","versions","where","while","working","write"]
},{
"title": "Web excursions: February 5 - February 7",
"url": "/2011/02/07/web-excursions-february-5-february-7/",
"tags": ["bookmarks"],
"date": "Feb 7th, 2011",
"ts": "1297130400",
"summary": "Reed-Kellogg Diagrammer It s SilverLight, and it s butt ugly, but it s so awesome. It automatically diagrams any sentence you give it, it with rollovers to tell you what each branch is. I m having way more fun with it than I did when I was in grade school. Plus, my lexicon of dirty words is bigger, so the sentences are far more interesting. readown - Project Hosting on Google Code Just stumbled on this. It shows a preview of your Markdown file, and watches the file for changes. Whenever you save, it updates the rendered version. There are a few cocoa apps that give you live previews, but this is the only one I ve found which gives you the freedom to edit in any app and get a preview every time you save. Neato. It doesn t recognize .md files (only .markdown, .mkdn, .text and .txt) for whatever reason, but the source is available and you can fix that if you know your way around a plist. Get Only the Posts You Want from Lifehacker s Site Feeds I knew this had to be possible, but it took a note from @SuratL to get me there. Seth s Blog: Pleasing Seth Godin: We can t please everyone, in fact, we re not even going to try. Hat tip to @andrewbg . LESS Elements: a collection of useful LESS mixins I ve used LESS on a few projects now, and it s the bees knees. It s the only CSS pre-processor that I ve wanted to stick with so far. This set of mixins includes shortcuts for CSS3 properties such as drop-shadow and border-radius. You can cut your cross-browser CSS time down to nothing. Also check out LESS.app , if you haven t yet. Arduino Tutorial - Learn electronics and microcontrollers using Arduino! I now have 2 books and a collection of links for that Arduino I ve never gotten around to buying. When I have some free time, I keep saying",
"keywords": ["arduino","godin","google","markdown","mixin","sheets","style","arduino","diagrammer","elements","feeds","godin","google","hosting","kellogg","learn","lifehacker","links","markdown","neato","pleasing","posts","project","silverlight","suratl","tutorial","whenever","andrewbg","automatically","available","awesome","bigger","books","border","branch","browser","buying","changes","check","cocoa","collection","cross","diagrams","dirty","doesn","electronics","everyone","files","found","freedom","gives","going","gotten","grade","haven","having","includes","interest","interesting","knees","lexicon","links","markdown","microcontrollers","mixins","nothing","plist","possible","preview","previews","processor","projects","properties","radius","readown","recognize","rendered","rollovers","saying","school","sentence","sentences","shadow","shortcuts","shows","source","stick","stumbled","through","updates","useful","using","version","wanted","watches","whatever","words"]
},{
"title": "Dammit. Again with the Lipsum.",
"url": "/2011/02/06/dammit-again-with-the-lipsum/",
"tags": ["experiments","lipsum","textexpander"],
"date": "Feb 6th, 2011",
"ts": "1297011060",
"summary": "I know, I said I was done with the Lorem Ipsum generators. Then Dr. Drang responded with a brilliant solution which doesn t require Internet access to generate some beautiful dummy text. I set it up and ran it myself, and loved the results. Then I found myself wanting to expand it to do more, such as multiple paragraphs, list items and other things I use regularly when making dummy layouts. The problem is that I m only good for one-liners in Perl, and didn t want to take take the time to learn what I needed to in order to make the modifications. So I redid it in Ruby. 1 I used a Gem called Raingrams , along with Maruku for processing Markdown to HTML. See, if I had it output Markdown to begin with, I had the flexibility to do both easily. I m posting the main script, which you can modify to output various elements and amounts of text. Even if you don t know ruby, you can probably find your way around with a little guessing. In the section after the function definitions you can take any of the lines and output what you want by mixing or removing those elements. This script requires Rubygems, and the Raingrams and Maruku gems. If you have Rubygems installed, you can just type and at the command line to quickly get both on your system. If you don t have Rubygems, you might want to skip this one, as you re in for more trouble than this will pay off You ll also need a text file to pull from. I m using a chopped up version of 1984, with just enough paragraphs to get some good randomness. You can find it here , if you want it. Otherwise, choose your favorite text file and make it long enough to be random and short enough to be fast. That might take some experimentation. Put the text in a file called in a directory called in the root of your home folder. The final path should look like . Here s some sample output , generated in nvALT , using TextExpander with this script as a shell Snippet, and posted to Peggd. As you can see, it needs some fine tuning. The list items, strong and em could be multi-word, the links could check to see if there was a period-space-capital and prevent overlapping sentences, etc. It s enough for my purposes, though, and between the script and this post, I ve lost over an hour of what was supposed to be a productive weekend. I m out! This isn t a one-up on Dr. Drang it s a rough script, and I m just posting what I wasted half an hour on last night.",
"keywords": ["howbert","ipsum","lorem","markdown","rubygems","textexpander","drang","internet","ipsum","lorem","markdown","maruku","peggd","raingrams","rubygems","snippet","textexpander","access","amounts","beautiful","begin","between","brilliant","called","capital","check","choose","chopped","command","comments","definitions","directory","dissect","doesn","dummy","easily","elements","enough","expand","experimentation","favorite","flexibility","folder","found","function","generated","generators","guessing","individual","installed","items","layouts","learn","liners","links","little","loved","making","mixing","modifications","modify","multi","multiple","myself","needed","needs","night","nvalt","output","overlapping","paragraphs","posted","posting","prevent","problem","processing","productive","quickly","random","randomness","rebuild","redid","regularly","relatively","removing","requires","responded","results","rough","sample","script","section","sentences","shell","short","snippet","solution","space","strong","supposed","system","trouble","tuning","using","various","version","wanting","wasted","weekend"]
},{
"title": "One more time: TextExpander Lipsum snippets with kwisatz .hadera .ch",
"url": "/2011/02/05/textexpander-lipsum-with-kwisatz-haderach/",
"tags": ["experiments","lipsum","snippet","textexpander"],
"date": "Feb 5th, 2011",
"ts": "1296916200",
"summary": "Ok, this is the last TextExpander Lipsum post, I promise (with my fingers crossed). I m posting a full TextExpander group with all of the TextExpander random Lorem Ipsum generators I ve posted so far ( LoremIpsum.com , LoremIpscream ), plus some new ones based on the Kwisatz Haderach 1 generator. That one seemed to make a few people pretty happy (looking at MacSparky ). It combines word lists from various universes , including Dune, Foundation, Ringworld, Harry Potter and Doctor Who (Doctor Who courtesy of the always-fabulous Kelly Guimont ). Grim Dark Liz Shaw remembrall crysknife mentat River Song gillyweed Zensunni Astrid Peth science fiction. Filt Plug ayat bi-la kaifa Polly Wright Gringotts. Suk Mahdi Gamont Rani guild Peri Brown Siona Cthalctose bludger mish mish. Basilisk travel Hufflepuff solari mentat Shadout Mapes ibad. Caid Tractite specials Chula Ian Chesterton Jal Karath inkvine Atraxi gom jabbar karama Killoran Shai Hulud musky Lords Of Jelsen. The Kwisatz Haderach set I threw together for TextExpander is multi-faceted, and includes some HTML versions of the snippets, which are of more use to web designers than just plain text. There are snippets for one, two and three paragraphs of Kwisatz text, and versions of the same which include tags. There are also short and long HTML list generators for both ordered () and unordered () lists. To avoid the pains of parsing HTML in the shell (KH doesn t currently have an API), they re Ruby-based. I m not going to post the code here, just download the package below. TextExpander users can just expand the archive and double click the .textexpander file to install it. If you want the raw code for something else, just contact me. The scripts are easily editable to change the number of paragraphs and minimum words per paragraph, as well as the number of items in the lists, by using the variables at the top of the scripts. They should be pretty self explanatory, just replace the existing numbers with your preferred quantities. Random Lipsums for TextExpander v1 Download Random Lipsums for TextExpander v1 All of the random Lorem Ipsum generators for TextExpander that I've put together so far, including LoremIpscream, Kwisatz Haderach and LoremIpsum.com generators. Published 02/04/11. Updated 02/04/11. Changelog Donate More info It s a Dune reference, in case you re not a Frank Herbert devotee.",
"keywords": ["adobe","bonorum","college","desktop","filler","finibus","hampden","ipsum","latin","lorem","malorum","pagemaker","publishing","sydney","astrid","atraxi","basilisk","brown","changelog","chesterton","chula","cthalctose","doctor","donate","download","enjoy","foundation","frank","gamont","gringotts","guimont","haderach","harry","herbert","hufflepuff","hulud","ipsum","jelsen","karath","kelly","killoran","kwisatz","lipsum","lipsums","lords","lorem","loremipscream","loremipsum","macsparky","mahdi","mapes","polly","potter","published","random","ringworld","river","shadout","siona","textexpander","tractite","updated","wright","zensunni","archive","avoid","based","below","bludger","change","click","combines","contact","courtesy","crossed","crysknife","designers","devotee","doesn","double","download","easily","editable","expand","explanatory","fabulous","faceted","fiction","fingers","generator","generators","gillyweed","going","group","guild","happy","includes","including","inkvine","install","items","jabbar","kaifa","karama","lists","looking","mentat","multi","musky","numbers","ordered","package","pains","paragraph","paragraphs","parsing","people","posted","posting","preferred","promise","quantities","random","remembrall","replace","sample","science","scripts","seemed","shell","short","snippet","snippets","solari","specials","textexpander","threw","together","travel","universes","unordered","users","using","variables","various","versions","words"]
},{
"title": "A mistake",
"url": "/2011/02/04/yes-its-real/",
"tags": ["freelancing","personal","webdesign"],
"date": "Feb 4th, 2011",
"ts": "1296858240",
"summary": "I put up a dummy replacement for the Winona Chiropractic site yesterday. I didn t expect many people to see it, except hopefully the client. It s gone viral on Twitter in the meantime, and I just wanted to verify that yes, it was real. I have waited for several years for this client to pay me. I have sent statements. I have been told that it would be taken care of. It wasn t, so I took care of it. That s all. I am not unprofessional, I am fed up. Update: I ve taken the site down entirely. This isn t really what I want to be known for, and it got a little out of hand. The original site got almost no traffic in the last year, and I didn t expect anyone but Winona Chiropractic to see it, and I didn t even expect that to happen very quickly, given that they hadn t updated it for at least a year. Anyway, Google indexed it, so I made my point, I guess. It s funny how a few thousand hits all at once makes Google take notice of things. I ll let you know if anything good actually comes of this. For the record, I own and control the domain, the server is mine, and I wasn t paid for the work. There was no hack involved, just me changing a site I built. It didn t say anything slanderous. I just stated the fact that I hadn t been paid. I m not saying it was a brilliant move, but I was at least careful to try and avoid being sued. For as long as I ve been on the net, I ve never really been known for doing anything mean. Seriously. I ve always made a concerted effort to be nice, albeit sarcastic and a little dry. I don t like the inordinate amount of damage this thing has and will cause it s disproportionate to any damage to me. On the other hand, this whole thing will probably affect my credibility as well, so it kind of comes out even. Right? I m not saying I don t want to get paid, I really do. I m also not saying that anything I said was incorrect, but my method was a little off-kilter. Like I said, I didn t really think that anyone other than the client and a few people I actually knew would even see it. I really should have known better. Lesson learned.",
"keywords": ["clients","communities","google","networking","online","reader","searching","social","twitter","anyway","chiropractic","google","lesson","right","seriously","twitter","winona","albeit","almost","amount","anyone","avoid","brilliant","built","careful","cause","changing","client","comes","concerted","control","credibility","damage","disproportionate","doing","domain","dummy","effort","entirely","except","expect","funny","guess","happen","hopefully","incorrect","indexed","inordinate","involved","kilter","learned","little","makes","meantime","method","original","people","point","quickly","record","replacement","sarcastic","saying","server","several","slanderous","stated","statements","taken","think","thousand","traffic","unprofessional","updated","verify","viral","waited","wanted","whole","years","yesterday"]
},{
"title": "LaunchBar actions for url encoding and decoding",
"url": "/2011/02/04/launchbar-actions-for-url-encoding-and-decoding/",
"tags": ["applescript","experiments","launchbar"],
"date": "Feb 4th, 2011",
"ts": "1296826800",
"summary": "I usually get up an hour or two before I start my work day and play. Playtime usually results in half-finished scripts and deleted git branches, but sometimes I do something simple and useful (to me). Wednesday was Bash fun , and here s this morning s project: LaunchBar actions to url encode and decode strings 1 . If you run them outside of LaunchBar, they ll encode/decode your clipboard, replacing what s in your clipboard with the result, so they have multiple applications. These have probably been done before, but my quick DuckDuckGo search didn t yield any immediate results. I find it especially useful to be able to quickly encode and decode urls and strings when I m testing online APIs out, but there are many times when I find I need this. I usually use a shell function or the very handy Hash Widget for Dashboard, but as a LaunchBar user, this is faster. To use with LaunchBar, open the script in your Script Editor (instant-open links provided) and save it to , creating the folder if it doesn t already exist. Then, assuming you have Actions enabled in your indexing preferences, you can just type urle to get the action, then hit space to enter or paste the text to encode/decode. Alternatively, you can paste first or use Instant Send on a selection, then hit Tab and select the encode or decode action. To use elsewhere, such as in FastScripts , just save them as scripts in your folder. Using them outside of LaunchBar won t be interactive they will encode or decode your clipboard in place. Side note: I decided to do the encoding/decoding in pure AppleScript, using functions I ve mentioned previously from http://harvey.nu/ . You can encode faster with Perl using a shell call, if you prefer. In a shell script for encoding, you d use . In AppleScript, that would look like , where ASTextVar is your string to encode. The LaunchBar actions copy the resulting text to the clipboard, but you may prefer to have it passed back to LaunchBar for subsequent processing. There are commented lines in the scripts for doing so, just comment out the last line in the handle_string function and uncomment the line above it. People may love Alfred , but this is another example of why I will probably always prefer LaunchBar. Extensibility. Also, QuickSilver is dead, just give up.",
"keywords": ["applescript","ascii","encoding","google","interface","launchbar","percent","programming","scripts","astextvar","actions","alfred","applescript","dashboard","decode","duckduckgo","editor","encode","extensibility","fastscripts","instant","launchbar","people","playtime","quicksilver","script","using","wednesday","widget","above","action","actions","another","applications","assuming","before","branches","clipboard","comment","commented","creating","decided","decode","decoding","deleted","doesn","doing","editor","elsewhere","enabled","encode","encoding","enter","especially","example","exist","faster","finished","first","folder","function","functions","handle","handy","harvey","immediate","indexing","instant","interactive","links","mentioned","morning","multiple","online","outside","passed","paste","prefer","preferences","previously","processing","project","quick","quickly","replacing","resulting","results","script","scripts","search","selection","shell","simple","sometimes","space","string","strings","testing","times","uncomment","useful","using","usually","where","yield"]
},{
"title": "Quick calculations in Bash",
"url": "/2011/02/02/quick-calculations-in-bash/",
"tags": ["experiments","scripting","terminal"],
"date": "Feb 2nd, 2011",
"ts": "1296707640",
"summary": "This is probably going to seem stupid, but every time I decide to do something in Bash that should only take me a minute, I end up losing an hour. I obsess over better ways to do everything. Not surprisingly, my motivation often wanes before I actually find the better, more elegant way, so these little projects end up lackluster. Fortunately, I end up learning all kinds of new, mostly unrelated things in the process, which is what happened this evening. It s amazing to me that I use UNIX every day, and can still be blown away by a new trick every time I go digging on Stack Overflow. There are some very, very smart people out there. Anyway, I had two goals: first, I wanted a basic calculator on the command line with the ability to optionally output a result with no newlines, so it would be easy to substitute within another command or pass to . Basic inline math. Then, as a side project to this side project, I wanted a tally-keeper that would allow me to just keep inputting numbers until I told it to stop, and then just add them all up. Nothing brilliant, and I had simple answers for both problems in about 10 minutes. Built-in evaluators in Bash kind of stink, though, and they need special formatting and escaping to deal with floats and accommodate basic symbols. seemed like the logical answer to that, and that s what I m using right now. I picked up a few good tips from the blog post that Allan Odgaard wrote when he was on a similar mission , both from Allan and from the commenters. I love the web. So here s what I ve got for the calculator. It strips any character that s not grade-school math out and normalizes spaces, which works well for my needs. You can actually just trash the whole second line and pass $@ to bc if you want to use additional symbols. The second function in this block calls the first and strips newlines, good for integration elsewhere. You can also alias either of these to a question mark for fast access (inspired by Allan) with in your . That s where these functions are likely to go as well. If you want to try them out, paste them into ~/.bashprofile, save it, run in Terminal and then type or whatever you like. Things get tricky if you need to control the number of decimal places you have in the result. You need to pass additional commands to , which appears to require some heredoc magic. This works for me (the scale=4 sets it to four decimal places): Next up is , a function that does what it says. You can either pass it a",
"keywords": ["calculator","decimal","launchbar","newline","operating","overflow","stack","systems","allan","anyway","backspace","basic","built","enter","fortunately","launchbar","nothing","odgaard","overflow","stack","terminal","ability","access","accommodate","alias","allow","amazing","amounts","another","answer","answers","anymore","appears","argument","avoid","backspace","basic","before","block","blown","brilliant","calculator","calls","character","combination","command","commands","commenters","compromise","control","decide","decimal","default","digging","either","elegant","elsewhere","enter","entered","escaping","evaluators","evening","everything","first","floats","formatting","function","functions","gentleman","giving","goals","going","grade","happened","heredoc","implementation","inline","inputting","inspired","installation","integration","interactive","interpreted","keeper","kinds","lackluster","ladies","learning","likely","little","logical","losing","magic","makes","mapping","minute","minutes","mission","mostly","motivation","needs","newlines","night","normalizes","numbers","obsess","often","optionally","output","paste","people","phone","picked","places","prefer","press","problems","process","profile","project","projects","readline","returns","right","scale","school","second","seemed","separated","separation","similar","simple","smart","solve","sometimes","source","spaces","special","spend","stink","strips","stupid","substitute","surprisingly","symbols","tally","trash","trick","tricks","tricky","trying","unrelated","using","version","wanes","wanted","whatever","where","whole","within","works","wrote"]
},{
"title": "Web excursions: February 1 - February 2",
"url": "/2011/02/02/web-excursions-february-1-february-2/",
"tags": ["bookmarks"],
"date": "Feb 2nd, 2011",
"ts": "1296705600",
"summary": "Backbone.js What s not to love about key-value models, custom events, collections and enumeration, views with declarative event handling, and a RESTful JSON interface? My doctor says I have an MVC deficiency, anyway. Duck Duck Go Zero-click Info API Duck Duck Go is my new default search engine. I love it to death. The API for topic summaries and categories is pretty cool, too. Also see the Zero Click jQuery plugin for example usage. Eight Ways to Combine Typefaces Webdesigner Depot Speaking of font combinations, there s a great article today on Webdesigner Depot on the matter. Kwisatz Haderach is the new Lorem Ipsum Gotta love truly creative random text. Hat tip to Kelly ! Icon Search Engine Iconfinder Found this thanks to my Pinboard.in network. Seriously, if you re not using Pinboard anyway, this is the absolute best icon search I ve ever seen. Awesome. And neat they have an API. wp query - Custom Taxonomy WP_Query for All Terms in a Taxonomy? - WordPress - Stack Exchange A class to extend WPQuery called PostsByTaxonomy which uses the postsjoin hook. Kind of self-explanatory, in a not-at-all sort of way.",
"keywords": ["depot","google","haderach","interface","kwisatz","pinboard","programming","representational","webdesigner","awesome","backbone","click","custom","depot","eight","engine","exchange","found","gotta","haderach","iconfinder","ipsum","kelly","kwisatz","links","lorem","pinboard","postsbytaxonomy","query","restful","search","seriously","speaking","stack","taxonomy","terms","typefaces","webdesigner","wordpress","absolute","anyway","article","called","categories","class","click","collections","combinations","creative","custom","death","declarative","default","doctor","engine","enumeration","events","example","explanatory","extend","great","handling","interest","interface","jquery","models","network","plugin","posts","query","random","search","summaries","thanks","through","today","topic","truly","usage","using","value","views"]
},{
"title": "TextExpander lipsum followup, with ice cream",
"url": "/2011/02/02/textexpander-lipsum-followup-with-ice-cream/",
"tags": ["experiments","lipsum","scripting","snippet","textexpander"],
"date": "Feb 2nd, 2011",
"ts": "1296673200",
"summary": "It turns out it was me that was broken, not the Loremipscream API. That API can return just plain text, so the shell scripts are much more readable than trying to hack apart XML in Bash. You can get a list of flavors from the website, or just from the command line. That will also give you the slugs you need to use when calling them. why s Chunky Bacon 1 is nice, and Sailing Three Tuesdays 2 (whose slug is emo, appropriately) is hilarious. There s even one (Soylent Cream) which spits out fake identities 3 , and there are German and Czech flavors, too. Try them out on the website and then just paste a line like this in a TextExpander snippet set to Shell Command : That will spit out a nice, small chunk of random text in your preferred flavor. Of course, you could always make a few different snippets to suit any mood. For reference, here s the API info , and here are the available flavors and their slugs: I should also take the opportunity to mention another cool take on the greeking text idea: Kwisatz Haderach , which my friend (and TUAW blogger ) Kelly Guimont has been contributing to. Have a look, it s fun stuff. You can always make non-random TextExpander snippets out of whatever is going to be the most useful to you. Assuming Lorem Ipsum is useful to you, which is probably a poor assumption to make. I think we ll both survive this, though. If you haven t seen my last TextExpander bonanza , check it out to see what else it can do. That one includes some good static Lipsum snippets and HTML Lipsum, amongst some neat tricks. I ve posted a few other TextExpander experiments , some more useful than others. Have a look, see if anything helps you out! Cause we know if this emptiness is called love, I dont know what I wanna do. Cause we know the answer. Cause we hope you like what I have to take. Vengeance in his brain. When they are lame no authority. She is the party next door. Chunky Bacon: But I have ever seen, and Invernoire Fantome reminds me a random password. I dont quite remember the visionary machine-coddling antics of Temple Grandin. Shibata-sans site is a company which specializes in belgian waffles and fun fun fun pictures. These guys shot a couple more, if youre Japanese. Sailing Three Thursdays: Soylent Cream:",
"keywords": ["desktop","grandin","haderach","howbert","ipsum","kwisatz","latin","lorem","publishing","temple","texas","textexpander","toast","assuming","bacon","bryant","cause","chocolate","chunky","command","cream","czech","fantome","female","german","grandin","griffith","guimont","haderach","invernoire","ipsum","japanese","kelly","kwisatz","lipsum","lorem","loremipscream","neapolitician","sailing","shell","shibata","soylent","squier","temple","texas","textexpander","thursdays","toast","tuesdays","valerie","vanilla","vengeance","wright","amongst","another","answer","antics","apart","appropriately","assumption","available","bacon","belgian","blogger","bonanza","brain","broken","called","calling","check","chocolate","chunk","chunky","coddling","command","company","contributing","couple","different","emptiness","experiments","flavor","flavors","friend","going","greeking","haven","helps","hilarious","identities","includes","machine","mention","neapolitician","others","party","password","paste","pictures","posted","preferred","random","readable","remember","reminds","return","scripts","shell","slugs","small","snippet","snippets","soylent","specializes","spits","static","stuff","survive","think","toast","tricks","trying","turns","useful","vanilla","visionary","waffles","wanna","website","whatever","whose","youre"]
},{
"title": "Random Lipsum for TextExpander",
"url": "/2011/02/01/random-lipsum-for-textexpander/",
"tags": ["experiments","lipsum","scripting","textexpander"],
"date": "Feb 1st, 2011",
"ts": "1296625080",
"summary": "I hate it when I get an idea for something simple and end up spending an hour figuring out how to do it. I figured I d make a post out of it to make myself feel better. It all started with my being disappointed that the Loripscream API wasn t working. I did a little digging and found that had a not-well-publicized XML feed you can pull from. That's where the fun began. The XML from lipsum.com must be malformed, although I only say that because System Events would not parse it in AppleScript. I resorted to Bash scripting, and probably did a pretty kludgy job of it, but it works. You can adjust the following script to return anything from 1 word to 20 paragraphs (or more) of random Lorem Ipsum . Just change the query values in the curl call: what (words, paras, or bytes), amount (self-explanatory, I hope) and the start parameter tells it whether or not to begin the line with Lorem Ipsum dolor sit or make it completely random. I m going with random. Sure, you could use this from the shell and pipe it to , but a TextExpander snippet seemed like just the thing. Just create a new snippet and set the type to Shell Script. Then, paste this code in, modifying as you see fit.",
"keywords": ["adobe","applescript","bonorum","desktop","finibus","ipsum","latin","lorem","malorum","pagemaker","publishing","applescript","events","ipsum","lorem","loripscream","script","shell","system","textexpander","adjust","although","amount","because","began","begin","bytes","change","completely","create","digging","disappointed","dolor","explanatory","figured","figuring","found","going","kludgy","lipsum","little","malformed","modifying","myself","paragraphs","parameter","paras","parse","paste","publicized","query","random","resorted","return","script","scripting","seemed","shell","simple","snippet","spending","started","tells","values","whatever","where","words","working","works","worth"]
},{
"title": "Web excursions: January 30 - February 1",
"url": "/2011/02/01/web-excursions-january-30-february-1/",
"tags": ["bookmarks"],
"date": "Feb 1st, 2011",
"ts": "1296579600",
"summary": "Readability Blog Enjoy reading, support writing. Neat. Pure Reader for Safari Na Design If you dig Reeder s stylish interface, you can bring it to Google Reader, too. This theme is gorgeous. I ll still be using Reeder most of the time, but this was too cool not to mention. Also available for Chrome and Greasemonkey (which works well with Fluid, I checked). Applying Color Schemes Requires Seeing Them Anew Webdesigner Depot A great piece on choosing and using color schemes, and it includes a very cool Photoshop action for seeing your palettes in different ratios of color. Githood: A minimal GitHub client for iOS - The Changelog - Open Source moves fast. Keep up. Cool little GitHub client for iPhone. You can pay .99 in the App Store, or download and install manually from the GitHub repo. I say, study the source all you want, but pony up a buck to support development if you re using it. luo.ma - Quix shortcuts for searching Apple s App Stores Great search shortcuts for searching the App Store and the Mac App Store from Quix . Thanks, TJ. QR Code Generator If you need QR Codes, this one offers all kinds of setups, including VCards that open directly to your iPhone contacts.",
"keywords": ["github","google","iphone","reader","reeder","store","apple","applying","changelog","chrome","codes","color","depot","design","enjoy","fluid","generator","github","githood","google","greasemonkey","great","links","photoshop","readability","reader","reeder","requires","safari","schemes","seeing","source","store","stores","thanks","vcards","webdesigner","action","available","bring","checked","choosing","client","color","contacts","development","different","directly","download","gorgeous","great","iphone","includes","including","install","interest","interface","kinds","little","manually","mention","minimal","moves","offers","palettes","piece","ratios","reading","schemes","search","searching","seeing","setups","shortcuts","source","study","stylish","support","theme","through","using","works","writing"]
},{
"title": "Notational Velocity update breaks nvALT",
"url": "/2011/01/29/notational-velocity-update-breaks-nvalt/",
"tags": ["macworld","notational","nvalt","velocity"],
"date": "Jan 29th, 2011",
"ts": "1296337200",
"summary": "The latest update to the original Notational Velocity is awesome, and includes a lot of changes which I ll be merging in the next release of nvALT . However, it uses a newer database structure which, once you run the new Notational Velocity, will not work with nvALT. Be warned, if you download and try out the latest NV, you will not be able to run nvALT again until I get the changes merged. I m coming back from Macworld today, and have a lot of catching up to do all around. I ll be working on nvALT as soon as I m able, but it may be the end of this week before I m able to get an interim update out. I ll post here and on Twitter as soon as it s available. Thanks to everyone I spoke with at Macworld, it was a really great time. I enjoyed meeting all of you!",
"keywords": ["apple","icloud","iphone","macworld","notational","twitter","velocity","however","macworld","notational","thanks","twitter","velocity","again","available","awesome","before","catching","changes","coming","database","download","enjoyed","everyone","great","includes","interim","latest","meeting","merged","merging","newer","nvalt","original","release","spoke","structure","today","warned","working"]
},{
"title": "Web excursions: January 20 - January 28",
"url": "/2011/01/28/web-excursions-january-20-january-28/",
"tags": ["bookmarks"],
"date": "Jan 28th, 2011",
"ts": "1296244800",
"summary": "No more Archive.zip Brilliant. Mollify Self-hosted web-based file management. I m not sure why I d choose this over Dropbox or Cloud.app or Droplr or my own CrushFTP server, but I feel compelled to see what it s all about. I m weird like that. Wordpress Theme Using jQuery Mobile Good overview of the HTML5 elements/attributes best used with jQuery Mobile. MacSparky - Blog - Dancing with OPML Awesome. I m amazed I never realized how quickly I could turn my Mindmaps into Scrivener projects without using AppleScript. Hat tip to Practically Efficient . What Caffeine Actually Does to Your Brain That reminds me. I need more coffee. Snail mail push alerts @Makezine.com blog That s it, I m finally ordering an Arduino. Via TUAW .",
"keywords": ["applescript","arduino","dropbox","google","jquery","mobile","reader","wordpress","applescript","archive","arduino","awesome","brain","brilliant","caffeine","cloud","crushftp","dancing","dropbox","droplr","efficient","links","macsparky","makezine","mindmaps","mobile","mollify","scrivener","snail","theme","using","wordpress","alerts","amazed","attributes","based","choose","coffee","compelled","elements","finally","hosted","interest","jquery","management","ordering","overview","projects","quickly","realized","reminds","server","through","using","weird"]
},{
"title": "On my way to Macworld '11",
"url": "/2011/01/24/on-my-way-to-macworld-11/",
"tags": ["macworld","personal","travel"],
"date": "Jan 24th, 2011",
"ts": "1295881920",
"summary": "I m sitting at the airport on free wifi right now, getting ready to embark on a trip from Minnesota to California for Macworld . If anyone is headed out there, I d love to meet you. TUAW will be holding a meetup at some point, I think, so watch @tuawmwsf for that. I can also be reached on Twitter at @ttscoff , or contact me through the contact form here. I look forward to seeing some new faces and meeting up with old friends!",
"keywords": ["apple","california","contact","geometry","iphone","macworld","minnesota","twitter","california","macworld","minnesota","twitter","airport","anyone","contact","embark","faces","friends","getting","headed","holding","meeting","meetup","point","reached","ready","right","seeing","sitting","think","through","ttscoff","watch"]
},{
"title": "Quick Tip: Multi-browser hotkey with Choosy",
"url": "/2011/01/23/quick-tip-multi-browser-hotkey-with-choosy/",
"tags": ["applescript","browser","experiments","quicktip"],
"date": "Jan 23rd, 2011",
"ts": "1295806620",
"summary": "Riffing on my AppleScript to toggle an app between foreground and hidden , and inspired by Daniel Jalkut s script to toggle multiple Twitter apps , I wanted a way to do something similar with web browsers. I already have a great tool for intelligently detecting which browser I want to use: Choosy . Choosy lets me set up rules and define behaviors which select the best option from my list of browsers, using the full list, just running browsers, or more specific lists based on source and type of the url I m opening. I just needed to get it onto a hotkey. Choosy, fortunately, has a url-handler for running different behaviors, which is detailed on the Choosy API page . All you need to do is run this AppleScript in your favorite hotkey-triggered script-launching app: That will trigger the Choosy popup HUD, which can be navigated by keyboard or mouse, where your full list of browsers shows up in your preferred order. Now, you re hotkey will do exactly what the settings in Choosy tell it to do. You can have it automatically pick your favorite browser if none are running, or offer you a choice of preferred or all browsers. Personally, if no browser is running, I like the choice of all browsers. I also tell Choosy to automatically pick the running browser with the highest preference level in my settings if more than one are running. This method works well for all the browsers I ve tested, but has the annoying side effect of always opening a new tab in Chrome/Chromium. It s not a big deal to me, but might be a deal breaker if Chrome is your primary browser. I m inspired to write a quick tool which takes a list of application names from AppleScript, pops up a Choosy-style HUD and returns the selected app name back to the script. A very simple CocoaDialog kind of thing, but better looking in this specific use case. It would make it possible to do this kind of trick with any type of app, and is basically Daniel s script on steroids. It s on my long list of projects to play with, we ll see what happens.",
"keywords": ["applescript","browser","browsers","choosy","chrome","google","interface","language","programming","scripting","twitter","applescript","choosy","chrome","chromium","cocoadialog","daniel","jalkut","personally","riffing","twitter","annoying","automatically","based","behaviors","between","breaker","browser","browsers","choice","define","detailed","detecting","different","favorite","foreground","fortunately","great","handler","happens","hidden","highest","hotkey","inspired","intelligently","keyboard","launching","level","lists","looking","method","mouse","multiple","names","navigated","needed","offer","opening","popup","possible","preference","preferred","primary","projects","quick","returns","rules","running","script","selected","settings","shows","similar","simple","source","specific","steroids","style","takes","tested","toggle","trick","trigger","triggered","using","wanted","where","works","write"]
},{
"title": "The warmest, fuzziest scary thought",
"url": "/2011/01/22/the-warmest-fuzziest-scary-thought/",
"tags": ["personal","poetry"],
"date": "Jan 22nd, 2011",
"ts": "1295742900",
"summary": "As a child, my wife Aditi had memorized this poem by Oliver Herford . She remembered enough of it that we were able to find it on the Googles, and I m absolutely in love with it. As your end-of-the-day, end-of-the-world thought, and as my I-just-ate-my-first-hamburger-in-15-years thought, I present: If this little world tonight Suddenly should fall through space In a hissing headlong flight, Shrivelling from off its face, As it falls into the sun, In an instant every trace Of the little crawling things - Ants, philosophers, and lice, Cattle, cockroaches, and kings, Beggars, millionaires, and mice, Men and maggots all as one As it falls into the sun Who can say but at the same Instant from some planet far A child may watch us and exclaim: See the pretty shooting star!",
"keywords": ["aditi","earth","herford","oliver","aditi","beggars","cattle","earth","googles","herford","instant","oliver","shrivelling","suddenly","child","cockroaches","crawling","enough","exclaim","falls","first","flight","hamburger","headlong","hissing","instant","kings","little","maggots","memorized","millionaires","philosophers","planet","remembered","shooting","space","thought","through","tonight","trace","watch","world","years"]
},{
"title": "Quick tip: AppleScript application toggle",
"url": "/2011/01/22/quick-tip-applescript-application-toggle/",
"tags": ["applescript","quicktip"],
"date": "Jan 22nd, 2011",
"ts": "1295711640",
"summary": "I use a lesser-known (and very old) program called Spark for defining most of the keyboard shortcuts on my system. I have a shortcut for every one of my most regularly-used applications, plus shortcuts for various AppleScripts, shell scripts, system functions, etc. I know there are more recent applications which do the same thing, but I ve had everything set up in Spark for ages and it still works a treat. Seriously, if you want an application launcher, it s worth checking out (and free). However, you can use this tip in any app which lets you assign a hotkey to an AppleScript ( FastScripts , BetterTouchTool ). So, anyway, I ve grown to like applications which have a system-wide hotkey that toggles them between foreground and hidden. It makes a lot of sense for certain applications which you check and then move on from. Sparrow, Twitter, etc. I wanted that functionality in more apps, so I run this as the AppleScript in Spark, replacing the app name with whatever I want to toggle. Sorry about the for launching the app. I m really lazy about replacing more than one instance of a variable, and tell application appName doesn t work, even with various using terms from attempts. Know how to fix that? Let me know. Thanks to D Curtis and Zettt in the comments, I ve put together a more elegant script. It does the same thing without shelling out, and the syntax is cleaned up. Thanks guys! One more update: after some testing, it looks like D Curtis first script below is much faster for some reason (I m assuming that getting the bundle identifier of (info for (path to application appName)) takes some extra resources). I recommend going with this one instead, but I m leaving both up for reference:",
"keywords": ["apple","applescript","keyboard","macintosh","script","shell","shortcut","twitter","applescript","applescripts","bettertouchtool","curtis","fastscripts","however","seriously","sorry","spark","sparrow","thanks","twitter","zettt","anyway","appname","applications","assign","assuming","attempts","below","between","bundle","called","certain","check","checking","cleaned","comments","defining","doesn","elegant","everything","extra","faster","first","foreground","functionality","functions","getting","going","grown","hidden","hotkey","identifier","instance","keyboard","launcher","launching","leaving","lesser","looks","makes","program","recent","recommend","regularly","replacing","resources","script","scripts","sense","shell","shelling","shortcut","shortcuts","stupid","syntax","system","takes","terms","testing","together","toggle","toggles","treat","tricks","using","variable","various","wanted","whatever","works","worth"]
},{
"title": "Pescatarianism and changing views",
"url": "/2011/01/22/pescatarianism-and-changing-views/",
"tags": ["health","personal"],
"date": "Jan 22nd, 2011",
"ts": "1295704800",
"summary": "This post is a departure from my usual. I need a chance to think out loud about a larger-than-usual decision I m making. Bear with me, or skip it entirely if you like. You can always come back again later for nerdier fun. This morning I m writing about this choice. This is not a life-or-death decision, but it is certainly a change in the way I view the world. See, I was a Vegetarian for 5 years of my life, and have been Pescatarian (I eat fish) for another 9 years after that. I ve recently decided that I m going to eat meat. The beef and poultry kind of meat. I haven t acted on this decision, yet. I thought that writing this out might help me understand my changing views, so here goes. I originally became a Vegetarian because I stopped liking meat. I don t know if it was the preparation, a blood-type thing, or just a distaste for the weight and texture of meat. After a couple of weeks without, a hamburger felt like a huge snail crawling through my system. A Vegetarian diet didn t slow me down. It worked. When it comes down to it, It s not really about the animals. I do care about animals, probably more than the average animal-lover, but I m what I would call pragmatic about it. I m not squeamish about blood. I m not anti-hunting. I understand overpopulation. I understand that the cost of building the living space that I enjoy means displacing a good portion of habitat and that the price is often paid in blood, one way or another. I ve come to terms with that. That being said, over the years I have become painfully aware of the horrors of the commercial meat industry. I cannot and will not ever eat meat from animals who have been raised shoulder-to-shoulder like plants, fed chemicals and their own brethren, slaughtered inhumanely and shipped to my grocery store. It s not my primary reason for being Vegetarian (or Pescatarian) the principles resulting from this knowledge can still be adhered to without forgoing meat altogether. It s just been what felt right for me. I can t fully explain why I decided seafood was going to fit into my overall diet. I think I knew I needed more protein than I was getting, and fish seemed benign enough to not conflict with the feelings I had developed about eating flesh. Somehow seafood didn t equate to beef and poultry. I m still squeamish about fish I know are being overfished, and have avoided certain types based on what knowledge I had. I m also generally careful about where my seafood comes from, but not to the",
"keywords": ["mccain","mcdonald","pescetarianism","seafood","vegetarianism","either","however","maybe","mccain","mcdonald","midwest","pescatarian","somehow","upper","vegan","vegetarian","ability","account","acted","adhered","again","almost","altogether","animal","animals","another","answers","aspect","average","avoided","aware","based","became","because","benefits","benign","blood","bother","boycotted","breeding","brethren","building","cannot","careful","cattle","certain","certainly","chance","change","changing","chemicals","chicken","chickens","choice","comes","coming","commercial","concocted","conditions","conflict","consume","conveyer","couple","crawling","create","creation","creatures","curious","death","decided","decision","decisions","departure","dependent","destruction","developed","direction","discarded","disgusting","displacing","distaste","doubt","dozens","eating","ecological","ecosystems","effective","enjoy","enough","entire","entirely","equate","establishments","explain","factories","facts","farmers","farming","farms","feelings","finding","flesh","focused","foods","forgoing","frightening","fully","general","generally","getting","going","grass","great","grocery","growth","habitat","hamburger","hands","haven","health","helps","honestly","hormones","horrid","horrors","hospital","however","humane","hunting","impact","including","independent","industry","inhumanely","intention","intervention","intestinal","justification","killed","knowledge","larger","later","light","liking","living","local","locally","location","looking","lover","makes","making","meats","mental","miles","money","moral","morning","mostly","mouth","myself","nasties","nasty","needed","nerdier","objections","occasional","often","origin","originally","overall","overfished","overpopulation","painfully","personally","picky","plants","pocket","point","portion","poultry","pragmatic","preparation","pressures","price","primarily","primary","principles","problems","process","produce","production","protein","raised","random","range","ready","realized","reasonable","reasons","recently","restaurants","resulting","right","scale"]
},{
"title": "Web excursions: January 15 - January 20",
"url": "/2011/01/20/web-excursions-january-15-january-20/",
"tags": ["bookmarks"],
"date": "Jan 20th, 2011",
"ts": "1295568000",
"summary": "Event Delegation versus Event Handling - how to create quicker web apps Smart stuff, and an optimization that frameworks like jQuery can make really easy to overlook. Sync.in A new incarnation of Etherpad, and a slick-looking one at that. Free for public notes, $2/mo for private notes and other features. Unusual Computer Mice You Probably Haven t Seen Before Wow. I had not seen many of these, and there are some really cool ideas in this gallery of unusual mice. After dozens of (often expensive) keyboards and mice, I have found happiness with the Apple Bluetooth keyboard and Magic Trackpad combo, but part of me is still always looking Script Junkie Namespacing in JavaScript A great overview of different namespacing patterns for JavaScript. Pretty Login URL: a Simple Rewrite API Plugin Example A short, easy-to-grasp tutorial for writing a 28-line plugin that changes your WordPress login url to /login instead of /wp-login.php using the Rewrite API instead of .htaccess. TextMate to Vim with training wheels Great post from the Pug Automatic (a fellow TextMate hanger-on) on MacVim.",
"keywords": ["interface","javascript","locator","macvim","magic","programming","resource","textmate","trackpad","wordpress","apple","automatic","before","bluetooth","computer","delegation","etherpad","example","great","handling","haven","javascript","junkie","links","login","macvim","magic","namespacing","plugin","rewrite","script","simple","smart","textmate","trackpad","unusual","wordpress","changes","combo","create","different","dozens","expensive","features","fellow","found","frameworks","gallery","grasp","great","hanger","happiness","htaccess","ideas","incarnation","interest","jquery","keyboard","keyboards","login","looking","namespacing","notes","often","optimization","overlook","overview","patterns","plugin","private","public","quicker","short","slick","stuff","through","training","tutorial","unusual","using","versus","wheels","writing"]
},{
"title": "nvALT 1.0.8 progress",
"url": "/2011/01/18/nvalt-1-0-8-progress/",
"tags": ["notational","nvalt","velocity"],
"date": "Jan 18th, 2011",
"ts": "1295360460",
"summary": "I made a few breakthroughs on nvALT before bed last night, and I m excited, so I thought I d share. It s not ready for testing yet, but the following two features are working as initial implementations: Full-screen editor. Hides the note list and toolbar, gives you just a full screen view of the current note. Background/font color will be customizable. Markdown/Readability import for web pages. This currently works, but Readability is always hit or miss depending on the target site s markup. Right now, if you enable it in preferences and drag a URL to the notes list, it will retrieve the HTML source and convert it to clean Markdown. If you hold down the option key, it will run it through Readability first, hopefully cutting out comments, ads, etc. It s not perfect, but it s cool. By the way, the next version of nvALT removes the regular Markdown preview option. This is because I ve started to amp up the export features to allow full rendering of Textile or Markdown, with the option to include template files and CSS. Doing this work for both Markdown and MultiMarkdown seems redundant, given that regular Markdown will preview just fine in MultiMarkdown. If anyone has any major objections to this, sound off! Oh yeah, one other thing. When you create a note from the clipboard, NV traditionally uses the first line as the title and then removes it from the note. I ve found that this rarely, if ever, makes sense for text clippings. That doesn t happen anymore, as of 1.0.8. You ll love it. I m planning to apply the same thing to Simplenote imports as well, so the Simplenote title remains, but so does the first line.",
"keywords": ["cascading","editor","locator","markdown","multimarkdown","resource","sheets","simplenote","style","textile","background","doing","hides","markdown","multimarkdown","ongoing","readability","right","simplenote","sticky","textile","allow","another","anymore","anyone","apply","array","because","before","breakthroughs","clean","clipboard","clippings","color","comments","convert","create","customizable","cutting","depending","doesn","editor","excited","export","features","files","first","found","gives","happen","hopefully","ideas","implementations","import","imports","initial","major","makes","markup","night","notes","nvalt","objections","pages","panels","planning","preferences","preview","rarely","ready","redundant","regular","remains","removes","rendering","requests","retrieve","screen","seems","sense","separate","share","sound","source","started","target","template","testing","thought","through","title","toolbar","traditionally","version","while","working","works"]
},{
"title": "Web excursions: January 13 - January 15",
"url": "/2011/01/15/web-excursions-january-13-january-15/",
"tags": ["bookmarks"],
"date": "Jan 15th, 2011",
"ts": "1295110860",
"summary": "Recording Interviews on Skype and converting to HTML5 friendly formats the easy way A complete solution for ScreenCasting with Skype (and a few other apps) and sharing it cross-browser with HTML5. I m very pleased to learn about Archive.org , too. MINI PLANNERS on Vimeo Man, I do love a good Moleskine. Git Immersion - Brought to you by EdgeCase Great git tutorial which covers some of the more advanced features I m not well versed in. Great thanks to lenwnc . Understanding Mac App Store App Restrictions A great overview of what the Mac App Store means to Mac users. Fonts In Use Type at work in the real world. Great typography inspiration. Spritebox - Create CSS from Sprite Images A web app for generating CSS classes from sprite images. Ugly shell scripting Sometimes brute (shell) force is a requirement.",
"keywords": ["moleskine","screencast","skype","store","vimeo","archive","brought","create","edgecase","fonts","great","images","immersion","interviews","links","moleskine","planners","recording","restrictions","screencasting","skype","sometimes","sprite","spritebox","store","understanding","vimeo","advanced","browser","brute","classes","converting","covers","cross","features","force","formats","friendly","generating","great","images","inspiration","interest","learn","lenwnc","overview","pleased","requirement","scripting","sharing","shell","solution","sprite","thanks","through","tutorial","typography","users","versed","world"]
},{
"title": "nvALT 1.0.7",
"url": "/2011/01/14/nvalt-1-0-7/",
"tags": ["markdown","notational","nvalt","velocity"],
"date": "Jan 14th, 2011",
"ts": "1295060340",
"summary": "It records its scroll position in the preview window before it updates the content of it. If the note has already been previewed (you didn t just switch notes), it injects a script into the updated content to restore the scroll position when the window finishes loading. The result should be a completely transparent way to hold the scroll position despite the frequent updates. I also greatly reduced the frequency with which it reads the template files from your support directory, which removed the delay that sometimes occurred when typing inside of longer notes with the preview window open. By the way, I ve added a donate button to the site which appears in the sidebar and on certain project pages and updates. It s not specifically for nvALT, but if you enjoy the work I publish here for free, send me a little coffee/beer money. Thanks! Your support is greatly appreciated! 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 More info",
"keywords": ["google","graphic","operating","preview","scroll","subsystems","systems","window","changelog","donate","download","github","markdown","multimarkdown","notational","preview","published","thanks","updated","velocity","added","advanced","appears","appreciated","before","button","capabilities","cause","certain","changes","coffee","completely","consider","content","critical","directory","donate","editing","enjoy","features","files","finishes","frequency","frequent","greatly","injects","inside","larger","little","loading","longer","money","notes","nvalt","occurred","pages","position","preview","previewed","problems","project","publish","reads","reduced","removed","restore","script","scroll","sidebar","small","sometimes","specifically","stuff","support","switch","template","transparent","typing","updated","updates","while","window"]
},{
"title": "Web excursions: January 4 - January 13",
"url": "/2011/01/13/web-excursions-january-4-january-13/",
"tags": ["bookmarks"],
"date": "Jan 13th, 2011",
"ts": "1294960980",
"summary": "Volkside Wirify homepage The web as wireframes Cool trick turn any web page into an instant wireframe version for easier visual dissection. 45 Clean and Beautiful Minimalist WordPress Themes Definitely includes a few inspirational themes to dig into. Ajax file upload with pure JavaScript This is awesome to know, I just wish it worked with iCab s file upload on iOS. CSS2/DOM - Styling an input type= file Bookmarked because it took me a while to find a good solution. Hopefully it will save someone else some time You Will Not Believe This Is Just a Powerpoint Pretty sweet use of Google Docs. Downright amazing, actually. mom, this is how twitter works. not just for moms! This is not actually the explanation I would send to my mother it would be a bit overwhelming. Nonetheless, it s an awesome guide and full of useful facts, even for seasoned Twitterers.",
"keywords": ["downloading","google","javascript","jquery","microsoft","powerpoint","uploading","beautiful","believe","bookmarked","clean","definitely","downright","google","hopefully","javascript","links","minimalist","nonetheless","powerpoint","styling","themes","twitterers","volkside","wirify","wordpress","amazing","awesome","because","dissection","easier","explanation","facts","guide","homepage","includes","input","inspirational","instant","interest","mother","overwhelming","seasoned","solution","themes","through","trick","twitter","upload","useful","version","visual","while","wireframe","wireframes","worked","works"]
},{
"title": "Home from Punta Cana",
"url": "/2011/01/12/home-from-punta-cana/",
"tags": ["personal","travel"],
"date": "Jan 12th, 2011",
"ts": "1294881960",
"summary": "We made it home from our vacation to Punta Cana late this afternoon. The vacation was amazing, and I made new friends and put some faces (and amazing personalities) with names I already knew. A great time was had by all. The trip home, US Customs, canceled flights and fleabag hotels I could have lived without, but I m home safe and looking forward to getting back to work, coding on my various projects, and catching up on all of the TUAW news I missed! My Drobo wasn t happy to see me, unfortunately, so now I get to try to figure out how to get back a couple terrabytes of data. Good times. Everything else is awesome, though, and a big thanks to our friend Jon Clark for house-sitting and leaving the place better than he found it! p.s. If anyone has any tips for dealing with a Drobo that lights up everything (full bar across the bottom and a red light on every drive bay) as soon as you plug it in and never attempts to boot, please let me know.",
"keywords": ["aquaculture","caribbean","conservancy","coral","croix","dominican","islands","jamaica","nature","punta","republic","saint","tourism","travel","virgin","clark","customs","drobo","everything","punta","across","afternoon","amazing","anyone","attempts","awesome","bottom","canceled","catching","coding","couple","dealing","drive","everything","faces","figure","fleabag","flights","found","friend","friends","getting","great","happy","hotels","house","leaving","light","lights","lived","looking","missed","names","personalities","projects","sitting","terrabytes","thanks","times","unfortunately","vacation","various"]
},{
"title": "Homeward, eventually",
"url": "/2011/01/12/homeward-eventually/",
"tags": ["personal","travel"],
"date": "Jan 12th, 2011",
"ts": "1294836240",
"summary": "In Punta Cana, when they let us know that there was no way we were going to make it through customs in time for our connecting flight, they promised us a hotel room and a cab. We got to Miami, made it through customs and finally got to a ticketing counter to collect our hotel room. They shook their heads at our naivet. We received the usual Distress Voucher and headed out to the shuttle area. Meanwhile, I looked up Airport Regency Hotel in Miami on Yelp.com to see what we were getting into. I read 4 or 5 reviews and rapidly decided it would be worth the extra money to do anything other than spend the night at this hotel. Unfortunately every hotel we called was completely booked. So, after waiting for 30 minutes, we resigned ourselves to getting on the Regency shuttle when it showed up. Here s what I will be copying and pasting into my Yelp review when I get a chance: It didn t look so bad on the outside, nor in the lobby, but the room immediately confirmed my gut instinct. The lights were aging compact fluorescents the ones with the sickly green cast to them. That didn t help the rest of the room look better, from the torn comforter spilling its inner contents to the janky little tv that I doubt would have worked if we had tried. The smell of vomit pervaded the sleeping area, and the smell of urine was less than pleasant in the bathroom. Pulling back the ragged top layer of the bed revealed a stained second cover with somebody else s hair on it. Yes, that kind of hair. I immediately began to itch, which may have been psychosomatic, but my wife and I agreed that this may not have been a step up from sleeping on an airport bench after all. The fact that we really only had four hours until we headed back to the airport made it somewhat more bearable, and I reluctantly slid between what appeared to be recently washed sheets. I slept hard, and only woke up once due to the sound of loud music from below and airplanes from above. I will give them this: after a week in a Dominican Republic hotel room with only one grounded outlet and one two-prong outlet, the electrical situation was at least up to code. All of my devices were charged in the morning, for which I am grateful. See? I always find something nice to say. The happy ending to the story is that the shuttle driver was friendly in the morning (4 a.m.) and I didn t get into any swearing matches with the surly ticket counter folk back at the airport. We re on a plane right now, headed for Dallas,",
"keywords": ["caribbean","dallas","dominican","hotel","miami","punta","republic","texas","airport","dallas","distress","dominican","hotel","meanwhile","miami","pulling","punta","regency","republic","texas","unfortunately","voucher","above","afternoon","aging","agreed","airplanes","airport","appeared","based","bathroom","bearable","began","below","bench","between","booked","called","chance","charged","collect","comforter","compact","completely","confirmed","connecting","contents","copying","cover","customs","decided","devices","doubt","driver","electrical","ending","extra","finally","flight","fluorescents","friendly","getting","going","grateful","green","ground","grounded","happy","headed","heads","heard","hotel","hours","inner","instinct","janky","layer","lights","little","lobby","looked","matches","minutes","money","morning","music","naivet","night","ourselves","outlet","outside","pasting","pervaded","plane","pleasant","promised","prong","psychosomatic","ragged","rapidly","received","recently","relax","reluctantly","resigned","revealed","reviews","right","second","sheets","shook","shovel","showed","shuttle","sickly","situation","sleep","sleeping","slept","smell","somebody","somewhat","sound","spend","spilling","stained","story","supposedly","surly","swearing","through","ticket","ticketing","traveling","tried","urine","vomit","waist","waiting","washed","worked","worth"]
},{
"title": "Miami, Dallas and home",
"url": "/2011/01/11/miami-dallas-and-home/",
"tags": ["personal","travel"],
"date": "Jan 11th, 2011",
"ts": "1294773360",
"summary": "Aditi and I are at the airport in Punta Cana, Dominican Republic. Wifi is a little spotty, but I m going to see if I can get this posted from my iPad. Our flight to Miami was delayed enough that we re going to miss the last connecting flight that would have gotten us any closer to home than Florida. We get an extra night of vacation, I guess, courtesy of American Airlines. I had a great week in the DR and made some great new friends. We re a little crabby about the travel kinks, but I look forward to posting some video/photos of our awesome vacation soon!",
"keywords": ["aditi","airlines","american","caribbean","dominican","florida","miami","punta","republic","aditi","airlines","american","dominican","florida","miami","punta","republic","airport","awesome","closer","connecting","courtesy","crabby","delayed","enough","extra","flight","friends","going","gotten","great","guess","kinks","little","night","photos","posted","posting","spotty","travel","vacation","video"]
},{
"title": "Web excursions: January 3 - January 4",
"url": "/2011/01/04/web-excursions-january-3-january-4/",
"tags": ["bookmarks"],
"date": "Jan 4th, 2011",
"ts": "1294192380",
"summary": "redo I wasn t at this wedding, but my friend (and awesome photographer) Peter Boysen was, and he captured this moment. If you look at it for a while, you can see a good 5-minute story in one frame. Site-Specific Email Addresses Some smart email/GMail tips from TUAW s TJ Luoma . Markdown Primer - TUAW TUAW mentions Markdown often enough that we thought we should have our own Intro to Markdown we could point people to. Advanced SimpleNote: Collaborating, Blog posts, and Advanced Applications Collaborative note editing tips, and a good bit on Scrivener with Notational Velocity. Cool stuff, and the post was written in nvALT! scottjacksonx/mobile-dl - GitHub A roll-your-own Instapaper for rich media, using SimpleNote and some scripting. WordPress As Riskiest Web Software In 2010 Un-patched anything is going to be attacked. Dead on, especially the last paragraph. jlbfalcao/js-beautify-v8.tmbundle - GitHub v8 jsbeautify bundle for TextMate. Has a few dependencies to install, but there are brew formulas for everything. Nice. Head JS :: The only script in your HEAD Another parallel javascript loader. Looks pretty good, I ll give it a shot on my next web app project. gfxmonk/python-readability - GitHub A very good port of Arc90 s Readability in Python. Pipe this through html2text and you can pull the main content of any well-formed page as a Markdown note. nvALT importer? Yes.",
"keywords": ["github","markdown","notational","python","simplenote","textmate","velocity","wordpress","addresses","advanced","another","applications","boysen","collaborating","collaborative","email","gmail","github","instapaper","intro","links","looks","luoma","markdown","notational","peter","primer","python","readability","riskiest","scrivener","simplenote","software","specific","textmate","velocity","wordpress","attacked","awesome","beautify","bundle","captured","content","dependencies","editing","email","enough","especially","everything","formed","formulas","frame","friend","gfxmonk","going","importer","install","interest","javascript","jlbfalcao","jsbeautify","loader","media","mentions","minute","mobile","nvalt","often","paragraph","parallel","patched","people","photographer","point","posts","project","python","readability","scottjacksonx","script","scripting","smart","story","stuff","thought","through","tmbundle","using","wedding","while","written"]
},{
"title": "Bookmarklet: Read Pinboard links with Instapaper Text",
"url": "/2011/01/04/pinboard-links-with-instapaper-text/",
"tags": ["bookmarklet","experiments","pinboard"],
"date": "Jan 4th, 2011",
"ts": "1294165800",
"summary": "Here s a quick bookmarklet you can run on any Pinboard page containing a list of bookmarks. It adds a Read link at the end of the edit links for each post, and clicking the link will open the post in Instapaper Text 1 view in a new page/tab. It also marks the post you click as read. Note that this happens whether you have that specified in the preferences or not (because it s a quick hack and I think it s weird to not mark an article as read when you read it). Just drag the link below into your bookmarks bar or right click and Add Bookmark . No promises, no guarantees, very little support. I love you all, but this is just something I wanted last night and it works for me. Hopefully it will for you, too. Also, here s a quick side experiment which does the same thing, but uses an experiment I set up on my server to run Readability and pipe it into an Antique-style page. It s not as fast, and sometimes misses things that Instapaper Text picks up, so it s just for fun right now. Nonetheless, it s pretty cool. Looks best in Safari. Looks good in Firefox. Probably looks like garbage on IE.",
"keywords": ["bookmarklet","bookmarks","delicious","firefox","instapaper","iphone","pinboard","safari","antique","bookmark","firefox","hopefully","instapaper","looks","nonetheless","pinboard","readability","safari","article","because","below","bookmarklet","bookmarks","bottom","click","clicking","containing","experiment","garbage","guarantees","happens","links","little","looks","marks","misses","night","original","picks","preferences","promises","quick","right","server","sometimes","style","support","think","wanted","weird","works"]
},{
"title": "I adore Pinboard",
"url": "/2011/01/03/i-adore-pinboard/",
"tags": [],
"date": "Jan 3rd, 2011",
"ts": "1294090920",
"summary": "This is a very short post to mention that I ve fallen in love with Pinboard . I ve been using in it earnest ever since the day Yahoo said they were sunsetting Delicious, and now I feel stupid for not switching years ago. Even if Delicious survives, I d never go back now. Pinboard does it all, including the full-text search (for a reasonable upgrade fee) that I love about Historio.us . Seriously, check this stuff out . The API even directly mirrors the Delicious V1 API, so modifying scripts and apps which work with Delicious is as easy as changing the endpoint. As an aside, I spent a little time last night playing around with porting some of Instapaper Beyond s functionality to Pinboard. With the right settings, you can actually use Pinboard in the same fashion as Instapaper, just without the wicked iPad app. It has full support for read/unread and private/public posts. A few extra keyboard shortcuts would make it a dream for postponed reading on the Mac. You can even download offline copies of the last 25 bookmarks, complete with a table of contents. If you surf the web, you need Pinboard. Do yourself a favor and check it out. P.S. If anyone from Pinboard is listening, please add support to the API!",
"keywords": ["delicious","google","instapaper","interface","pinboard","programming","store","twitter","yahoo","beyond","delicious","historio","instapaper","pinboard","seriously","yahoo","anyone","aside","bookmarks","changing","check","contents","copies","directly","download","dream","earnest","endpoint","extra","fallen","fashion","favor","functionality","including","keyboard","listening","little","mention","mirrors","modifying","night","offline","playing","porting","postponed","posts","private","public","reading","reasonable","right","scripts","search","settings","short","shortcuts","since","spent","stuff","stupid","sunsetting","support","survives","switching","table","unread","upgrade","using","wicked","years"]
},{
"title": "Web excursions: December 31 - January 2",
"url": "/2011/01/02/web-excursions-december-31-january-2/",
"tags": ["bookmarks"],
"date": "Jan 2nd, 2011",
"ts": "1294025700",
"summary": "Clickable Tweet Links, Hashtags Usernames In A Custom NSTextView ~ Flyosity by Mike Rundle I m not building a Twitter client, but there are some darn handy tricks in here. UMEKit - Open Source UIKit for Mac OS X Cocoa Desktop Applications Make Mac desktop apps look like iPhone apps. I will try not to get carried away with this. The 15 Best Vim Plugins Steve Francia s Blog I can t prove they re the best, but they are among the most awesome I ve found yet. VIM from novice to professional by: Derek Wyatt #part 1 I haven t watched them yet. I don t promise anything, but they re on my list of things to do when I don t have things I have to do. Vmail GMail client in Vim I could get used to this. Bootie - Best of Bootie 2010 Holy crap. 3 Web Tools To Collect And Share Bundles Of Interesting Links I didn t know bit.ly could bundle URLs in one short link. That s pretty cool. The Ultimate Dropbox Toolkit Guide Dropbox FTW. SimplenoteWatch Perl script to watch for changes in your Simplenote account and trigger user-defined actions based on the changes. Vim Tips Wiki Some Vim craziness.",
"keywords": ["derek","editors","rundle","simplenote","source","twitter","wyatt","applications","bootie","bundles","clickable","cocoa","collect","custom","derek","desktop","dropbox","flyosity","francia","gmail","guide","hashtags","interesting","links","nstextview","plugins","rundle","share","simplenote","simplenotewatch","source","steve","toolkit","tools","twitter","uikit","umekit","ultimate","usernames","vmail","wyatt","account","actions","among","awesome","based","building","bundle","carried","changes","client","craziness","defined","desktop","found","handy","haven","iphone","interest","novice","professional","promise","prove","script","short","through","tricks","trigger","watch","watched"]
},{
"title": "nvALT 1.0.5 (quick fixes)",
"url": "/2010/12/27/nvalt-1-0-5-quick-fixes/",
"tags": ["notational","nvalt","velocity"],
"date": "Dec 27th, 2010",
"ts": "1293467940",
"summary": "Just a quick release to touch on a couple of bugs since yesterday s nvALT 1.0.4 release: Two-click process to share with peg.gd. (Prevent accidental sharing) Fix for white-on-white text when renaming. Fix for crasher when auto-selecting note from search field while preview window is open As usual, update from the Application menu- Check for Updates, or grab it from the project page . Your support is greatly appreciated! Or me on GitHub!",
"keywords": ["action","combat","games","label","quick","release","skewer","space","video","check","github","prevent","updates","accidental","appreciated","click","couple","crasher","field","greatly","nvalt","preview","process","project","quick","release","renaming","search","selecting","share","sharing","since","support","touch","while","white","window","yesterday"]
},{
"title": "Web excursions: December 10 - December 26",
"url": "/2010/12/26/web-excursions-december-10-december-26/",
"tags": ["bookmarks"],
"date": "Dec 26th, 2010",
"ts": "1293404400",
"summary": "Dontcom - HTML5 Boilerplate TextMate Template Bundles Handy HTML5 boilerplates as TextMate templates. Why you don t like changes to your design - The Oatmeal This Oatmeal strip, like many of theirs, will stick to my ribs for a good while. Exploring the Simplenote API - And now it s all this The SimpleNote API is as simple as you d expect it to be. This is going to burn some hours of playtime. Bing Query Language Don t get me wrong about my love for Google, there s a lot to love about Bing, too. Google s AROUND Operator for Proximity Search I love the advanced syntax Google offers, but I d never heard of this one. Search for words within a certain proximity of each other with AROUND(x). Very cool. Position Absolute, web apps and front-end stuff - stackJS, a javascript module loader and dependencies handler Modular loading of JavaScript with dependencies. Looks great. JavaScriptMVC I m starting to leave behind large, anonymous jQuery functions filled with DOM events, and this looks like a great way to start. How to Use and Tweak Reader Mode in Safari - How-To Geek Neat, I had no idea that Antique would work with the Windows version of Safari!",
"keywords": ["engines","google","googlereader","interface","javascript","programming","search","simplenote","textmate","absolute","antique","boilerplate","bundles","dontcom","exploring","google","handy","javascript","javascriptmvc","language","links","looks","modular","oatmeal","operator","position","query","reader","safari","search","simplenote","simplenote","template","textmate","tweak","windows","advanced","anonymous","behind","boilerplates","certain","changes","dependencies","design","events","expect","filled","front","functions","going","great","handler","heard","hours","interest","jquery","javascript","leave","loader","loading","looks","module","offers","playtime","simple","stackjs","starting","stick","strip","stuff","syntax","templates","theirs","through","version","while","within","words","wrong"]
},{
"title": "nvALT 1.0.4: custom colors, social sharing",
"url": "/2010/12/26/nvalt-1-0-4-custom-colors-social-sharing/",
"tags": ["notational","nvalt","velocity"],
"date": "Dec 26th, 2010",
"ts": "1293386400",
"summary": "nvALT 1.0.4 introduces several new features and customizations. This may eventually become a theme selector with multiple color prefs and a preset selector, but for now it calculates all of the alternating row and related colors based on a single color well in General Preferences. There is also an option to turn off alternating row highlighting. Icons courtesy of Taylor Carrigan , who has graciously agreed to let me use his custom NV icons as the default set for nvALT. The first social option I m adding to nvALT. http://peg.gd is a project of Robert Palmer s which allows me to offer the ability to share notes with friends, with full rendering of Textile, Markdown or MultiMarkdown. When you click the share button, the title and contents of the note are sent to peg.gd, and a popup returns the resulting short URL. The URL is automatically copied to the clipboard, and the button on the popup allows you to open it in your default browser immediately. The url is not publicized anywhere, so you can email it to just the people who need to see it (or blast it out on Twitter, if you like). The generated urls are sequential and guessable, so it s not private, but it s a great way to turn your Markdown into a quick web page to share information. You can delete the and files in and the new templates will be written to disk automatically. For those who are customizing the templates, you can use the placeholder to include the note title at any point in the container template. The default template has the title fixed at the top of the preview window. In several areas throughout the application, padding and spacing has been increased to aid in usability/readability. Grab the latest version from the project page , or run Check for Updates in your current version of nvALT. URLs with parenthesis in them are broken The preview window jumps to top every time you update the note. Still trying to figure out a way around this. Rare crashes when entering certain strings in the search field. I haven t tracked this one down yet, but I m working on it.",
"keywords": ["clients","locator","markdown","multimarkdown","palmer","resource","robert","textile","twitter","among","arabic","carrigan","check","cleaner","customizable","download","general","icons","issues","markdown","multimarkdown","palmer","preferences","right","robert","several","sharing","taylor","textile","twitter","updates","whitespace","ability","adding","agreed","allows","alternating","anywhere","areas","automatically","background","based","blast","broken","browser","button","calculates","certain","click","clipboard","color","colors","container","contents","copied","courtesy","crashes","custom","customizations","customizing","decent","default","email","entering","eventually","features","field","figure","files","first","fixed","fixes","friends","generated","graciously","great","guessable","haven","highlighting","icons","increased","information","introduces","jumps","latest","multiple","notes","nvalt","offer","padding","parenthesis","people","placeholder","point","popup","preferences","prefs","preset","preview","private","project","publicized","quick","readability","related","rendering","resulting","returns","search","selector","sequential","several","share","short","single","social","spacing","strings","template","templates","theme","throughout","title","tracked","trying","usability","users","version","window","workaround","working","written"]
},{
"title": "Bring it on, winter",
"url": "/2010/12/22/bring-it-on-winter/",
"tags": ["personal","winter"],
"date": "Dec 22nd, 2010",
"ts": "1293062220",
"summary": "After 30 + of snow in the last couple of weeks, and some bitter cold days, I m gearing up. My trip to Fleet Farm was productive: 1 pair Carhartt Bernies (coverall), black 1 Carhartt jacket, black 1 old-timey lined hat with ear flaps, black 1 pair lined, waterproof gloves 1 pair of thermal drawers 1 thermal top 2 pairs thick wool socks 1 pair Kamik double-lined, waterproof boots Winter, do your worst (well, not really, just within reason, please and thank you).",
"keywords": ["clothing","kamik","label","mukluk","ounce","overall","shopping","waterproofing","bernies","carhartt","fleet","kamik","winter","bitter","black","boots","couple","coverall","double","drawers","flaps","gearing","gloves","jacket","lined","pairs","productive","socks","thank","thermal","thick","timey","waterproof","weeks","within","worst"]
},{
"title": "nvALT 1.0.3",
"url": "/2010/12/18/nvalt-1-0-3/",
"tags": ["notational","notes","velocity"],
"date": "Dec 18th, 2010",
"ts": "1292705760",
"summary": "nvALT 1.0.3 has been posted for automatic updates and direct download. If you re already running nvALT (formerly Notational Velocity ALT), just go to the application menu and choose Check for Updates to get the latest version. Otherwise, download it from the project page . I removed the blue background due to popular demand. Ian Soper has designed some great themes which will be available from a theme selector in an upcoming version, but for now it s basically white. I also fixed the mixed-up interface issue for French and Portuguese users by reverting the affected nibs to English-only until I finalize the interface and get the localized versions in place. Add a few bugfixes (and hopefully not too many new bugs) and you ve got the incremental release that is version 1.0.3! There are new features on the way, but I wanted to get these minor changes out for users as quickly as possible. Darker, wider, cleaner scrollbar Ignore parenthesis when scanning for URLs Remove blue background Temporarily removed affected French and Portuguese nibs Bug fixes 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 More info Your support is greatly appreciated! Or me on GitHub!",
"keywords": ["apple","clients","icloud","iphone","language","notational","portuguese","velocity","changelog","changes","check","darker","donate","download","english","french","github","ignore","markdown","multimarkdown","notational","portuguese","published","remove","soper","temporarily","updated","updates","velocity","advanced","affected","appreciated","automatic","available","background","bugfixes","capabilities","changes","choose","cleaner","demand","designed","direct","download","editing","features","finalize","fixed","fixes","formerly","great","greatly","hopefully","incremental","interface","latest","localized","minor","mixed","nvalt","parenthesis","popular","possible","posted","preview","project","quickly","release","removed","reverting","running","scanning","scrollbar","selector","stuff","support","theme","themes","upcoming","updates","users","version","versions","wanted","white","wider"]
},{
"title": "Speaking of Notational Velocity, did you know...",
"url": "/2010/12/11/speaking-of-notational-velocity-did-you-know/",
"tags": ["notational","nvalt","quicktip","velocity"],
"date": "Dec 11th, 2010",
"ts": "1292098140",
"summary": "This is probably clearly documented somewhere, but it took me by surprise. If you have a full attributed string url in your clipboard (meaning you used ctrl-click Copy Link ) and you pop up Notational Velocity and hit the Command-Shift-V shortcut, it will actually download all of the text of the page the link leads to, title it and insert the original url at the beginning? I haven t tried it on the original version, so I don t know if it s been there the whole time or if someone built it in along the way, but it s pretty cool. It s not the cleanest output, just the full text with most of the tags stripped. It retains some formatting (bold, italics, font size) as Rich Text, but you can clean it up quickly and convert to plain text with a quick select all and Command-T. For nvALT , I m thinking about trying to take the raw HTML string, run it through a Readability / Clippable / Instapaper-type algorithm and then markdownify the resulting html. That would make it a really useful tool for me, akin to the Clippable to Evernote service. First up, though, is social sharing of notes via peg.gd , thanks to a collaboration with former TUAW colleague Robert Palmer of Honest Code . You ll be able to click an icon on the Preview HUD and post a rendered version of your current note as a web page, and get back a short url for sharing. I won t say much more than that until I have some more code written, but I m pretty excited about the possibilities.",
"keywords": ["apple","evernote","iphone","notational","palmer","robert","velocity","clippable","command","evernote","first","honest","instapaper","notational","palmer","preview","readability","robert","shift","velocity","algorithm","attributed","beginning","built","clean","cleanest","clearly","click","clipboard","collaboration","colleague","convert","documented","download","excited","formatting","former","haven","italics","leads","markdownify","meaning","notes","nvalt","original","output","possibilities","quick","quickly","rendered","resulting","retains","service","sharing","short","shortcut","social","somewhere","string","stripped","surprise","thanks","thinking","through","title","tried","trying","useful","version","whole","written"]
},{
"title": "Notational Velocity ALT expatiation (and roadmap)",
"url": "/2010/12/11/notational-velocity-alt-expatiation-and-roadmap/",
"tags": ["cocoa","experiments","multimarkdown","notational","programming","textmate","velocity"],
"date": "Dec 11th, 2010",
"ts": "1292086800",
"summary": "I d just like to put it out there, as someone will eventually: Notational Velocity ALT (henceforth referred to as nvALT) is turning into something antithetical to the original premise of Notational Velocity . I understand that, and I accept it. Notational Velocity is an amazing note-taking tool, elegant in its simplicity and without much need for expansion. I love it. nvALT is the result of my desire to get back into Objective-C and begin by reverse-engineering an application I adored. That s how I learn, working backward from the desired result. Notational Velocity happened to be Open Source, so that s where I dug in. I didn t believe that I was going to make NV better, I thought I could build something from it. What follows is my vision as it stands today, some elements more concrete than others. I m hoping that as I develop nvALT, it will become its own application, viewed not as an evolution of Notational Velocity, but as a grandchild. Something with roots in the original application, but serving a different purpose (and yes, I m pondering new names). What do I see it developing into? A writing app. A Markdown-specific, minimalist application for gathering and developing ideas, indexing them, making them portable and cross-platform and then sharing and publishing them. The basic elements are already there: widescreen view, collapsible notes panel, MultiMarkdown integration, preview and source output, and Dropbox and SimpleNote sync. I see incorporating the full-screen mode that other forks have already accomplished, but I also see creating a nearly-invisible text editing system which stays out of the way but which makes editing Markdown as easy and efficient as possible. It will always work in plain text, so editing in SimpleNote, or in any of the numerous iPad apps with Dropbox or SimpleNote support will be a given. I ve already built this system for WordPress (soon to be a Safari extension), but need to rebuild it for Cocoa. It involves no buttons, just features that manifest as you type, and in an intuitive way that you don t have to think twice about. It s basically the TextMate MultiMarkdown bundle for text views. The essential elements: Auto-pairing of brackets, parenthesis and quotes Auto-completion of reference link titles Automatic list creation, continuation and conversion Wrapping selections in any auto-paired characters Shortcut keys for bold and italics insert Markdown syntax Pasting links on their own line creates",
"keywords": ["markdown","multimarkdown","notational","safari","simplenote","velocity","wordpress","automatic","blogger","cocoa","contents","dropbox","fletcher","github","markdown","multimarkdown","notational","pasting","penney","publish","safari","shortcut","simplenote","source","table","textmate","tumblr","typewriter","velocity","wordpress","wordpress","wrapping","absolute","accept","accomplished","adored","aforementioned","amazing","antithetical","appreciated","automatically","backward","basic","beautiful","becomes","began","begin","believe","brackets","build","built","bundle","button","buttons","centered","characters","claim","click","clicking","client","collapsible","combination","comment","concrete","contact","continuation","conversion","converting","covered","create","creates","creating","creation","cross","default","desired","determined","develop","developing","development","different","directly","documents","doesn","editing","efficient","elegant","elements","email","engineering","especially","essential","eventually","evolution","excellent","expansion","extension","feature","features","feedback","files","fluid","follows","forks","fulfills","gathering","going","grandchild","greatly","happened","hoping","ideal","ideas","indexing","inline","integration","interface","intuitive","invisible","involves","italics","learn","leave","links","little","makes","making","manifest","messages","minimal","minimalist","moving","names","nearly","notes","nvalt","opens","original","others","output","painfully","paired","pairing","panel","parenthesis","platform","pondering","portable","possible","powerful","premise","preview","publishing","quotes","rebuild","references","rendering","reverse","right","roadmap","roots","screen","seems","selections","sending","serving","sharing","simplicity","source","specific","stands","stays","suggestions","support","syntax","system","taking","terribly","think","thinking","thought","through","timeline","title","titles","today","tools","turning","twice","ultimate","understand","useful","version","vertically","viewed","views","vision","where","widescreen","working","writing"]
},{
"title": "Web excursions: December 4 - December 10",
"url": "/2010/12/10/web-excursions-december-4-december-10/",
"tags": ["bookmarks"],
"date": "Dec 10th, 2010",
"ts": "1291964400",
"summary": "HTML 5 innerShiv jQuery workaround for an IE html5 issue that a shiv can t solve. See related gist , too. 25 Tips for Intermediate Git Users : Andy Jeffries A great intermediate guide to Git that was perfect for the level I m at. If you ve been using git successfully for a while, but know there s more to it than you ve mastered, check this out. Table Techniques Taught Tastefully (part 3) NSTableView tricks. elastic threads Notational Velocity fork Wish elastic threads would share the source on this one, there are some very cool tricks in there. Check it out! Pure CSS3 box-shadow page curl effect Really nice CSS3 method for creating page curls. I think I ll put this to use in my work-in-progress Times Reader knockoff, Riffle . Display Your Favourite Music with jQuery Last.fm Now that s pretty slick. Plugin To Add Custom Field To An Attachment In WordPress Lots of possibilities for this technique. ViMate - a vi plugin for TextMate Wow, VI modes for TextMate. Now I can actually switch back and forth without messing myself up! It s a limited subset of commands, but the basic navigation is there. Very cool.",
"keywords": ["cascading","jquery","luttrell","notational","sheets","style","textmate","velocity","wordpress","attachment","check","custom","display","favourite","field","intermediate","jeffries","links","music","nstableview","notational","plugin","reader","riffle","table","tastefully","taught","techniques","textmate","times","users","velocity","vimate","wordpress","basic","check","commands","creating","curls","elastic","forth","great","guide","innershiv","interest","intermediate","jquery","knockoff","level","limited","mastered","messing","method","modes","myself","navigation","plugin","possibilities","related","shadow","share","slick","solve","source","subset","successfully","switch","technique","think","threads","through","tricks","using","while","workaround"]
},{
"title": "Notational Velocity ALT 1.0 release",
"url": "/2010/12/09/notational-velocity-alt-1-0-release/",
"tags": ["experiments","macos","markdown","multimarkdown","notational","velocity"],
"date": "Dec 9th, 2010",
"ts": "1291957740",
"summary": "After a few late nights of off-hours programming, I m putting Notational Velocity ALT out as a version 1.0. Obviously built on the backs of others, I m just giving it a versioning scheme of its own to make it easier to track my own updates. It does have the built-in updater pointed to my own servers now, so once you install it, updates will be available from within the app. For a rundown of new features and tips, see the project page I just posted: Notational Velocity ALT . Your support is greatly appreciated! Or me on GitHub!",
"keywords": ["apple","icloud","iphone","notational","plaintext","programming","scheme","velocity","github","notational","velocity","appreciated","available","backs","built","easier","features","giving","greatly","hours","install","nights","others","pointed","posted","programming","project","putting","rundown","scheme","servers","support","track","updater","updates","version","versioning","within"]
},{
"title": "Notational Velocity ALT 5.3",
"url": "/2010/12/07/notational-velocity-alt-5-3/",
"tags": ["experiments","macos","markdown","multimarkdown","notational","notes","velocity"],
"date": "Dec 7th, 2010",
"ts": "1291771620",
"summary": "As usual with projects I didn t plan to take as far as I did, my version numbering scheme is, well, stupid. With the next release I m going to implement my own feed for automatic updates, so I ll probably reset the versioning to something more incremental and sane. Anyway This version cleans up the preview panel a little, replacing the Aqua tabs with a nice HUD-style toggle button for Preview/Source. Other visual changes are quite minor, mostly related to spacing. An interesting change is that NV ALT now reads its HTML and CSS for the preview from your user s folder, which it will create on launch if it doesn t exist. There you ll find template.html and custom.css. You can edit both to your heart s content if you mess up, just delete or rename them and they ll be recreated. I also fixed the Save HTML (which I m pretty sure I broke) so that it saves full, valid XHTML documents. The Preview shows fragments, Save makes documents. I m experimenting with adding some JavaScript to the preview template to make sure that external links open in a browser, but internal (page anchor) links get some nice smooth scrolling action. Just for fun. The CSS has the basic definitions for you to play with, and you can see your changes by switching notes, which will regenerate the preview. I managed to make all of the scrollbars look great, except for the Preview window. Web views are way too much trouble to re-skin, I found, so I scrapped all of those changes and went back to default toolbars. Elastic Threads has a fork of Notational Velocity that I really like which has great toolbars, but I m betting he can t get a web view to look good either! Too bad his source isn t available there s a lot there to love. Have fun with the customizations, if you try that out! 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 More info Your support is greatly appreciated! Or me on GitHub!",
"keywords": ["cascading","javascript","notational","preview","sheets","style","velocity","xhtml","anyway","changelog","donate","download","elastic","github","javascript","markdown","multimarkdown","notational","preview","published","source","threads","updated","velocity","xhtml","action","adding","advanced","anchor","appreciated","automatic","available","basic","betting","broke","browser","button","capabilities","change","changes","cleans","content","create","custom","customizations","default","definitions","documents","doesn","editing","either","except","exist","experimenting","external","fixed","folder","found","fragments","going","great","greatly","heart","incremental","interesting","internal","launch","links","little","makes","managed","minor","mostly","notes","numbering","nvalt","panel","preview","projects","reads","recreated","regenerate","related","release","rename","replacing","reset","saves","scheme","scrapped","scrollbars","scrolling","shows","smooth","source","spacing","stuff","stupid","style","support","switching","template","toggle","toolbars","trouble","updates","valid","version","versioning","views","visual","window"]
},{
"title": "Lunch-break bugfixes for Notational Velocity ALT",
"url": "/2010/12/06/lunch-break-bugfixes-for-notational-velocity-alt/",
"tags": ["experiments","markdown","multimarkdown","notational","velocity"],
"date": "Dec 6th, 2010",
"ts": "1291662120",
"summary": "I m going to have to build a project page for this, and probably set up a separate Sparkle feed for updates on this fork. I had a few minutes while eating my peanut butter and jelly, so I m posting a new build with a few changes: Renaming notes doesn t give you a black background in the table cell Removed my weird color scheme, for now Made MultiMarkdown render as snippets instead of full documents. You can still get a full document with Save HTML on the preview HUD Links in rendered previews open in external browser Source view works better for Textile documents That s the gist of it. I need to figure out how to create a separate fork on GitHub to get this up there, but that will have to wait. For now, have fun with the latest build: 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 More info Your support is greatly appreciated! Or me on GitHub!",
"keywords": ["contents","editor","github","markdown","multimarkdown","table","textile","changelog","donate","download","github","links","markdown","multimarkdown","notational","published","removed","renaming","source","sparkle","textile","updated","velocity","advanced","appreciated","background","black","browser","build","butter","capabilities","changes","color","create","document","documents","doesn","eating","editing","external","figure","going","greatly","jelly","latest","minutes","notes","nvalt","peanut","posting","preview","previews","project","rendered","scheme","separate","snippets","stuff","support","table","updates","weird","while","works"]
},{
"title": "Notational Velocity alternative MultiMarkdown version",
"url": "/2010/12/06/notational-velocity-alternative-multimarkdown-version/",
"tags": ["experiments","hacks","markdown","multimarkdown","notational","notes","velocity"],
"date": "Dec 6th, 2010",
"ts": "1291639020",
"summary": "Updated: the download link on this page now goes to the fourth revision, more information here . After my experiment last night , and finding DivineDominion s already-awesome fork of Notational Velocity , I decided to port my changes over to his fork and work from there. So here s the current version of the final product, with the intial visual changes, CSS styling, and quick access to HTML source for copy/paste. The preview is now in a HUD instead of a third pane, which I m finding I like better. There s more room for editing and the HUD hides on deactivation, so it s not in the way if you switch applications. It turns out that there are still a few changes I d like to make. First and foremost, I want to get it set up so that the MultiMarkdown can render fragments, as I don t think you ever need to copy a full XHTML document out of the preview, and there s a Save HTML button for that purpose. I d also like prettier scrollbars, so I m working on that. I d also like to add some basic Markdown editing features like auto-pairing and wrapping, but my Obj-C string handling skills are a bit lacking. I ll keep you posted. And yes, I ll post the code on GitHub as a fork when I get a chance. 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 More info Your support is greatly appreciated! Or me on GitHub!",
"keywords": ["cascading","github","markdown","multimarkdown","notational","sheets","source","style","velocity","xhtml","acknowledgements","brandon","changelog","divinedominion","donate","download","first","github","markdown","multimarkdown","notational","published","schneirov","source","updated","velocity","walkin","xhtml","zachary","access","additions","advanced","applications","appreciated","awesome","basic","button","bwtoolkit","capabilities","chance","changes","deactivation","decided","document","download","editing","experiment","features","finding","foremost","fourth","fragments","greatly","handling","hides","information","intial","lacking","making","night","nvalt","original","pairing","paste","posted","prettier","preview","product","quick","revision","scrollbars","skills","source","string","stuff","styling","support","switch","think","third","turns","version","visual","working","wrapping"]
},{
"title": "Notational Velocity and MultiMarkdown",
"url": "/2010/12/05/notational-velocity-and-multimarkdown/",
"tags": ["experiments","multimarkdown","notational","notes","velocity"],
"date": "Dec 5th, 2010",
"ts": "1291594260",
"summary": "Update: I was just informed (see comments) about another fork of Notational Velocity which has implemented MultiMarkdown already. It uses a HUD to display the preview, which may be preferable to some users. Check it out either way, the modifications are far more involved than mine. I assume that, since you re here, you probably know what Notational Velocity and MultiMarkdown are. The brief version would be: Notational Velocity is a note-taking, scratchpad type of app with amazing search abilities and great keyboard navigation. It syncs with folders of text (ergo, Dropbox) and SimpleNote . MultiMarkdown is an extension of John Gruber s Markdown which adds a lot of missing functionality such as tables, image attributes and footnotes. I just wanted to be able to use some of the syntax I ve grown accustomed to elsewhere with my Notational Velocity notes. In the process, I made some minor visual tweaks, but nothing crazy. I also updated the CSS for the preview pane to be a little cleaner and handle the footnotes and other new elements. The project had already been forked for Markdown preview , so I just worked from that. The code is available , and you can download the final product below. Minor Update: Just fixed SmartyPants support, download and repo updated. That s it for now, but I would like to sit back down and add a Copy as HTML button to the preview, when I have more time. Another Update: Added a tab to view XHTML source of the preview, mostly for quick copy/paste to HMTL-based editors and fields.",
"keywords": ["cascading","dropbox","markdown","multimarkdown","notational","sheets","style","velocity","xhtml","added","another","check","dropbox","gruber","markdown","minor","multimarkdown","notational","simplenote","smartypants","velocity","xhtml","abilities","accustomed","amazing","another","assume","attributes","available","based","below","brief","button","check","cleaner","comments","crazy","display","download","editors","either","elements","elsewhere","extension","fields","fixed","folders","footnotes","forked","functionality","great","grown","handle","image","implemented","informed","involved","keyboard","little","minor","missing","modifications","mostly","navigation","notes","nothing","paste","preferable","preview","process","product","project","quick","recent","scratchpad","search","since","source","support","syncs","syntax","tables","taking","tweaks","updated","users","version","visual","wanted","worked"]
},{
"title": "Web excursions: December 3 - December 4",
"url": "/2010/12/04/web-excursions-december-3-december-4/",
"tags": ["bookmarks"],
"date": "Dec 4th, 2010",
"ts": "1291503600",
"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. Fuzzy String for Javascript (a quicksilver-like string-comparing utility) Fuzzy String is like QuickSilver on steroids. No joke. I had to tweak it a little to get the array function working, but it s deadly accurate at figuring out what you mean with just a couple of keystrokes. I have many ideas for this. flori/amatch - GitHub This came in really handy for doing best-match comparisons with my Nozbe CLI utility. vim-scripts s arpeggio at master - GitHub Awesome Vim plugin that lets you set mappings for multiple-key combinations, e.g. pressing j k at the same time could remap to an easy home-row escape key. Loving that. Attachment Tags Web Design WordPress Function List Very nice reference website for the latest WordPress template tags.",
"keywords": ["command","editors","github","interface","javascript","quicksilver","wordpress","attachment","awesome","check","design","function","fuzzy","github","javascript","links","loving","nozbe","quicksilver","setapp","string","wordpress","access","accurate","amatch","arpeggio","array","brought","combinations","comparing","comparisons","couple","deadly","doing","escape","excursions","figuring","flori","function","handy","hundreds","ideas","interest","keystrokes","latest","little","mappings","master","match","monthly","multiple","partnership","plugin","pressing","quicksilver","remap","scripts","steroids","string","subscription","template","through","today","tweak","utility","website","working"]
},{
"title": "Web excursions: November 26 - December 2",
"url": "/2010/12/02/web-excursions-november-26-december-2/",
"tags": ["bookmarks"],
"date": "Dec 2nd, 2010",
"ts": "1291309320",
"summary": "Asynchronous Script Loading with LABjs Great overview of LABjs for non-blocking script loads. How To: Build a private collaboration site on WordPress.com in 5 minutes Easy collaboration platform in 5 minutes using WordPress and the P2 template. Plain-Textures.Free textures and backgroud pictures.. Good source for free texture images for all kinds of projects. Justin Blanton Blogging with TextMate, and using AppleScript and JavaScript to ease the pain A few tricks for integrating Safari with TextMate using AppleScript and JavaScript. closetag.vim - Functions and mappings to close open HTML/XML tags : vim online Auto-close open tags in HTML/XML files.",
"keywords": ["applescript","javascript","safari","textmate","wordpress","applescript","asynchronous","blanton","blogging","build","functions","great","javascript","justin","labjs","links","loading","safari","script","textmate","textures","wordpress","backgroud","blocking","close","closetag","collaboration","files","images","integrating","interest","kinds","loads","mappings","minutes","online","overview","pictures","platform","private","projects","script","source","template","texture","textures","through","tricks","using"]
},{
"title": "Markdown QuickTags 0.7",
"url": "/2010/11/28/markdown-quicktags-0-7/",
"tags": ["wordpress","markdown","plugin","quicktags"],
"date": "Nov 28th, 2010",
"ts": "1290961080",
"summary": "Markdown QuickTags, my WordPress plugin which adds extensive Markdown features to the HTML editor, has been upped to 0.7. The download link has actually been incrementing for the last week, but this is the first real stable release, so I ve held off on writing this up until today. The latest version has too many new features to list, but you can get an overview on the plugin page . One of the coolest new features is reference link auto-completion. If you surround some text in square brackets (which you can do just by highlighting the text and hitting the left square bracket key), and then follow it immediately with another pair of square brackets, typing the first letter or two of a reference that already exists in your document will autocomplete the title for you. Square brackets, of course, are auto-paired, so when you type the left bracket, the right one is automatically added and your cursor is placed between them. It s fast. There are improvements to the undo stack, which now records 100 screen states and lets you step forward and back through them using [Shift]-Command/Control-Z. There have been lots of text-editing improvements, and new dialog boxes for pasting bunches of links as references. Note that it will parse links out of any text format, so any list of links even with other text in the paste will turn into a nicely formatted list with automatic titles based on the domain. The plugin has been submitted for approval in the official WordPress Plugin Repository, so hopefully you ll be able to grab it there and get automatic updates shortly. For now, grab it on the plugin s project page .",
"keywords": ["bracket","editor","markdown","wordpress","command","control","markdown","plugin","quicktags","repository","shift","square","wordpress","added","another","approval","autocomplete","automatic","automatically","based","between","boxes","bracket","brackets","bunches","coolest","cursor","dialog","document","domain","download","editing","editor","exists","extensive","features","first","format","formatted","highlighting","hitting","hopefully","improvements","incrementing","latest","letter","links","nicely","official","overview","paired","parse","paste","pasting","placed","plugin","project","references","release","right","screen","shortly","square","stable","stack","states","submitted","surround","through","title","titles","today","typing","updates","upped","using","version","writing"]
},{
"title": " Testing from Vim",
"url": "/2010/11/28/testing-from-vim/",
"tags": [],
"date": "Nov 28th, 2010",
"ts": "1290944100",
"summary": "This is a quick test from the VimPress script to see if I can blog from Vim. I ve got Vim pretty pimped out now, with great themes, great plugins (git support, auto-pairing, auto-completion, Zen Coding, etc.), and I m getting a feel for the commands. It s really neat, and I really like it. That being said, I still dream about TextMate 2.0.",
"keywords": ["editor","editors","emacs","languages","programming","textmate","coding","textmate","vimpress","commands","dream","getting","great","pairing","pimped","plugins","quick","script","support","themes"]
},{
"title": "Web excursions: November 25 - November 26",
"url": "/2010/11/26/web-excursions-november-25-november-26/",
"tags": ["bookmarks"],
"date": "Nov 26th, 2010",
"ts": "1290794400",
"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. msanders s snipmate.vim at master - GitHub Sweet, tab-completed snippets for Vim. ZenCoding.vim - vim plugins for HTML and CSS hi-speed coding. Awesome, there s a Zen Coding plugin for Vim. This is getting to be fun. Using Git with Vim Some links and tips for using Git with Vim. Alf Mikula: Using Spaced Repetition Software to Master Vim Flashcards for Vim commands, if you want to speed up that muscle memory training. CSS Box Shadow Text Shadow Experiments - ZURB Playground - ZURB.com Some cool examples created using CSS3 box-shadow and text-shadow. Soft word wrap in VIM 7 Get a real word wrap for prose editing in Vim, with fixes for cursor navigation. Took me a while to figure this out, so I m sharing to save someone else some time.",
"keywords": ["editors","github","memory","muscle","awesome","coding","experiments","flashcards","github","links","master","mikula","playground","repetition","setapp","shadow","software","spaced","using","zencoding","access","brought","coding","commands","completed","created","cursor","editing","examples","excursions","figure","fixes","getting","hundreds","interest","links","master","memory","monthly","msanders","muscle","navigation","partnership","plugin","plugins","prose","shadow","sharing","snipmate","snippets","speed","subscription","through","training","using","while"]
},{
"title": "Web excursions: November 24 - November 25",
"url": "/2010/11/25/web-excursions-november-24-november-25/",
"tags": ["bookmarks"],
"date": "Nov 25th, 2010",
"ts": "1290708000",
"summary": "Web excursions brought to you in partnership with MindMeister , the best collaborative mind mapping software out there. Daniel Fischer s Blog - A Starting Guide to VIM from Textmate Just in case you re thinking of switching to VIM (or MacVIM), check this out. Quickly Fix Command Line Mistakes with the Carat (C6;) Symbol I always forget about this one. Peg.gd : Markdown Primer A little Markdown primer I put together for my compatriots at TUAW who are interested in learning it, but a little overwhelmed by the primary documentation. It s all be laid out before, probably even more concisely, but I thought I d share what I put together. Plus, I m spreading the word about peg.gd try it out! Stop iTunes after this song A pretty cool little (one line) script to make iTunes stop after the current track. Could be probably expanded to do just about any task after it finishes the track (I think, I ll have to play with that, pending determination of overall usefulness). Check out MindMeister and start brainstorming, collaborating, and boosting productivity.",
"keywords": ["carat","editors","itunes","macvim","textmate","carat","check","command","daniel","fischer","guide","links","macvim","markdown","mindmeister","mistakes","primer","quickly","starting","symbol","textmate","before","boosting","brainstorming","brought","check","collaborating","collaborative","compatriots","concisely","determination","excursions","expanded","finishes","forget","itunes","interest","interested","learning","little","mapping","overall","overwhelmed","partnership","pending","primary","primer","productivity","script","share","software","spreading","switching","think","thinking","thought","through","together","track","usefulness"]
},{
"title": "GMail tip: super-mass editing messages",
"url": "/2010/11/24/gmail-tip-super-mass-editing-messages/",
"tags": ["gmail","quicktip"],
"date": "Nov 24th, 2010",
"ts": "1290618720",
"summary": "You may already know this one, but if you don t, it s pretty handy. I have a typical blogger s inbox, with about 80k messages just from this year. Running searches in GMail only lets you act on 20 messages at a time, so mass label changes, moves, or mark-as-read actions can take forever. I figured there had to be a better way, and there was. If you go into Create a Filter, you can define an advanced boolean search to find all of the messages you want to act on. Put the boolean search into the Has the Words: field, and it will function as expected. In my case, I wanted to remove a label from all of the messages in a given inbox, except for ones which I d starred, so my search was label:lists-tuaw -is:starred . If all you want to do is mass mark a bunch of messages as read, you re pretty much done. Test the search, and then at the top of the search results, just hit Mark as read. If you want to do something more advanced, test your search and then continue to the Next Step. Ignore the warning about not using is: filters, etc., we ll be deleting the filter before it acts on incoming messages anyway. Here, you can set up all of the things you d like to do to the messages matching your search. Archive them, label them, forward or delete them, etc. Then, just check the Also apply filter to xxxx messages below checkbox and hit Create Filter. WARNING: if you re working with thousands of messages, your chance of undoing your change is pretty slim, so proceed cautiously. When you re done, just delete the filter. Mass edit complete!",
"keywords": ["clients","engine","facebook","features","gmail","google","script","search","twitter","archive","create","filter","gmail","ignore","running","scott","warning","words","actions","advanced","anyway","apply","before","below","blogger","boolean","bunch","cautiously","chance","change","changes","check","checkbox","continue","define","deleting","except","expected","field","figured","filter","filters","forever","function","handy","inbox","incoming","label","lists","matching","messages","moves","nailed","remove","results","search","searches","starred","thousands","totally","typical","undoing","using","wanted","warning","working"]
},{
"title": "Web excursions: November 20 - November 21",
"url": "/2010/11/21/web-excursions-november-20-november-21/",
"tags": ["bookmarks"],
"date": "Nov 21st, 2010",
"ts": "1290376860",
"summary": "Web excursions brought to you in partnership with MindMeister , the best collaborative mind mapping software out there. Marco.org - Instapaper s backup method Instapaper s backup method. Strikingly similar to my personal backup method, except I ve replaced BackBlaze with Arq fairly recently. Designing for iPhone 4 Retina Display: Techniques and Workflow - Smashing Magazine On designing for the iPhone 4 s Retina Display. Cocoa with Love: Back to the Mac? 12 features from iOS I d like to see in Lion I think there are dozens of non-user areas where the Cocoa Mac APIs could be improved by integrating approaches from Cocoa Touch APIs. Update Mail bundles yourself Mac OS X Hints Did a Mail.app update break your favorite plugins? Fix em yourself! Check out MindMeister and start brainstorming, collaborating, and boosting productivity.",
"keywords": ["apple","backblaze","display","instapaper","iphone","retina","backblaze","check","cocoa","designing","display","hints","instapaper","links","magazine","marco","mindmeister","retina","smashing","strikingly","techniques","touch","workflow","approaches","areas","backup","boosting","brainstorming","break","brought","bundles","collaborating","collaborative","designing","dozens","except","excursions","fairly","favorite","features","iphone","improved","integrating","interest","mapping","method","partnership","personal","plugins","productivity","recently","replaced","similar","software","think","through","where"]
},{
"title": "Why stick figures matter",
"url": "/2010/11/20/why-stick-figures-matter/",
"tags": ["commentary","personal"],
"date": "Nov 20th, 2010",
"ts": "1290235380",
"summary": "I agree with a lot of what Neven Mrgan has to say, and hold his opinions in high regard. Case in point: his piece on The Walled Garden. However, his most recent post , in my opinion, requires a response. It s a mundane issue, and so is this counterpoint, but I just couldn t let it go. Neven states that xkcd would be funnier if it were text-only, taking issue with the bad art. I m not going to argue with his aesthetic sensibilities it is crudely drawn. What I do contest is the idea that it would be funnier without the drawings. The figures positioning and rudimentary expressions offer the absolutely necessary sense of timing, as does the frame-based nature of the strip in general. Without this rough staging, many of the brilliantly geeky jokes would fall flat. A plain-text version of xkcd would be about as funny as Two and a Half Men. That is to say, occasionally chuckle-worthy, but never, ever worth forwarding to anyone else.",
"keywords": ["garden","mrgan","munroe","neven","randall","walled","garden","however","mrgan","munroe","neven","randall","walled","aesthetic","agree","anyone","argue","based","brilliantly","chuckle","contest","couldn","counterpoint","crudely","drawings","expressions","family","figures","forwarding","frame","funnier","funny","geeky","general","going","jokes","mundane","nature","necessary","occasionally","offer","opinions","piece","point","positioning","recent","requires","response","rough","rudimentary","sense","sensibilities","staging","states","strip","taking","timing","version","wishes","worth","worthy"]
},{
"title": "SMS from the command line with Google Voice",
"url": "/2010/11/19/sms-from-the-command-line-with-google-voice/",
"tags": ["googlevoice","hacks","terminal"],
"date": "Nov 19th, 2010",
"ts": "1290232440",
"summary": "I needed a script send an SMS today, and I found a very handy post at sudocode to send one via Google Voice , using PHP. I wanted to make it a little more command-line-friendly, so I rewrote it (ham-handedly) in Ruby and added some options parsing to it. It s designed for and only tested on OS X, but may work fine elsewhere. To use it, copy the code below into a text file, save it as voicesms.rb (or download it directly using the link at the top of the code), and run from the command line to make it executable. options = {} optparse = OptionParser.new do|opts| opts.banner = "Usage: voicesms.rb -n +15554443333[,+15554442222] -m \\"Message to send\\" [-u Username:Password]" options[:numbers] = NUMBERS opts.on( '-n', '--numbers NUM[,NUM]', 'Phone numbers to SMS (separate multiples with comma)' ) do|numbers| options[:numbers] = numbers.split(',') end options[:message] = false opts.on( '-m', '--message MESSAGE', 'Message to send' ) do|msg| options[:message] = msg end options[:username] = ACCOUNT options[:password] = PASSWORD opts.on( '-u', '--user USERNAME:PASSWORD', 'Google Voice username and password' ) do|creds| parts = creds.split(':') options[:username] = parts options[:password] = parts end opts.on( '-h', '--help', 'Display this screen' ) do puts opts exit end end optparse.parse! unless options[:message] puts "Message required. Use -m \\"MESSAGE\\"." puts "Enter voicesms.rb -h for help." exit end def postit(uri_str, data, header = nil, limit = 3) raise ArgumentError, 'HTTP redirect too deep' if limit == 0 url = URI.parse(uri_str) http = Net::HTTP.new(url.host,443) http.use_ssl = true http.verifymode = OpenSSL::SSL::VERIFYNONE response,content = http.post(url.path,data,header) case response when Net::HTTPSuccess then content when Net::HTTPRedirection then postit(response['location'],data,header, limit - 1) else puts response.inspect response.error! end end def getit(uri_str, header, limit = 3) raise ArgumentError, 'HTTP redirect too deep' if limit == 0 url = URI.parse(uri_str) http = Net::HTTP.new(url.host,url.port) http.use_ssl = true http.verifymode = OpenSSL::SSL::VERIFYNONE response,content = http.get(url.path,header) case response when Net::HTTPSuccess then content when Net::HTTPRedirection then getit(response['location'],header, limit - 1) else response.error! end end data = "accountType=GOOGLE Email=#{options[:username]} Passwd=#{options[:password]} service=grandcentral source=brettterpstra-CLISMS-",
"keywords": ["caldav","cloud","connect","google","googlevoice","interface","programming","reader","'authorization'","'content","'display","'google","'http","'message","'phone","'cgi'","'https","'location'","'open","'optparse'","account","aliasing","argumenterror","clisms","clientlogin'","email","enter","error","google","gvoicepassword","gvoiceusername","google","googlelogin","httpredirection","httpsuccess","however","length'","message","message'","message","numbers","openssl","optionparser","password","password'","parameters","passwd","password","username","usage","username","verify","voice","whoever","account","accounttype","accounts","added","alias","aliases","authcode","authentication","automate","banner","beginning","below","brettterpstra","client","combination","comma","command","commas","connections","content","convenient","country","creds","deep'","default","defines","designed","destination","different","directly","download","elsewhere","email","error","escape","executable","false","finalres","format","found","friendly","function","functions","getit","google","grandcentral","handedly","handle","handy","header","headers","help'","http'","https","https'","ignore","information","initial","inspect","international","invocation","limit","little","match","maybe","message","messages","multiples","needed","newres","numbers","options","optparse","overridden","parameter","parameters","parse","parsing","parts","password","password'","phone","phonenumber","point","postit","posts","primary","proper","quoted","raise","redirect","requests","required","response","rewrote","rnrse","runtime","screen'","script","scripts","securely","send'","sending","separate","separated","series","service","several","simple","smsjohn","source","spaces","split","standard","straight","strip","sudocode","syntax","system","takes","tested","texting","today","token","username","using","utility","verify","voice","voice'","voicesms","wanted"]
},{
"title": "Web excursions: November 18 - November 19",
"url": "/2010/11/19/web-excursions-november-18-november-19/",
"tags": ["bookmarks"],
"date": "Nov 19th, 2010",
"ts": "1290209100",
"summary": "Web excursions brought to you in partnership with MindMeister , the best collaborative mind mapping software out there. Google Voice Add-on Development Post Topic - Open For Discussion Includes a list of endpoints for the Google Voice API, great fun for fans. Sending a Google Voice SMS using PHP sudocode Send SMS messages via PHP. Takes a little tweaking, in my experience, but works well from the command line. I m working up a version that throws fewer errors and takes command line arguments Starter Jumpstart Your jQuery Plugin Development Cool little web app for creating a jQuery plugin skeleton with your own classname, namespace and options. How to create a mobile WordPress theme with jQuery Mobile - CatsWhoCode.com A tutorial on creating a mobile-optimized WordPress theme using jQuery Mobile. Cocoa with Love: A deployment script for a generic Cocoa Mac application A combination bash/perl/Applescript to handle committing code into a repository, updating version numbers and packaging the application as a DMG disk image. Check out MindMeister and start brainstorming, collaborating, and boosting productivity.",
"keywords": ["development","google","jquery","tools","wordpress","applescript","catswhocode","check","cocoa","development","discussion","google","includes","jumpstart","links","mindmeister","mobile","plugin","sending","starter","takes","topic","voice","wordpress","arguments","boosting","brainstorming","brought","classname","collaborating","collaborative","combination","command","committing","create","creating","deployment","endpoints","errors","excursions","experience","fewer","generic","great","handle","image","interest","jquery","little","mapping","messages","mobile","namespace","numbers","optimized","options","packaging","partnership","plugin","productivity","repository","script","skeleton","software","sudocode","takes","theme","through","throws","tutorial","tweaking","updating","using","version","working","works"]
},{
"title": "Web excursions: November 12 - November 17",
"url": "/2010/11/17/web-excursions-november-12-november-17/",
"tags": ["bookmarks"],
"date": "Nov 17th, 2010",
"ts": "1290016800",
"summary": "Web excursions brought to you in partnership with MindMeister , the best collaborative mind mapping software out there. Editing your Google Docs on the go - Official Google Docs Blog We re excited that the new documents editor now supports editing on your mobile browser. (includes iPhone and iPad!) jQuery s Data Method How and Why to Use It Tutorialzine Great rundown on .data(). I m especially intrigued by the event handlers, which I haven t previously taken advantage of. LinkThing - Safari Extensions by Canisbos A very cool extension that provides some of my favorite Tab functionality from Glims . Open tab to the right or left of current, plus a lightweight status bar that just shows you the url for links, allowing you to hide the real status bar if that s all you need it for. 960px grid templates Robbie Manson Photoshop and Fireworks 960 Grid templates, filling in the blanks from 3 columns to 16 columns (and everything between). For people who need a little more flexibility than the average framework offers. Check out MindMeister and start brainstorming, collaborating, and boosting productivity.",
"keywords": ["engines","google","iphone","search","searching","canisbos","check","editing","extensions","fireworks","glims","google","great","linkthing","links","manson","method","mindmeister","official","photoshop","robbie","safari","tutorialzine","advantage","allowing","average","between","blanks","boosting","brainstorming","brought","browser","collaborating","collaborative","columns","documents","editing","editor","especially","everything","excited","excursions","extension","favorite","filling","flexibility","framework","functionality","handlers","haven","iphone","includes","interest","intrigued","jquery","lightweight","links","little","mapping","mobile","offers","partnership","people","previously","productivity","provides","right","rundown","shows","software","status","supports","taken","templates","through"]
},{
"title": "Web excursions: November 10 - November 12",
"url": "/2010/11/12/web-excursions-november-10-november-12/",
"tags": ["bookmarks"],
"date": "Nov 12th, 2010",
"ts": "1289581200",
"summary": "Web excursions brought to you in partnership with MindMeister , the best collaborative mind mapping software out there. WordPress Hidden Gems: checked(), selected(), and disabled() useful functions that aren t listed in the Codex: checked(), selected(), and disabled(). Insync - Awesome sync technology for Gmail and Google Apps users This is awesome. It s Dropbox for your Google Docs. Instant two-way sync and full .doc and .xls conversion. Plus, share files directly from Finder! Putting FTP Info in wp-config.php to Ease Updates If you just want to fix it and not fiddle with plugins or fancy server altering techniques [ ] you can provide [FTP] details in your wp-config.php file and auto upgrading will be back to just working . Backup Your Wordpress Blog to Dropbox! - Surfbits s posterous wpTimeMachine is another useful WordPress plugin that makes it easy for you to backup your entire WordPress blog to your Dropbox account. jaz303 s tipsy at master - GitHub A Facebook-style tooltip plugin for jQuery, and my new favorite tooltip plugin in general. Compact tooltips, flexible selectors and almost nil overhead. Awesome. Panic Blog 15 Secrets of Transmit 4 Some awesome tips for making the most of Transmit 4. I m actually back to using Transmit after a bout of loud complaining. Most issues are resolved, and it really is fast (and pretty). Check out MindMeister and start brainstorming, collaborating, and boosting productivity.",
"keywords": ["dropbox","github","google","protocol","tools","wordpress","awesome","backup","check","codex","compact","dropbox","facebook","finder","github","gmail","google","hidden","instant","insync","links","mindmeister","panic","putting","secrets","surfbits","updates","wordpress","wordpress","account","almost","altering","another","awesome","backup","boosting","brainstorming","brought","checked","collaborating","collaborative","complaining","config","conversion","details","directly","disabled","entire","excursions","fancy","favorite","fiddle","files","flexible","functions","general","interest","issues","jquery","listed","makes","making","mapping","master","overhead","partnership","plugin","plugins","posterous","productivity","resolved","selected","selectors","server","share","software","style","techniques","technology","through","tipsy","tooltip","tooltips","upgrading","useful","users","using","working","wptimemachine"]
},{
"title": "Markdown QuickTags: WordPress plugin for Markdown lovers",
"url": "/2010/11/12/markdown-quicktags-wordpress-plugin/",
"tags": ["wordpress","experiments","markdown","plugin","quicktags"],
"date": "Nov 12th, 2010",
"ts": "1289574300",
"summary": "Introducing Markdown Quicktags, a new WordPress plugin for Markdown lovers! If you edit your blog in Markdown, whether you publish that way or not, this plugin will make your life almost 37% better. It s quickly turning out to be one of the coolest things I think I ve ever done! It replaces the default QuickTags in the WordPress HTML editor with a set of Markdown-optimized tags, with plenty of extra features. I had mentioned discovering a non-intrusive way to edit the WordPress QuickTags the other day, and then my insomnia took it to this level. I basically put most of my favorite features of TextMate into a textarea. Auto pairing and selection wrapping, list generation from multipe lines, indentation preservation, parsing multiple urls from pasted text, and more. The buttons are really just the beginning. Note that this plugin in BETA. It has a ways to go, and you ll probably find glitches. Please give it a try, though, and let me know what you think, either in the comments here, or contact me directly . Once I feel like this is stable, I ll add it to the WordPress plugin repository ( check it out in the WordPress plugins ) and you ll be able to get automatic updates. For now, please check back to get the latest versions. The download link will always be up to date throughout the blog, and when I push the next tagged release, I ll start a changelog on the project page . The next step is to modify this into a Safari Extension which will allow any text field to become a Markdown Editor. The basic editing features will probably also turn into a jQuery plugin. For now, WordPress users who love Markdown should go get it ! Your support is greatly appreciated! Or me on GitHub!",
"keywords": ["directory","jquery","markdown","plugin","publishers","textmate","tools","wordpress","editor","extension","github","introducing","markdown","quicktags","quicktags","safari","textmate","wordpress","allow","almost","appreciated","automatic","basic","beginning","buttons","changelog","check","comments","contact","coolest","default","directly","discovering","download","editing","editor","either","extra","favorite","features","field","generation","glitches","greatly","indentation","insomnia","intrusive","jquery","latest","level","lovers","mentioned","modify","multipe","multiple","optimized","pairing","parsing","pasted","plenty","plugin","plugins","preservation","project","publish","quickly","release","replaces","repository","selection","stable","support","tagged","textarea","think","throughout","turning","updates","users","versions","wrapping"]
},{
"title": "Odd-looking products, ugly websites and one very happy customer",
"url": "/2010/11/09/odd-looking-products-ugly-websites-and-one-very-happy-customer/",
"tags": ["marketing","personal"],
"date": "Nov 9th, 2010",
"ts": "1289350260",
"summary": "I hope that the folks at BSR will forgive me for picking on their website s aesthetics, as I have nothing but good things to say about the company and their products. I ve been looking for the right pair of headphones for a long, long time. Almost as long as I ve been looking for the right keyboard. I ve amassed plenty of both, and am to the point where I m selective (and cynical) about any new finger or ear accessory I try. I had recently purchased a pair of headband sleep headphones (that are super comfortable, pristine audio be damned) and was heading back to Amazon to get a pair for my wife as well. I saw a sponsored link on the product page for a pair of earbuds that wouldn t fall out. I ve never followed a sponsored link before, but given that I ve never found earbuds that would stay in for long, even when sitting still I wanted to know more. While mildly distracted by the visual noise of the website, I found the info I wanted pretty quickly. I also found copy that was written by a human, not a marketing robot, and their passion for the product quickly convinced me to give it a shot. I scrolled down the page, actually ready to pay a hefty price to try these awkward-looking headphones out. The price was surprisingly low, and I bit. In retrospect, now that I m holding these earbuds in my hands, the price was too low. They re easily worth twice what s being charged. They came with a full set of different size cups for the earpiece. The three sizes included weren t enough to ensure that every customer found a fit, though, so an extra small pair in a plastic sleeve was taped to the outside of the packaging. The shipping was prompt (immediate), there was a thank you email instead of a receipt, and the entire experience left me feeling like all of the other online shopping I do is lacking. I m impressed. If you re looking for a great-sounding headphones with practical styling, these do live up to their word. As far as e-commerce goes, it was the little touches (that can only be efficiently provided by a small operation) that made me feel like, well, shopping at an independent retailer instead of going to Wal-Mart, which does make me happy. Count me as a fan.",
"keywords": ["audio","business","consumer","electronics","headphone","iphone","shopping","almost","amazon","count","while","accessory","aesthetics","amassed","audio","awkward","before","charged","comfortable","commerce","company","convinced","customer","cynical","damned","different","distracted","earbuds","earpiece","easily","efficiently","email","enough","entire","experience","extra","feeling","finger","folks","followed","forgive","found","going","great","hands","happy","headband","heading","headphones","hefty","holding","human","immediate","impressed","included","independent","keyboard","lacking","little","looking","marketing","mildly","noise","nothing","online","operation","outside","packaging","passion","picking","plastic","plenty","point","practical","price","pristine","product","products","prompt","purchased","quickly","ready","recently","retailer","retrospect","right","robot","scrolled","selective","shipping","shopping","sitting","sizes","sleep","sleeve","small","sounding","sponsored","styling","super","surprisingly","taped","thank","touches","twice","visual","wanted","website","weren","where","worth","wouldn","written"]
},{
"title": "Web excursions: November 9",
"url": "/2010/11/09/web-excursions-november-9/",
"tags": ["bookmarks"],
"date": "Nov 9th, 2010",
"ts": "1289332800",
"summary": "Web excursions brought to you in partnership with MindMeister , the best collaborative mind mapping software out there. Supersized 3.0 Full Screen Background Slideshow jQuery Plugin It s been a year, but the esteemed Supersized jQuery slideshow plugin has revved up to 3.0. Using CSS Text-Shadow to Create Cool Text Effects Just when I thought I d seen the craziest things you could do with text shadows in CSS3, Line25 proves me wrong. Some of them are quite elegant, actually, and no crazy code. CSS Border Radius An elegant tool for grabbing cross-browser syntax for CSS3 rounded corners. My TextExpander snippets can remember this for me, but it s great to have an always-available tool. Zepto.js the aerogel-weight mobile javascript framework A 2k JavaScript framework for mobile WebKit browsers. It s not jQuery, but If you know jQuery syntax, you know Zepto.js. The Inspiration Stream A stunning, hand-curated collection of inspiring works, compiled by Veerle. Check out MindMeister and start brainstorming, collaborating, and boosting productivity.",
"keywords": ["cascading","javascript","jquery","library","luttrell","sheets","style","webkit","xhtml","background","border","check","create","effects","inspiration","javascript","links","mindmeister","plugin","radius","screen","shadow","slideshow","stream","supersized","textexpander","using","veerle","webkit","zepto","aerogel","available","boosting","brainstorming","brought","browser","browsers","collaborating","collaborative","collection","compiled","corners","craziest","crazy","cross","curated","elegant","esteemed","excursions","framework","grabbing","great","inspiring","interest","jquery","javascript","mapping","mobile","partnership","plugin","productivity","proves","remember","revved","rounded","shadows","slideshow","snippets","software","stunning","syntax","thought","weight","works","wrong"]
},{
"title": "Web excursions: November 5 November 7",
"url": "/2010/11/07/web-excursions-november-5-november-7/",
"tags": ["bookmarks"],
"date": "Nov 7th, 2010",
"ts": "1289149200",
"summary": "Web excursions brought to you in partnership with MindMeister , the best collaborative mind mapping software out there. Less Framework 2 Everyone writes css differently. Less Framework takes this into account by having a minimal set of features, and does away with things like predefined classes. The Ultimate HTML5 Resources Roundup A very complete collection of currently available tutorials, websites, books, frameworks and videos regarding HTML5. YouTube5 Version 2 Automagically replace YouTube videos with their HTML5 versions. Includes custom player and two sticks of awesomeness. HTML5Audio Safari Extension HTML5Audio Safari extension currently replaces the default Tumblr audio player (with or without Flash) and WordPress Audio Player (without Flash).Combined with Connor McCay s YouTube5 plugin, the web is a little more awesome, at least from a Safari 5 point of view. Check out MindMeister and start brainstorming, collaborating, and boosting productivity.",
"keywords": ["adobe","connor","flash","safari","tumblr","youtube","audio","automagically","check","connor","everyone","extension","flash","framework","includes","links","mccay","mindmeister","player","resources","roundup","safari","tumblr","ultimate","version","wordpress","youtube","account","audio","available","awesome","awesomeness","books","boosting","brainstorming","brought","classes","collaborating","collaborative","collection","custom","default","differently","excursions","extension","features","frameworks","having","interest","little","mapping","minimal","partnership","player","plugin","point","predefined","productivity","replace","replaces","software","sticks","takes","through","tutorials","versions","videos","websites","writes"]
},{
"title": "Edit your WordPress QuickTags the right way",
"url": "/2010/11/06/edit-your-wordpress-quicktags-the-right-way/",
"tags": ["wordpress","hacks","markdown","quicktags"],
"date": "Nov 6th, 2010",
"ts": "1289056080",
"summary": "You may have cause, at some point, to modify the behavior of the QuickTags in the HTML editor of WordPress (the non-WYSIWYG, non- Visual editor). There are a lot of tutorials available for editing the quicktags.js file in the WordPress wp-includes folder, but they all seem to want you to edit the file directly. That s a Bad Idea because the next time you upgrade, your changes are kaput. Here s how to make your own quicktags.js and do whatever you want with it. There are some perfectly capable plugins for adding new buttons, too. This morning I wanted to change the behavior of existing buttons, though, so it came down to this. This post is directed toward people who are at least moderately comfortable editing php and javascript. I m not going to go into a lot of detail on the actual edits, but will get you started on modifying your QuickTags and provide some source code. Go into the /wp-includes/js folder and find quicktags.dev.js. Copy it to your template folder (or any subfolder) and rename it quicktags.js. Edit the file. The code has some localization in it which we re about to break, so search for quicktagsL10n and replace every instance with an appropriate, quoted string. For example, you ll find , which should be replaced with something like Enter the URL . You can find all of the original strings in /wp-includes/script-loader.php, if you like. /p Now you can edit the buttons and functions as you see fit. There s a pretty good overview at Tamba2 . You ll notice that some buttons have functions associated with them, such as the link and img buttons, so be sure to edit those as well if you re modifying those buttons. Now we just need to change which script gets called when you re in the post editor. Add the following to your theme s functions.php file: Modify the path in wpregisterscript to point to the location where you put your quicktags.js file. This will tell WordPress to load your file instead of its own. Now, edit a new post (in the HTML editor, not the Visual editor) to test out your changes. If everything is correct, modified and new buttons should show up and function the way you want. Your changes will persist, even after a WordPress upgrade! Here s my copy of quicktags.js, modified to turn it into a Markdown editor. Your support is greatly appreciated! Or me on GitHub!",
"keywords": ["computer","editor","locator","markdown","resource","visual","wordpress","wysiwyg","enter","github","markdown","modify","overriding","quicktags","tamba","visual","wysiwyg","wordpress","adding","appreciated","associated","available","because","behavior","break","buttons","called","capable","cause","change","changes","comfortable","detail","directed","directly","editing","editor","edits","everything","example","folder","function","functions","going","greatly","includes","instance","javascript","kaput","loader","localization","location","moderately","modified","modify","modifying","morning","original","overview","people","perfectly","persist","plugin","plugins","point","project","quicktags","quicktagsl","quoted","register","rename","replace","replaced","script","search","source","started","string","strings","subfolder","support","template","theme","toward","tutorials","upgrade","wanted","whatever","where"]
},{
"title": "Web excursions: November 4 - November 5",
"url": "/2010/11/05/web-excursions-november-4-november-5/",
"tags": ["bookmarks"],
"date": "Nov 5th, 2010",
"ts": "1288983600",
"summary": "Web excursions brought to you in partnership with MindMeister , the best collaborative mind mapping software out there. mod_pagespeed Overview From Google: mod_pagespeed is an open-source Apache module that automatically optimizes web pages and resources on them. It does this by rewriting the resources using filters that implement web performance best practices. jQuery source viewer A fast interface for quickly traversing the source code for jQuery methods source. Type in a jQuery method name and see the corresponding code. The protocol-relative URL A little URL trick: If the browser is viewing that current page through HTTPS, then it will request that asset with the HTTPS protocol prevents This Page Contains Both Secure and Non-Secure Items error message in IE. Quicksand A jQuery plugin which aims at providing a web experience similar to CoreAnimation on Macs. Check out MindMeister and start brainstorming, collaborating, and boosting productivity.",
"keywords": ["apache","google","jquery","locator","programming","resource","source","apache","check","contains","coreanimation","google","https","items","links","mindmeister","overview","quicksand","secure","asset","automatically","boosting","brainstorming","brought","browser","collaborating","collaborative","corresponding","error","excursions","experience","filters","interest","interface","jquery","little","mapping","message","method","methods","module","optimizes","pages","pagespeed","partnership","performance","plugin","practices","prevents","productivity","protocol","providing","quickly","relative","resources","rewriting","similar","software","source","through","traversing","trick","using","viewer","viewing"]
},{
"title": "Four WordPress Plugins I love",
"url": "/2010/11/05/four-wordpress-plugins-i-love/",
"tags": ["wordpress","plugin"],
"date": "Nov 5th, 2010",
"ts": "1288959600",
"summary": "I know some people have been moving away from WordPress and toward blogging solutions like Tumblr. The number one reason I hear for making this move is that WordPress gets to complicated once you start customizing. Distractingly so. I don t disagree. I love tweaking WordPress websites, though, and have built quite a few of them. The plugin community is part of what makes it so much fun. I m constantly amazed by the creativity and craftsmanship I see go into these projects. Most of them don t make any money, but I thought I d show you a few I ve been more than happy to donate to. There are a few bedrock plugins that I think everyone should have, and as such I m only going to mention them in passing: W3 Total Cache , Markdown Extra , and of course, Akismet. There are others, though, that I hadn t heard much about before, yet they ve become integral to my current blog. Here are my plugin crushes right now Updraft I ve tried quite a few plugins for backing up my blog, but all have eventually failed me, with the exception of Updraft. I think its simplicity is its saving grace it doesn t try to be anything more than a hassle-free way to back up your entire WordPress blog, including uploads, themes and database. I m using it to back up to my Amazon S3 account, and it also works with Rackspace, your own FTP server, or, if you really want to, it can email your backups to you. It can purge older backups, and the restore feature is as fast as your storage system of choice. Fluency Admin This one is just wicked. It s a theme for the admin panel which not only looks amazing, it adds extensive keyboard navigation to the back end. If you know me, you know that makes me happy. Postalicious I ve been toying a lot with how to share my bookmarks and web trails lately. Postalicious came along and made it easy to post groups of links to my blog automatically, and with complete control over formatting. Right now I have it pulling from Delicious, waiting until there are at least 4 new bookmarks (and not more than 6) with the tag blogit, and publishing the list with links and my notes, and the date in the title. All I have to do is pop up Delibar once in a while and bookmark something I think is worth sharing. Postalicious also works with ma.gnolia, Google Reader, Reddit, Yahoo Pipes and Jumptags. WP-Syntax Download Extension WP-Syntax is a great solution for code highlighting. It s taken me a lot of tweaking to get it running, and I hadn t liked the idea of",
"keywords": ["akismet","amazon","backup","cache","jumptags","protocol","syntax","wordpress","admin","akismet","amazon","cache","delibar","delicious","distractingly","download","extension","extra","fluency","google","jumptags","markdown","pipes","postalicious","rackspace","reader","reddit","right","syntax","tumblr","updraft","wordpress","yahoo","above","account","admin","ahead","allows","amazed","amazing","automatically","backing","backup","backups","bedrock","before","blogging","blogit","bookmark","bookmarks","built","choice","combination","community","complicated","concerns","constantly","control","craftsmanship","creativity","crushes","customizing","database","disagree","doesn","donate","download","email","entire","eventually","everyone","exception","extension","extensive","failed","feature","force","formatting","front","gnolia","going","grace","great","groups","happy","hassle","haven","heard","highlighted","highlighting","including","ingenious","integral","intrigued","keyboard","liked","links","looks","makes","making","mention","money","moving","navigation","notes","offering","older","others","panel","passing","people","plugin","plugins","projects","publishing","pulling","purge","rather","restore","right","running","saving","server","share","sharing","simplicity","solution","solutions","solves","source","storage","syntax","system","taken","theme","themes","think","thought","title","toward","toying","trails","tried","tweaking","uploads","users","using","waiting","websites","while","wicked","works","worth"]
},{
"title": "Web excursions: November 4",
"url": "/2010/11/04/web-excursions-november-4/",
"tags": ["bookmarks"],
"date": "Nov 4th, 2010",
"ts": "1288897200",
"summary": "Web excursions brought to you in partnership with MindMeister , the best collaborative mind mapping software out there. Dropbox Uploader Dropbox Uploader is a PHP class which can be used to upload files to Dropbox, an online file synchronization and backup service. Aside Revisited HTML5 Doctor This is an update to a previous article. The spec has changed to allow aside to be used for secondary content, changing its context depending on whether it s contained within an article. NameChecklist - Find your name the easy way! Use namechecklist to check if your brandname, username, domain and vanity url are still available on the worldwide web. Best Practices of Combining Typefaces - Smashing Magazine Some best practices when combining fonts in a design. When used with diligence and attention, these principles will always yield suitable results. Make Dropbox Public Links Download Files Instead of Viewing Them In-Browser A lot of filetypes will automatically open up in their browser. Here s how to get Dropbox to force downloads instead. Spoiler: add (public links only) Check out MindMeister and start brainstorming, collaborating, and boosting productivity.",
"keywords": ["browser","dropbox","synchronization","world","aside","browser","check","combining","doctor","download","dropbox","files","links","magazine","mindmeister","namechecklist","practices","public","revisited","smashing","spoiler","typefaces","uploader","viewing","allow","article","aside","automatically","available","backup","boosting","brainstorming","brandname","brought","browser","changed","changing","check","class","collaborating","collaborative","combining","contained","content","context","depending","design","diligence","domain","downloads","excursions","files","filetypes","fonts","force","interest","links","mapping","namechecklist","online","partnership","practices","principles","productivity","public","results","secondary","service","software","suitable","synchronization","upload","username","vanity","within","worldwide","yield"]
},{
"title": "Pully: jQuery plugin for automatic pull quotes",
"url": "/2010/11/04/pully-jquery-plugin-for-automatic-pull-quotes/",
"tags": ["experiments","javascript","jquery","plugin"],
"date": "Nov 4th, 2010",
"ts": "1288884600",
"summary": "Another quick experiment. Honestly, I don t use pluggable functions in jQuery nearly as much as I should, so this is really just a brain exercise to get myself used to it. This one, called Pully, lets you specify a selector to have its contents cloned and inserted as a pull quote in your text. It seems to me that the average HTML pull quote, when you look at it from a source code or screen reader viewpoint, is redundant and/or confusing. They really only make sense when they re visually styled. My thought is to use semantic markup within a block of content to emphasize pull-quotable text, and then unobtrusively create the pull quote from that text when it s of use. I could be operating under faulty assumptions, but it makes sense to me tonight. Pully has two options, and . determines the class that is added to the inserted pull quote element, and defaults to pullyquote . determines whether the pull quote element is inserted inline (directly before the selected source element) or moved up in the DOM and prepended to a parent element. It defaults to (inline) and can be set to any element found upstream in the DOM from the source. In its simplest usage, you can take a paragraph which contains a span with a class of .pullquote (for example) and call it like this: Here s an example of Pully being run with all options. This call will take an block inside of a element and turn it into the pullquote. It will insert the new element at the beginning of the enclosing paragraph and apply the class ppullquote to it: You ll need to provide your own CSS. Unless otherwise specified, your pullquote will have a class of pullyquote, to which you can apply whatever styles are most fitting. I borrowed some styles from type-a-file for the demo, the pertinent portions are included in the main source of the demo page. You can download the plugin here , and view it in action here . Feel free to modify, repair or improve on the idea.",
"keywords": ["cascading","document","element","jquery","model","object","quote","sheets","source","style","another","download","honestly","pully","action","added","apply","assumptions","average","before","beginning","block","borrowed","brain","called","class","cloned","confusing","contains","content","contents","create","defaults","determines","directly","download","element","emphasize","enclosing","example","exercise","experiment","faulty","fitting","found","functions","improve","included","inline","inserted","inside","jquery","makes","markup","modify","moved","myself","nearly","operating","options","paragraph","parent","pertinent","pluggable","plugin","portions","ppullquote","prepended","pullquote","pullyquote","quick","quotable","quote","reader","redundant","repair","screen","seems","selected","selector","semantic","sense","simplest","source","specify","styled","styles","thought","tonight","under","unobtrusively","upstream","usage","viewpoint","visually","whatever","within"]
},{
"title": "VoodooPad log navigation plugins",
"url": "/2010/11/04/voodoopad-log-navigation-plugins/",
"tags": ["logging","scripting","voodoopad"],
"date": "Nov 4th, 2010",
"ts": "1288851720",
"summary": "These VoodooPad Script Plugins are the result of two opposing traits of mine: laziness and curiosity. Laziness because, well, why should I have to move my hand all the way over to my mouse to go to the previous day in my VoodooPad log? Curiosity because I have absolutely no idea what I m doing in Lua and wanted to see if I could do something just slightly more interesting than my Go to Today script. What I ended up with is a set of three Script Plugins. The original Go to Today plugin, plus new ones for going to the previous and next entry in your log. They work with a VoodooPad document which has pages that follow a consistent, date-based naming pattern. My log 1 has a page per day, titled in the format YYYY-MM-DD. The scripts can all be adjusted to work with any format that mktime() can output, with a little fiddling 2 . The plugins are mapped to Control-Shift-0 (today) and Control-Shift(+/-) for next and previous. The scripts can handle non-consecutive days, and will just keep searching forward or backward for the next date in the sequence from the current page. They ll fail silently once it s checked as many pages as there are in the document. If you trigger them on a page with a non-date-based title, they ll just exit without causing much trouble. To install the plugins, just download the zip file below, unzip it, and move the resulting .lua files into . The folder should already exist, but create it if it doesn t. Then launch or relaunch VoodooPad, and you should see the new scripts under the Plugins menu. VoodooPad log navigation v1 Download VoodooPad log navigation v1 VoodooPad Script Plugins for navigating through a log/journal document with date-based page names. Go To Today, Go To Previous Day and Go To Next Day. Published 11/04/10. Updated 11/04/10. Changelog Donate More info Your support is greatly appreciated! Or me on GitHub! Using Ian Beck s Scratchpad scripts . To change the date format, first edit the dateFormat variable at the top, using mktime() placeholders. Then, find the line that starts with year,month,day = and change the search pattern to fit your dateFormat s output. Just put %d in wherever there s a digit, and modify the separators as needed. That s it.",
"keywords": ["calendar","javascript","voodoopad","changelog","control","curiosity","donate","download","github","installation","laziness","plugins","published","scratchpad","script","shift","today","updated","using","voodoopad","adjusted","appreciated","backward","based","because","below","causing","change","checked","consecutive","consistent","create","curiosity","dateformat","digit","document","doesn","doing","download","ended","entry","exist","fiddling","files","first","folder","format","going","greatly","handle","install","interesting","journal","launch","laziness","little","mapped","mktime","modify","mouse","names","naming","navigating","navigation","needed","opposing","original","output","pages","pattern","placeholders","plugin","plugins","relaunch","resulting","script","scripts","search","searching","separators","sequence","silently","slightly","starts","support","through","title","titled","today","traits","trigger","trouble","under","unzip","using","variable","wanted","wherever"]
},{
"title": "A little rock and roll: Inconsequential Martyr",
"url": "/2010/11/01/a-little-rock-and-roll-inconsequential-martyr/",
"tags": ["music","personal","precious"],
"date": "Nov 1st, 2010",
"ts": "1288650600",
"summary": "And now for something entirely different I wanted to test out GarageBand 11 as a musical scratchpad, so I put this together last night (also my first recording with an electric guitar). It s mostly first takes (which is especially obvious on the vocal tracks) because I wanted to see how well the app worked for just getting ideas out of my head. My conclusion: it works really well. The Groove Sync and Flex Timing fixed a lot of little mistakes. If only it had an autotuner (you ll say, I m sure). I ll probably do my best to clean things up at some point, so I figured I d post the rough draft for a point of comparison later. The song is one I wrote shortly after moving back to Winona, fresh out of rehab. I had a pretty negative view of this town at the time, after a long stint of living in more metropolitan areas. My impression of this little city on the Mississippi is much more cheerful after a few years of being back in small-town Minnesota. I keep the old lyrics, though, because they help me see how much things change over time. The main riff is courtesy of my friend Adele Murray. We jammed on it once long ago it was actually my impetus for learning palm muting. Hopefully she doesn t mind me using it in this little scratchpad experiment And I m standing on the corner praying, waiting for the ambulance sorry that I ever went and took that chance The siren makes its way through all of the ramblers but the man says sorry son, this train don t carry no gamblers.",
"keywords": ["damascus","garageband","martyr","minnesota","mississippi","roulette","syria","accidental","adele","another","chorus","garageband","groove","hopefully","inconsequential","martyr","minnesota","mississippi","murray","timing","winona","aching","ambulance","applauded","areas","audacity","autotuner","bangin","because","began","breath","breathing","carry","caught","chance","change","cheerful","clean","collision","comparison","contact","corner","courtesy","decision","different","doesn","draft","dying","electric","entirely","especially","experiment","falling","feeling","figured","first","fixed","fresh","friend","gambled","gamblers","getting","grieving","guitar","hatred","human","ideas","impetus","impression","inconsequential","indecision","jammed","later","learning","light","little","living","lockdown","locked","lyrics","makes","martyr","metropolitan","mistakes","mostly","motherf","moving","musical","muting","negative","night","nothing","obvious","people","point","pouring","praying","purity","ramblers","realize","realized","recording","rehab","rolling","rough","roulette","round","scratchpad","seething","shortly","siren","small","sorry","spinning","standing","stint","stood","stopped","surviving","takes","think","through","together","tracks","train","understated","using","victims","vocal","waited","waiting","wanted","wheel","wheels","where","worked","works","world","wrote","years"]
},{
"title": "TabLinks 2.0 is live",
"url": "/2010/11/01/tablinks-2-0-is-live/",
"tags": ["extension","safari","tablinks"],
"date": "Nov 1st, 2010",
"ts": "1288633500",
"summary": "Apparently I missed the memo: TabLinks 2.0 was actually approved by Apple in September. I ve been sitting on my hands and just recently bothered to write them and ask what was up. Miscommunication, I guess, but it s live in the updater now, so if you have 1.3 installed, it should update to 2.0. If you have automatic updates turned off, just check the updates section at the bottom of your extensions preferences. There s a one-click install available at the Safari Extensions Gallery , or feel free to download it directly below. For an overview of features in the new version, see the original 2.0 announcement post . 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 More info Your support is greatly appreciated! Or me on GitHub!",
"keywords": ["adobe","adobeflashplayer","apple","firefox","flash","microsoft","operating","safari","system","windows","apparently","apple","changelog","donate","download","extension","extensions","gallery","github","miscommunication","published","safari","tablinks","updated","announcement","appreciated","approved","automatic","available","based","below","bothered","bottom","check","click","copying","defined","directly","download","extensions","features","gathers","greatly","guess","hands","information","install","installed","missed","original","overview","preferences","presents","recently","section","sitting","support","template","turned","updater","updates","version","write"]
},{
"title": "Quick Link: Sparkup rocks my world a little",
"url": "/2010/10/31/quick-link-sparkup-rocks-my-world-a-little/",
"tags": ["textmate"],
"date": "Oct 31st, 2010",
"ts": "1288540020",
"summary": "I just discovered Sparkup (via NetTuts+ ). It adds the one thing I find lacking in Zen Coding : the ability to traverse backward in a shortcut (among several other improvements). Background: Zen Coding is a Python script that can run in various extensible editors, my favorite being TextMate . It turns strings like into a fully marked up HTML branding div with a single shortcut. It s immensely useful, and if you haven t tried it, you re missing out. Skip it, though, and jump straight to Sparkup. I use Zen Coding constantly in TextMate. It s replaced 75% of my HTML snippets with one shortcut. What Sparkup adds is the ability to move back up levels using the symbol, as well as the ability to add attributes (like an href for a link) and content to elements from within the shortcut string. See the Sparkup readme for examples. Awesome stuff.",
"keywords": ["coding","github","lineages","python","religion","spirituality","textmate","awesome","background","coding","nettuts","python","sparkup","textmate","ability","among","attributes","backward","branding","constantly","content","discovered","editors","elements","examples","extensible","favorite","fully","haven","immensely","improvements","lacking","levels","marked","missing","readme","replaced","script","several","shortcut","single","snippets","straight","string","strings","stuff","symbol","traverse","tried","turns","useful","using","various","within"]
},{
"title": "Around the web: October 31",
"url": "/2010/10/31/around-the-web-oct31/",
"tags": ["bookmarks"],
"date": "Oct 31st, 2010",
"ts": "1288525680",
"summary": "Marco.org - The Mac App Store isn t for today s Mac developers Marco s take on the announcement of Apple s Mac App Store, and what it could really mean for developers and the user community.",
"keywords": ["apple","appstore","itunes","macintosh","operating","store","system","apple","links","marco","store","announcement","community","developers","interest","today"]
},{
"title": "Sanity and singletasking",
"url": "/2010/10/30/sanity-and-singletasking/",
"tags": ["commentary","productivity"],
"date": "Oct 30th, 2010",
"ts": "1288486440",
"summary": "I saw a man driving down a busy street the other day, with a cigarette in one hand and a cell phone in the other. I was driving toward him, and in the brief period between his coming into my field of view and his passing by, I observed him attempting to juggle the aforementioned accessories as he tried to downshift. I didn t get to see the final outcome of the procedure, but his panic was clear as I watched him pass. I laughed, but then the gravity of the situation hit me. This man s inability to focus on the task at hand put other driver s lives at risk. While my work life might not have the same potential for dramatic consequences as distracted driving, the panic I saw on that driver s face was familiar to me. To be clear, I never multitask on purpose. I do, however, allow distractions to creep in, and sometimes find myself trying to juggle a phone call, an IM session and an emergency email, all from different sources, while my brain tries desperately to keep track of where I was when the fires started. It rapidly snowballs, as emergency emails and phone calls rarely end without initiating additional work. I m a remote worker. That is, I work from home, and therefore I lack the filters that most office inhabitants have. I can t shut a door and rarely can I ask someone to leave me alone. My field typically requires me to be aware of multiple channels of communication at once. I only check email a few times a day, but I can t control phone calls, meetings and personal IMs from co-workers and employers. Thus, the circus act happens more often than I d care to admit. It often just means a few minutes of feeling overwhelmed, then taking a moment to go over my quick notes, file information and create task items for things that require additional work or followup. Focus returns, and I move on. Occasionally, I metaphorically swerve into another lane and end up with a wreck of a day. One thing I m working toward is clearly defined dark times, or the equivalent of shutting my office door to let people know that this is work time. I work on multiple fronts, so syncing these times up is a challenge, but the idea is uaually well-received. People like productivity. Going dark means more than setting my IM status to busy, or even leave me alone, I m working! It means completely disconnecting my multiple IM and IRC accounts, switching Skype to voicemail and closing my email app. Voicemails reach me as SMS messages on my iPhone, so I have one delayed",
"keywords": ["distracted","driving","instant","iphone","launchbar","messaging","mobile","phone","science","technology","voodoopad","beyond","focus","going","launchbar","launchbar","occasionally","people","scratchpad","short","skype","using","voicemails","voodoopad","while","working","accessories","accounts","admit","aforementioned","allow","alone","another","anybody","attempting","avoided","aware","bastardization","between","brain","brief","calls","carefully","cause","challenge","channel","channels","check","cigarette","circus","clear","clearly","closing","combo","coming","commits","communication","completely","consequences","constantly","constructed","continuous","control","couple","crash","create","creep","defined","delayed","desperately","different","disconnecting","distracted","distraction","distractions","doesn","downshift","dramatic","driver","driving","easily","email","emails","emergency","employers","emptying","entries","environment","exponentially","familiar","feeling","field","filters","fires","focus","followup","fronts","geeky","going","gravity","happens","helps","hours","however","iphone","ideas","implementation","improve","inability","increases","information","inhabitants","initiating","interruption","intrudes","items","itself","juggle","keeping","keeps","keystrokes","laughed","leave","links","literally","lives","major","measures","meetings","mental","mentioning","messages","metaphorically","minutes","moving","multiple","multitask","myself","notebook","notes","observed","office","often","outcome","overwhelmed","panic","passing","people","personal","phone","potential","preventative","principles","procedure","productivity","project","protection","purist","quick","random","rapidly","rarely","reach","received","recommend","regularly","remote","requires","returns","scripts","seatbelt","session","setting","setup","share","shutting","simply","situation","situations","snowballs","sometimes","sorts","sources","stack","started","status","stealth","street","sudden","summary","swerve","switching","syncing","taking","therefore","think","thought","thoughts","through","throughout","times","title","toward","track","train","trained","tried","tries","trying","typically","uaually"]
},{
"title": "Quick Link: historio.us",
"url": "/2010/10/24/quick-link-historio-us/",
"tags": ["bookmarking","productivity","quicklink"],
"date": "Oct 24th, 2010",
"ts": "1287968460",
"summary": "I found a great new service via Smashing Magazine today: historio.us . It s a bookmarking service with some seriously impressive twists. I ve been using Delicious with Delibar for quite a while now. A while ago, I stopped archiving every web page I thought I might need someday (yes, I used to do that) because I ve realized that Google s current speed and accuracy have made my local data store obsolete. That s a longer post for another time. The problem that arises when relying purely on web search is knowing what information you need, knowing that you ve seen it before, but not being able to piece together the search to lead to that specific post or page. Delicious tags help tremendously, but nothing beats a full-text search. Limit that search to selected items from your own history, and you ve got an amazing memory enhancer. Historio.us lets you bookmark and tag pages, and then stores a cached version of the page and a full-text index. It s a lot like HistoryHound , which I wrote up for TUAW a while back, but it offloads the bandwidth, processing and storage requirements to the cloud. I wish the search was a little more savvy. It does well, especially with tags: searches combined with keywords, but fails to handle fuzzy matches very well. Substituting other for another can lead to entirely different results. I wish the API would let me pull recent bookmarks the way I do with Delicious for local tagging purposes not a huge deal. The Historio.us bookmarklet is simple and effective, and the current API does have everything you need for creating extensions and addons for bookmarking. The bookmarklet functions much like the Instapaper bookmarklet, and you can trigger it on any page to effortlessly add the page to your index. You can also publish a personal search so that others can search your bookmarked pages, and for paid subscribers there s a read later feature that lets you mark pages as unread, much like Pinboard . Historio.us has a free version, but it s lacking many of the more interesting features (like Read Later). You can get the full version for $2.99/month or an annual fee of $19.95. Seems worth it to me, so I m going to give it an extended trial and see how things go.",
"keywords": ["delicious","diigo","google","instapaper","interface","iphone","pinboard","programming","twitter","delibar","delicious","google","historio","historyhound","instapaper","later","limit","magazine","pinboard","seems","smashing","substituting","accuracy","addons","amazing","annual","another","archiving","arises","bandwidth","beats","because","before","bookmark","bookmarked","bookmarking","bookmarklet","bookmarks","cached","cloud","creating","different","effective","effortlessly","enhancer","entirely","especially","everything","extended","extensions","fails","feature","features","found","functions","fuzzy","going","great","handle","historio","history","impressive","improve","index","information","interesting","items","keywords","knowing","lacking","later","little","local","longer","matches","memory","nothing","obsolete","offloads","others","pages","personal","piece","problem","processing","publish","purely","realized","recent","relying","results","savvy","search","searches","selected","seriously","service","simple","someday","specific","speed","stopped","storage","store","stores","subscribers","tagging","thought","today","together","tremendously","trial","trigger","twists","unread","using","version","while","worth","wrote"]
},{
"title": "TextExpander: bit.ly with authentication",
"url": "/2010/10/18/textexpander-bit-ly-with-authentication/",
"tags": ["bitly","scripting","shortener","textexpander"],
"date": "Oct 18th, 2010",
"ts": "1287446160",
"summary": "A quick script in response to Donald s query on my TextExpander Experiments post. He wanted to know if I could make the bit.ly script which expands to a bit.ly-shortened version of a url in the clipboard work with an authenticated account, presumably for click tracking. Well, sure! Just adjust the script below to contain your bit.ly username and your API key (in lines 6 7), and replace the existing script in the TextExpander experiments bundle with this one (or create a new snippet with the script). The API can output JSON and XML, which would be more appropriate on most occasions, but the txt format (which only includes the shortened link) is perfect for this situation. Enjoy!",
"keywords": ["interface","locator","programming","resource","twitter","donald","enjoy","experiments","textexpander","account","adjust","authenticated","below","bundle","click","clipboard","contain","create","expands","experiments","format","includes","output","presumably","query","quick","replace","response","script","shortened","situation","snippet","tracking","username","version","wanted"]
},{
"title": "Title track: Something Precious",
"url": "/2010/10/12/title-track-something-precious/",
"tags": ["music","personal","precious","recording"],
"date": "Oct 12th, 2010",
"ts": "1286922600",
"summary": "This is a song I recorded a couple of years ago. I like it, although it s a bit dark. Yes, even darker than my usual. You may be happy to know that since getting my new electric guitar I ve actually been writing some happier music. I haven t recorded any of it yet, but hope to find some time soon. This track, though, is actually the banner track for the collection I ve slowly been building here. It started as a sequel to Junky Angel , but grew into something of its own pretty quickly. It s about love and heartbreak, and the initial feeling of moving from major cities to small towns. I wrote a lot of those after I got back here. I ll let Something Precious tell the rest of the story.",
"keywords": ["angel","electric","guitar","junkie","literature","music","precious","shopping","angel","junky","looking","maybe","precious","there's","aching","again","ain't","although","angel","another","anywhere","asleep","banner","bedways","before","bleeding","blurry","breaks","broken","building","can't","cannot","church","cities","close","collection","corner","couple","dancing","darker","doesn't","dreams","electric","erase","everywhere","falling","feeling","finally","getting","gleams","ground","guess","guitar","happier","happy","haven","head's","heart","heartbeat","heartbreak","hearts","history","initial","junky","keeps","knowing","leaving","little","loved","lying","major","memories","miles","moving","music","mystery","nicely","night","parts","piece","playing","pounding","precious","pulse","quickly","recorded","remember","rightways","scream","screaming","seems","sequel","she'll","she's","shown","since","sleep","sleeps","slowly","small","spinning","standing","started","story","streets","talked","talking","tells","thinking","times","tonight","towns","track","walking","wanted","we're","where","won't","words","writing","wrote","years"]
},{
"title": "PromptDown for iOS: Mobile Markdown Teleprompter",
"url": "/2010/10/11/promptdown-for-ios-mobile-markdown-teleprompter/",
"tags": ["experiments","iphone","javascript","jquery","markdown"],
"date": "Oct 11th, 2010",
"ts": "1286845800",
"summary": "I recently wrote a tiny web app called PromptDown to let me drop in some Markdown (or plain text) and use it as a teleprompter for screencast voiceovers. I wasn t going to put any more time into it, as it did what I needed. Then it started to bug me that it didn t work on my iPad, which could actually be really handy. So my lunch break fine, and an extra half an hour went to making it work a little more smoothly as an iPhone/iPad app. It s also ready to install as a web app, so you can go full-screen with it. The concept is exactly the same: tap the main text field to clear it, type or paste your text, then tap the prompt button to open the prompt view. A single tap will start scrolling, a double tap will exit, and dragging up or down will allow you to fast forward or rewind. On the iPhone, it actually works best in landscape mode, allowing the words to be big enough to see while still fitting enough on the screen that it s not ridiculously slow. I haven t added any speed controls to it, which I may do at some point. For now, it s on and off. Point your mobile browser to http://brettterpstra.com/share/promptdown/mobile.html and give it a try. Tap the plus button (on the iPhone) or the send to icon (on the iPad) to add the app to your homescreen and be able to use it full-screen. This version actually works well in Safari and Firefox on the desktop, too.",
"keywords": ["apple","firefox","iphone","markdown","safari","smartphones","firefox","markdown","point","promptdown","safari","added","allow","allowing","break","brettterpstra","browser","button","called","clear","concept","controls","desktop","double","dragging","enough","extra","field","fitting","going","handy","haven","homescreen","iphone","install","landscape","little","lunch","making","mobile","needed","paste","point","prompt","promptdown","ready","recently","rewind","ridiculously","screen","screencast","scrolling","share","single","smoothly","speed","started","teleprompter","version","voiceovers","while","words","works","wrote"]
},{
"title": "Things tasks from the command line",
"url": "/2010/10/11/things-tasks-from-the-command-line/",
"tags": ["productivity","scripting","terminal"],
"date": "Oct 11th, 2010",
"ts": "1286844540",
"summary": "If you re a Things.app user (and a Terminal user), I ve got a quick function for your .bash_profile that will allow you to quickly add todo items to your inbox with notes and natural-language date parsing. It uses php s strtotime function, which does a pretty swell job with simple dates like next tuesday or +12 days . It s not very smart, though you have to give it parameters in a specific order: Only the first parameter is required, so your task at least has a title. If you have two, it expects that the second is a date of some kind, and anything in the third will be added as a note. Just paste it at the end of your ~/.bashprofile and type to read it in. If you use it, I d love to hear about it, and if you improve it, let me know what you did differently!",
"keywords": ["function","language","natural","operating","programming","systems","terminal","added","allow","dates","differently","expects","first","function","improve","inbox","items","language","natural","notes","parameter","parameters","parsing","paste","profile","quick","quickly","required","second","simple","smart","specific","strtotime","swell","third","title","tuesday"]
},{
"title": "Look, I made you a Markdown teleprompter",
"url": "/2010/10/07/promptdown-markdown-teleprompter/",
"tags": ["experiments","javascript","jquery","markdown","webdesign"],
"date": "Oct 7th, 2010",
"ts": "1286496360",
"summary": "Be sure to check out version 2 , with iOS support (iPhone/iPad)! Here s my stupid trick of the day: a Markdown teleprompter called PromptDown (I see what you did there ). The idea was to create a teleprompter for recording screencast voiceovers that was cheap, fast and worked on plain text. I wanted to provide a non-WYSIWYG form field for typing or pasting which still preserved paragraph breaks, so Markdown (via Showdown ) was an ideal solution. I also included the jQuery tabby plugin so you could use tabs in the textarea without jumping out of it, which is nice when editing Markdown, depending on your formatting habits. The rest is just CSS and quick-and-dirty tricks. It takes input in standard Markdown format and, when you press the Prompt button or hit Shift-Enter, it blacks the screen and renders your Markdown in large, contrasting text. Then you can hit Spacebar or Enter to start and stop scrolling. Stopping auto-scroll and using your mouse s scroll wheel will allow you to navigate. Escape (or a click on the background) will take you back to the editor. There are a few more tricks listed in the text that initially populates the text area when the page loads. Among them is a note that entering a horizontal rule in Markdown syntax will give you a bright yellow marker at that point in your script, which is handy for longer work. The easiest format for a horizontal rule, for me, is , three dashes with spaces between them on their own line. Why did I spend an hour and a half making a cheap teleprompter with very few features? Because I just wanted to scroll some text, and the market for Mac-based teleprompters seemed to start around $65 and go up from there. I m not one to complain about a price when there s appropriate value, but I m assuming that those $65-250 apps were doing magical things I just didn t need. This is my solution, as hackish as it may be. As an aside, I used to have a license for VideoCue , which I loved, but I never upgraded it and now I ve lost both it and my older version of VideoCue. Drat. Feel free to use it online, or feel free to borrow the code and build your own locally. It doesn t require anything unusual, and will run right from a folder on your desktop if you point your browser there. I should note that it works much better in Safari 5 than in Firefox, at least in my quick testing (and hopefully not-at-all in Internet Explorer I m still carrying a grudge). I m not really going for a fully cross-browser, all-purpose",
"keywords": ["cascading","element","firefox","jquery","markdown","sheets","style","teleprompter","wysiwyg","among","because","enter","escape","explorer","firefox","internet","markdown","prompt","promptdown","safari","shift","showdown","spacebar","stopping","videocue","wysiwyg","allow","aside","assuming","background","based","between","blacks","borrow","breaks","brettterpstra","bright","browser","build","button","called","carrying","cheap","check","click","complain","contrasting","create","cross","dashes","depending","desktop","dirty","doesn","doing","easiest","editing","editor","entering","evening","features","field","fills","folder","format","formatting","fully","going","grudge","habits","hackish","handy","hopefully","horizontal","iphone","ideal","included","input","jquery","jumping","license","listed","loads","locally","longer","loved","magical","making","marker","market","mouse","navigate","older","online","paragraph","pasting","plugin","point","populates","preserved","press","price","promptdown","quick","recording","renders","right","screen","screencast","script","scroll","scrolling","seemed","share","solution","spaces","spend","standard","stupid","support","syntax","tabby","takes","teleprompter","teleprompters","testing","textarea","trick","tricks","typing","unusual","upgraded","using","value","version","voiceovers","wanted","wants","wheel","worked","works","yellow"]
},{
"title": "Ten dollars and the App Store",
"url": "/2010/10/06/ten-dollars-and-the-app-store/",
"tags": ["commentary"],
"date": "Oct 6th, 2010",
"ts": "1286424600",
"summary": "Manton Reece recently released an excellent iPad application called Tweet Library (go ahead, read my post about it on TUAW . You know you want to). He priced it at $9.99, and I have no doubt it s worth that. I plunked it down about 30 minutes after I started reading about the application. However, I m apparently one of the weird ones. I ve heard multiple complaints about the price point, and it s only been a few hours. It actually annoys me quite a bit, especially when it comes to iOS apps. What did $10 get you 15 years ago? All the games that would fit on a disk. A 5-inch floppy disk. Considering the massive improvements to the user experience, and the amount of utility that an app like Tweet Library offers, that copy of Duke Nukem 3D isn t looking as expensive anymore. Toss in inflation, and your getting a Rolls Royce for the price of a VW Bug. Or, in more reasonable terms, two of those caramel soy moccachino things you drink every day. Every time I hear someone state so firmly that ten dollars is too much, I really want to take a look at their personal finances and see exactly what they do think is worth ten bucks. They could be justified, but I m always curious. $250 for ProPrompter is too much. Photoshop is overpriced. $10 for a quality iPhone app is not. Price points are a huge concern for developers. I hear it all the time. They want to find a spot where they can attract as many customers as possible while still making a profit, which seems perfectly reasonable to me. It just gets really hard to do that when a good portion of potential users don t think any app is worth more than 99 cents. I think what really bugs me is that so many people undervalue the developers who make their lives easier every single day, taking for granted the amazing user experiences they get with so little investment. They re the same people who pirate $2 games. Seriously, how did you pay for that iPhone to begin with?",
"keywords": ["apple","iphone","library","point","price","rolls","royce","considering","however","library","manton","nukem","photoshop","price","proprompter","reece","rolls","royce","seriously","ahead","amazing","amount","annoys","anymore","apparently","attract","begin","bucks","called","caramel","cents","comes","complaints","concern","curious","customers","developers","dollars","doubt","drink","easier","especially","excellent","expensive","experience","experiences","finances","firmly","floppy","games","getting","granted","heard","hours","iphone","improvements","inflation","investment","justified","little","lives","looking","making","massive","minutes","moccachino","multiple","offers","overpriced","people","perfectly","personal","pirate","plunked","point","points","portion","possible","potential","price","priced","profit","quality","reading","reasonable","recently","released","seems","single","started","taking","terms","think","thought","through","undervalue","users","utility","weird","where","while","worth","years"]
},{
"title": "Answer Skype with a hotkey",
"url": "/2010/10/03/answer-skype-with-a-hotkey/",
"tags": ["applescript","scripting","skype"],
"date": "Oct 3rd, 2010",
"ts": "1286085240",
"summary": "If you use Skype and happen to be as clumsy as I am, you may have run into this at some point: you see a call come in, you fumble for your headset, you go back to your mouse, find the cursor on your big screen and then try to click the Answer button on the call window only to miss the call because you took too long. I solved this for myself a while back, and thought I d share my solution. It s a fairly simple AppleScript that requires nothing but Skype. It will make good use of Growl if you have it installed, but it s only needed for visual feedback the script will function fine without it. I use Spark to trigger it, but you can use any kind of launcher that can run AppleScripts. If Spark isn t your cup of tea, definitely check out FastScripts . Ultimately, you just need to assign the following script to a hotkey The script In an app like Spark, I can just paste the source into a new command and assign a hotkey. If you re running a launcher that needs file input, just open the source in your AppleScript Editor and save it as an .scpt file, then point to that. The script basically looks at current calls in Skype, and if a call is ringing or in progress, it takes the appropriate action (answers if it s ringing, hangs up if it s in progress). If no calls are happening, it will just exit (with a little whimper via Growl). Put it on an easy-to-hit keyboard shortcut and you ll be able to grab your headset and answer a call faster than, well faster than I ve ever managed to without it.",
"keywords": ["applescript","growl","skype","answer","applescript","applescripts","editor","fastscripts","growl","script","skype","spark","action","answer","answers","assign","because","button","calls","check","click","clumsy","command","cursor","definitely","fairly","faster","feedback","fumble","function","hangs","happen","happening","headset","hotkey","input","installed","keyboard","launcher","little","looks","managed","mouse","myself","needed","needs","nothing","paste","point","requires","ringing","running","screen","script","share","shortcut","simple","solution","solved","source","takes","thought","trigger","visual","while","whimper","window"]
},{
"title": "HomeControl: Local Mac control for iPhone",
"url": "/2010/10/02/homecontrol-local-mac-control-for-iphone/",
"tags": ["applescript","iphone","javascript","jquery","scripting"],
"date": "Oct 2nd, 2010",
"ts": "1286073060",
"summary": "I tried out a tip recently for controlling a Mac via Mobile Safari on your iPhone, and it got me thinking, which is often dangerous. I put together this little web app today as a proof of concept (that got a little out of hand). It basically provides a full interface for volume control, application starting and stopping and many iTunes functions, including volume and EQ. All features provide interface feedback and update you with current info from your Mac. To run it, you need to run your local web server as your own user. This is, of course, a major security risk and completely inadvisable if your local web server is open to outsiders in any way. Mine s not, so I didn t put too much time into figuring out a more secure way to do this. If you have any clues in that area, let me know and I ll post them. To run your local web server as a different user, you need to edit . You ll need to edit it as root, so use sudo to launch your text editor of choice (e.g. ). If you, like me, just use TextMate s command, you ll be prompted for a password when you save. You ll also need to enable PHP, if you haven t already. If you haven t, locate the line that starts with: Now, at the command line, type to restart the server under the new user. If everything is in place, you ll be able to run HomeControl without a hitch now. Turn on Web Sharing in System Preferences Sharing to keep the web server running through reboots and logouts. Just download the zip file at the end of this post and unzip it into your folder. If you prefer to have it elsewhere, or have a custom folder set up for Apache, it will run just fine in any folder, as long as you can access it from a web browser on the local network. Next, point your web browser to the folder. If you put the homecontrol folder directly in , you should be able to reach it at the url . You need to know the name of the computer it s on (set in System Preferences Sharing, at the top), and your username on that system, substituting each in the appropriate place in the url. Once you ve loaded the page and tested it out, use the + icon at the bottom of Mobile Safari s web browser to add an icon to your home screen which will take you directly there in the future, and will run the app full-screen. Since I know not everybody who wants to try this out is going to be ready to hack into the jQuery and PHP, I made quite a few bits of the app modifiable with simple HTML edits. If you re comfortable with that, you can change",
"keywords": ["iphone","itunes","jquery","textmate","youtube","advanced","apache","applescript","change","changelog","customizing","donate","download","github","homecontrol","installing","mobile","music","preferences","presets","published","safari","setting","sharing","since","spotify","startup","system","textmate","updated","video","youtube","access","accessed","appear","appended","applications","appreciated","attribute","background","beginning","bottom","browser","called","calls","change","changing","choice","clues","comfortable","command","completely","computer","concept","control","controlling","copying","custom","customization","customize","dangerous","dependencies","designed","desired","different","directly","displayed","download","easily","editor","edits","elsewhere","everybody","everything","exact","examples","experimentation","features","feedback","figuring","first","folder","function","functions","going","greatly","handy","hashmark","haven","heavily","hitch","homecontrol","homescreen","hopefully","horrible","iphone","itunes","images","inadvisable","including","inside","inspiration","installed","intended","interface","items","itunes","itunescmd","ituneseq","jqtouch","jquery","jumping","launch","launcher","launching","library","links","little","loaded","local","logouts","major","makes","modifiable","mostly","network","often","osascript","outsiders","passed","passes","password","point","prefer","preset","preview","prompted","proof","provides","reach","ready","reboots","receives","recently","reinstall","relatively","remove","restart","running","screen","secure","security","server","simple","skeleton","starting","starts","startup","stopping","substituting","support","switch","system","tested","thinking","through","title","today","together","tried","trivial","under","unordered","unzip","updates","username","using","volume","wants","waste"]
},{
"title": "A little HootSuite userstyling",
"url": "/2010/09/26/a-little-hootsuite-userstyling/",
"tags": ["userstyle"],
"date": "Sep 26th, 2010",
"ts": "1285517280",
"summary": "I keep trying out the social stream web app, HootSuite (I made a new icon for the Fluid app a while back), both in Safari 5 and in a Fluid browser . I like it, and given that I end up in it pretty often, I thought I d polish up some edges that were bugging me. These changes may or may not be your cup of tea. The following changes were made within the Blue Steel theme on HootSuite, and if you use it with another theme, you ll probably at least want to change the scrollbar colors. The basic rundown of changes is: Much nicer scrollbars using webkit s scrollbar-specific styling options Move the user photo in a tweet to the right, remove the padding on the left and leave more space for the actual tweet. Further adjustments to make the previous adjustment work with menus and badges Darken the username in tweets, add a slight beveled edge, and change the font to Helvetica You ll need the User CSS Extension , which is simple to install and get running with. My only complaint with this extension is that it tends to clear itself out pretty regularly, so make sure you have backups of your styles. Click the A icon in the menubar after the extension is enabled, and start a new style definition called HootSuite. Enable it, set the domains to http://hootsuite.com/* and paste the code below into the textarea. Save it, and reload HootSuite. Skip to the end for the code. In Fluid, userstyle support is built in. Just go to Preferences - User Styles and create a new one for the domain http://hootsuite.com/* . Paste in the code below and reload HootSuite.",
"keywords": ["dashboard","facebook","helvetica","hootsuite","media","safari","social","steel","twitter","before","click","darken","extension","fluid","helvetica","hootsuite","modify","paste","preferences","safari","steel","styles","adjustments","another","backups","badges","basic","below","beveled","browser","bugging","built","called","change","changes","clear","colors","complaint","create","definition","domain","domains","edges","enabled","extension","hootsuite","install","itself","leave","menubar","menus","nicer","often","options","padding","paste","photo","polish","regularly","reload","remove","right","rundown","running","scrollbar","scrollbars","simple","slight","social","space","specific","stream","style","styles","styling","support","tends","textarea","theme","thought","trying","tweets","username","userstyle","using","webkit","while","within"]
},{
"title": "Clear sticky Growl notifications with a keyboard shortcut",
"url": "/2010/09/25/clear-sticky-growl-notifications-with-a-keyboard-shortcut/",
"tags": ["applescript","growl","keyboard","macos","scripting"],
"date": "Sep 25th, 2010",
"ts": "1285448700",
"summary": "I ran into a question yesterday that didn t seem to have an obvious answer: how can I clear a stack of sticky Growl notifications using only the keyboard. It s not been any secret that I m a fan of keyboard shortcuts, as indicated by the extensive keyboard support I ve added to Instapaper Beyond . So I decided to make an interim solution until a specific feature for this is added, either to the Growl preferences or via AppleScript support. For the record, I m fully aware of the Option-Click shortcut to make all current notifications disappear, but thanks to all of the Twitter responses to that effect nonetheless. I really wanted a pure keyboard solution to handle this (I m not alone ). Usually, at least with apps that adhere to the Growl suggestion regarding stickiness, you only get sticky notifications when something goes wrong, and then you usually get more than one. I just wanted to be able to poof them away quickly and tend to whatever was causing them. I m weird, I know. After a lot of toying around, I decided to just go with a brute force method: quit the helper application and start it back up. It does the trick, and if you use AppleScript to handle the process, you can keep the bridge alive and experience no interruption in your Growl service. If you call the AppleScript with FastScripts , a launcher like Spark or even QuickSilver or LaunchBar , you can cause all sticky notifications to disappear with a keystroke of your choice. I found the 1 second delay necessary to let the process close out before trying to launch it again. If you run into issues with Growl not responding after running this script, you might try increasing that delay by a second or two. I also played around with using kill (grep/awk for the PID, kill the process, etc.), but the whole system stays much more stable this way. There, my contribution to the keyboard-obsessed minority of OS X users.",
"keywords": ["apple","applescript","fastscripts","growl","python","quicksilver","twitter","applescript","beyond","click","fastscripts","growl","instapaper","launchbar","quicksilver","spark","twitter","usually","added","adhere","again","alive","alone","answer","aware","before","bridge","brute","cause","causing","choice","clear","close","contribution","decided","disappear","either","experience","extensive","feature","force","found","fully","handle","helper","increasing","indicated","interim","interruption","issues","keyboard","keystroke","launch","launcher","method","minority","necessary","nonetheless","notifications","obsessed","obvious","played","preferences","process","quickly","record","responding","responses","running","script","second","secret","service","shortcut","shortcuts","solution","specific","stable","stack","stays","stickiness","sticky","suggestion","support","system","thanks","toying","trick","trying","users","using","usually","wanted","weird","whatever","whole","wrong","yesterday"]
},{
"title": "Quick notes on cross-browser HTML5 video",
"url": "/2010/09/15/quick-notes-on-cross-browser-html5-video/",
"tags": ["browser","chrome","firefox","safari","video"],
"date": "Sep 15th, 2010",
"ts": "1284562140",
"summary": "I ve been doing some screencasts lately, and have wanted to post them as HTML5 videos in many cases. I also wanted to serve them from my Cloudfront CDN. This is not a how-to post, just some things I learned that I couldn t find existing answers to. For an excellent primer, see Video On the Web from Dive Into HTML5 . I kept running into hurdles, whether it was the content-type of the file being served, or the OGV encoding not working in Firefox, weird sizing, slight variations in syntax, etc. So here are my notes on how I got from ScreenFlow to a cross-browser HTML5 video embed. They may not be of much use outside of that situation, but they might help somebody. The only way I could get an OGV file that actually played in Firefox was to export from ScreenFlow in a DV format, and use Evom or ffmpeg2theora to convert. Note that Evom requires the file extension to be , as it doesn t recognize (and won t accept) files. Evom has a setting called HTML5 that will create both MP4 and OGV files. Aside from writing my own Ruby scripts to handle the upload to my Amazon S3 account, Transmit is the only app I could find that would let me automatically set appropriate MIME headers on uploaded video files, and allow me to automatically make them public. I now have a Transmit droplet in Dropzone that will upload my files directly to the S3 bucket that my Cloudfront account uses, set their Content-Type to video/ogg and video/mp4, respectively, and make them public-readable. The embed code is a little bit flexible, with parameters like preload and autobuffer seemingly being interchangeable. My current, working embed code looks like: With those steps in place, I ve got video that plays (and looks decent) in Safari 5, Firefox 4 and Chrome. Obviously, I d normally want a Flash fallback, but given that the videos I m currently working on are about Safari 5, I m not overly concerned whether Internet Explorer can see them or not. There s always good-looking plugins like FlareVideo if that s a requirement.",
"keywords": ["amazon","cloudfront","explorer","firefox","internet","media","screenflow","theora","amazon","aside","chrome","cloudfront","content","dropzone","explorer","firefox","flarevideo","flash","internet","safari","screenflow","video","accept","account","allow","answers","autobuffer","automatically","browser","bucket","called","content","convert","couldn","create","cross","decent","directly","doesn","doing","droplet","embed","encoding","excellent","export","extension","fallback","ffmpeg","files","flexible","format","handle","headers","hurdles","interchangeable","learned","little","looking","looks","normally","notes","outside","overly","parameters","played","plays","plugins","preload","primer","public","readable","recognize","requirement","requires","respectively","running","screencasts","scripts","seemingly","serve","served","setting","situation","sizing","slight","somebody","steps","syntax","theora","upload","uploaded","variations","video","videos","wanted","weird","working","writing"]
},{
"title": "Automated search and link text Service",
"url": "/2010/09/14/automated-search-and-link-text-service/",
"tags": ["experiments","leopard","search","searchlink","service","yahoo"],
"date": "Sep 14th, 2010",
"ts": "1284508320",
"summary": "Update: Download link has been updated with a new Bing version. The Yahoo search API was sunset recently and the original service fails to work now. The new download will work for the time being I ve had this one laying around for a long time, so I thought I d toss it out on the net and see if anyone else had a use for it. It s actually really handy, and a big timesaver. It takes selected text and uses the Yahoo API to run a quick search for that term, and returns the result as a Markdown link. You can, of course, modify the output to any text-based markup (Rich Text links are a pain). The Service is called First Yahoo Link, and does exactly that. In the video below, I just wrote out some random words that were pretty sure to have predictable search results. The more vague the search terms, the more unpredictable the result, obviously. I m running the Service with the shortcut , which I set in the Keyboard pane of the System Preferences. Here goes: The majority of the code is a Yahoo API wrapper for Ruby by Premshree Pillai . I just shoved it into my Run Shell Script action in the Automator Workflow and built off of it. It just escapes your selected text, passes it to a Web search and then formats the first result in the returned array. There s probably a lot more you could do with it, but I like its simplicity and relative speed. It s definitely faster than flipping over to a browser, running a search and copying a link, coming back and pasting/formatting it manually. Give it a shot, you never know, you just might like it. Oh, and in case you haven t been through this drill before, unzip the file, put the resulting file in ~/Library/Services and then go into System Preferences Keyboard Keyboard Shortcuts and add a shortcut key for the First Yahoo Link service you should now have in there. Then just select text and hit your shortcut key (or pull it down in the Application Services menu). Done. Auto-link Web Search v2 Download Auto-link Web Search v2 A Snow Leopard Service that takes selected text, runs a Bing search for it and returns the first result as a Markdown link around the original text. Published 08/27/11. Updated 08/27/11. Changelog Donate More info Your support is greatly appreciated! Or me on GitHub!",
"keywords": ["control","keyboard","preferences","services","shift","shortcut","system","yahoo","automator","changelog","donate","download","first","github","keyboard","leopard","library","markdown","pillai","preferences","premshree","published","script","search","service","services","shell","shortcuts","system","updated","workflow","yahoo","action","anyone","appreciated","array","based","before","below","browser","built","called","coming","copying","definitely","download","drill","escapes","extra","fails","faster","first","flipping","formats","formatting","greatly","handy","haven","laying","links","manually","markup","modify","original","output","passes","pasting","predictable","quick","random","recently","relative","resulting","results","returned","returns","running","search","selected","service","shortcut","shoved","simplicity","speed","sunset","support","takes","terms","thought","through","timesaver","unpredictable","unzip","updated","vague","version","video","words","wrapper","wrote"]
},{
"title": "TabLinks 2.0",
"url": "/2010/09/14/tablinks-2-0/",
"tags": ["extension","safari","tablinks"],
"date": "Sep 14th, 2010",
"ts": "1284448020",
"summary": "TabLinks 2.0 is finished, and it s a total rewrite. The changes have been submitted to Apple, and if all goes well, TabLinks will be updated in the Extensions Gallery shortly. Here s an overview of the changes: Opens a new tab instead of an overlay. Adds %b (line break) to the template options. Use as many as you like, one will be inserted at the end of each line by default. In preferences, you can choose to operate on all open windows, or just the current foreground window. The template can be edited live from the TabLinks window. Save/Apply will update the links in the list with the new template. Default template presets are included, accessible through the Presets button. Clicking the links once will select the whole block, as will the Select All button. Double-clicking the links will make them editable, changes are saved when you click or tab out of the box. You can download the 2.0 release below, or wait for it to update in the Extensions Gallery. 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 More info Your support is greatly appreciated! Or me on GitHub!",
"keywords": ["access","apple","browser","chrome","click","double","firefox","google","memory","random","apple","apply","changelog","clicking","default","donate","double","download","extension","extensions","gallery","github","opens","presets","published","safari","tablinks","updated","accessible","appreciated","based","below","block","break","button","changes","choose","click","clicking","copying","default","defined","download","editable","edited","finished","foreground","gathers","greatly","included","information","inserted","links","options","overlay","overview","preferences","presents","presets","release","rewrite","saved","shortly","submitted","support","template","through","updated","whole","window","windows"]
},{
"title": "Evernote Site Memory tagger for WordPress",
"url": "/2010/09/10/evernote-site-memory-tagger-for-wordpress/",
"tags": ["wordpress","evernote","tagging"],
"date": "Sep 10th, 2010",
"ts": "1284113160",
"summary": "Evernote introduced Site Memory today, providing an easy way to help people clip to Evernote from your site while maintaining control over how your content appears and is attributed. While some instructions are provided for WordPress , some of us will obviously want to customize things a little further. Brett Kelly posted a quick PHP script on the Evernote WordPress docs to include the first three tags from your post as suggested tags in the clipper. I wanted to weight these, though, so here s my version It first checks for a custom field called evernoteTags, so you can override the whole thing by specifying up to three tags in a custom field in the post editor. The tags should be separated by commas, spaces aren t important: tag1,tag2,tag3 , no quotes. Moving on The rest of the code grabs all of the tags for the post and their use counts on your site, sorts by the use count and outputs the tag names. Pretty simple. I should also note that the JavaScript library for the clipper weighs in at 33k compressed, so it s not a lightweight addition to your blog. I grabbed the online source, minified it and am serving it from a CDN, so the hit was minimized, but still there. I m also loading the clipper image from my CDN, just to avoid the extra offsite hit. I may eventually attempt to lazy load the script only when the link is clicked, but this works for now.",
"keywords": ["clipper","evernote","wordpress","brett","evernote","javascript","kelly","memory","moving","while","wordpress","appears","attributed","avoid","called","checks","clicked","clipper","commas","compressed","content","control","count","counts","custom","customize","editor","eventually","evernotetags","extra","field","first","grabbed","grabs","image","important","instructions","introduced","library","lightweight","little","loading","maintaining","minified","minimized","names","offsite","online","outputs","override","people","posted","providing","quick","quotes","script","separated","serving","simple","sorts","source","spaces","specifying","suggested","today","version","wanted","weighs","weight","while","whole","works"]
},{
"title": "Taskpaper Date Scripts",
"url": "/2010/09/10/taskpaper-date-scripts/",
"tags": ["applescript","scripting","taskpaper"],
"date": "Sep 10th, 2010",
"ts": "1284104160",
"summary": "4 quick scripts for TaskPaper users tonight, specifically for handling dates quickly. If you ve used my other TaskPaper scripts , you know you can use natural language to set start and due dates, and then convert them with the Expand Dates script. These scripts allow you to assign shortcut keys to increment and decrement start and due dates. Just add them to your TaskPaper Scripts folder (pull down the script menu and choose Open Scripts Folder). Then, assign them keyboard shortcuts using the Keyboard Preferences pane of System Preferences. Put your cursor on a line with a task and run them. If there is no matching tag (@start or @due), one will be added for the current date. Once there s a tag there, it will go forward and backwards days, depending on which script you re running. Enjoy! TaskPaper Date Scripts v1 Download TaskPaper Date Scripts v1 4 Scripts to increment and decrement start and due dates in TaskPaper. Published 09/10/10. Updated 09/10/10. Changelog Donate More info Your support is greatly appreciated! Or me on GitHub!",
"keywords": ["applescript","keyboard","preferences","programming","scripts","shortcut","system","taskpaper","changelog","dates","donate","download","enjoy","expand","folder","github","keyboard","preferences","published","scripts","system","taskpaper","updated","added","allow","appreciated","assign","backwards","choose","convert","cursor","dates","decrement","depending","folder","greatly","handling","increment","keyboard","language","matching","natural","quick","quickly","running","script","scripts","shortcut","shortcuts","specifically","support","tonight","users","using"]
},{
"title": "A TextMate Command for fast abbr tags",
"url": "/2010/09/04/a-textmate-command-for-fast-abbr-tags/",
"tags": ["tagging","textmate"],
"date": "Sep 4th, 2010",
"ts": "1283640300",
"summary": "I m on a roll with stupid scripts today, but it s Saturday so, whatever. This is a quick command for creating semantic abbr tags in TextMate. It s short, but pretty smart: if your text is a mix of upper and lowercase letters, it will take the uppercase letters, in order, and create an acronym from them and insert an abbr tag, using the original input as the title attribute. If it s one of a couple other scenarios, it will give you the abbr tag setup with your cursor in a logical place to fill in the blanks. In case you re wondering why I m using the wrong tag for my acronyms, the HTML5 spec pretty much does away with the acronym tag, and abbr appears to be the new, all-purpose solution. It s not perfectly semantic, but there doesn t seem to be an ideal solution for acronyms in the spec. This command is really geared toward using the abbr for acronyms, but you could easily alter it to insert an acronym tag (especially if your doctype is anything other than html ), and it works pretty well for just quickly creating an actual abbreviation, too. It just doesn t try to guess how to abbreviate anything other than apparent acronyms, but it gives you Snippet tab stops for quick manual editing. If you run it with no selection, it will create a blank abbr tag you can tab through and fill in. To use the command, just create a new TextMate Command in the Bundle Editor, preferably in your own personal bundle (create a new bundle with your name, if you need to). Set the Input to Selected Text or Word , and the output to Insert as Snippet. Assign a key equivalent if you like. Since it s outputting HTML, it probably makes sense to set the Scope Selector field to text.html , but who knows, you may prefer to use it outside of normal HTML source documents. Once it s set up, add the code below. It s probably not useful on a frequent enough basis be memorable in cases where you d actually need it, but there it is. It s actually a small part of a larger experiment I played with today. I ll probably post about it this weekend, as it s useful not just with abbr tags, but with any tag with a descriptive attribute. Just a few lines of jQuery which can make the PTWW be more immediately useful, accessible and, well, look cooler. And yes, I did just make that acronym markup with the above TextMate Command. I feel like a salesman who sells people things which seem perfect for situations they ll never find themselves in.",
"keywords": ["element","formats","javascript","language","markup","snippet","textmate","assign","bundle","command","editor","input","saturday","scope","selected","selector","since","snippet","textmate","abbreviate","abbreviation","above","accessible","acronym","acronyms","alter","appears","attribute","basis","below","blank","blanks","bundle","command","cooler","couple","create","creating","cursor","descriptive","doctype","documents","doesn","easily","editing","enough","especially","experiment","field","frequent","geared","gives","guess","ideal","input","jquery","knows","larger","letters","logical","lowercase","makes","manual","markup","memorable","normal","original","output","outputting","outside","people","perfectly","personal","played","prefer","preferably","quick","quickly","salesman","scenarios","scripts","selection","sells","semantic","sense","setup","short","situations","small","smart","solution","source","stops","stupid","themselves","through","title","today","toward","upper","uppercase","useful","using","weekend","whatever","where","wondering","works","wrong"]
},{
"title": "A Quick VoodooPad Script Plugin - Go To Today",
"url": "/2010/09/04/a-quick-voodoopad-script-plugin-go-to-today/",
"tags": ["scripting","voodoopad"],
"date": "Sep 4th, 2010",
"ts": "1283637720",
"summary": "This script may not be of use to many people, but I m finding it so handy today that I figured I d post it in the hopes that someone who needs it finds it. It s really only useful to people who use VoodooPad to keep a journal or log with a page for each date, and all it does is jump to the current day s page. Simple, but useful. I m using Ian Beck s VoodooPad Scratchpad scripts, and have been for over a year. I won t go into detail on the inner workings (I m hoping to post a little more about them on TUAW soon), but the end result is a very well-connected log of what I ve done, what I ve found and what I ve learned each day. Navigating them isn t difficult, but once you ve run it for a year or more, you end up with a lot of very similarly named pages (2010-09-xx, etc.). I m sure this is the case for anyone who s logging or journaling in VoodooPad, and if you ve ever scrolled for more than a few seconds just to find the page for today, here s your ( ber-simple) answer. You ll want to edit the line with os.date() in it to match the format of your date-named pages. Then just save it as gototoday.lua in your Script Plugins folder (~/Library/Application Support/VoodooPad/Script Plugins). Restart VoodoPad and the shortcut Control-Command-G will jump to the current day. It s not smart, though, and if you don t have a page for the current day, it s going to make one. That could be good or bad, depending on your system. I also wrote a script page within my scratchpad (called Today) that jumps to the current day instead of itself when you open it. It seems like one of those things that I just did to see if I could, and not worth troubling the internets with. If you re interested in it, ping me.",
"keywords": ["languages","programming","store","voodoopad","command","control","library","navigating","plugins","restart","scratchpad","script","simple","support","today","voodopad","voodoopad","answer","anyone","called","connected","depending","detail","difficult","figured","finding","finds","folder","format","found","going","gototoday","handy","hopes","hoping","inner","interested","internets","itself","journal","journaling","jumps","learned","little","logging","match","named","needs","pages","people","scratchpad","script","scripts","scrolled","seconds","seems","shortcut","simple","smart","system","today","troubling","useful","using","within","workings","worth","wrote"]
},{
"title": "gleeBox gets prettier highlights",
"url": "/2010/09/02/gleebox-gets-prettier-highlights/",
"tags": ["extension","gleebox","safari"],
"date": "Sep 2nd, 2010",
"ts": "1283442360",
"summary": "Primer: gleeBox is an amazing extension for Safari (and Chrome and Firefox) that gives you keyboard navigation of links, bookmarks, bookmarklets and more. If you haven t tried it out, you should. A while back I wrote about fixing the highlights in gleeBox . I found them just ugly enough to require measures to soften the colors and handle padding a little differently. Well, color me tickled, the latest update that just showed up in my extensions panel brings, among other things , prettier highlights. Prettier than my makeshift ones, too. Just thought I d share",
"keywords": ["bookmarklet","browser","browsers","chrome","clients","firefox","google","safari","chrome","firefox","prettier","primer","safari","amazing","among","bookmarklets","bookmarks","brings","color","colors","differently","enough","extension","extensions","fixing","found","gives","gleebox","handle","haven","highlights","keyboard","latest","links","little","makeshift","measures","navigation","padding","panel","prettier","share","showed","soften","thought","tickled","tried","while","wrote"]
},{
"title": "Instapaper Beyond microsite",
"url": "/2010/08/28/instapaper-beyond-microsite/",
"tags": ["beyond","extension","instapaper","safari"],
"date": "Aug 28th, 2010",
"ts": "1283015520",
"summary": "Due in part to the inclusion of Instapaper Beyond in Apple s Safari Extensions Gallery , I ve put together a dedicated microsite for Instapaper Beyond. You can check it out at http://brettterpstra.com/instapaperbeyond . It uses the same navigation as Instapaper Beyond (mmm, clever), so pressing h will bring down a menu of the main commands available in the extension, and pressing the letter for a command (or clicking it in the menu) will provide more information about that command. In some cases, a short screencast is available, and I ll put more up when I have a chance. The page takes advantage of the fact that it s pretty much exclusive to Safari 5, using HTML5 video tags and webkit transitions for much of the interface. That, and a little jQuery. The video player is a custom-styled tag, which was something I ve been meaning to figure out how to pull off. I hope IB users enjoy the page , and I welcome comments and criticisms!",
"keywords": ["apple","chrome","google","instapaper","jquery","safari","apple","beyond","extensions","gallery","instapaper","safari","advantage","available","brettterpstra","bring","chance","check","clever","clicking","command","commands","comments","criticisms","custom","dedicated","enjoy","exclusive","extension","figure","inclusion","information","instapaperbeyond","interface","jquery","letter","little","meaning","microsite","navigation","player","pressing","screencast","short","styled","takes","together","transitions","users","using","video","webkit","welcome"]
},{
"title": "Instapaper Beyond in the Safari Extensions Gallery",
"url": "/2010/08/24/instapaper-beyond-in-the-safari-extensions-gallery/",
"tags": ["beyond","extension","instapaper","safari"],
"date": "Aug 24th, 2010",
"ts": "1282698420",
"summary": "I just got word from Apple that Instapaper Beyond is being added to the Safari Extensions Gallery ! That s great news, for the most part it means that I ll have to run all future updates through Apple before releasing them, but I assume that will just be a minor formality in the grand scheme of things. I have a few new features completed and ready to launch, actually, but I ll save them up for a bigger update. I m also going to try to find time to build out a dedicated project page, and maybe even add a screencast. I do love making screencasts. I ll be keeping an eye on the gallery to see when it shows up. Follow @ttscoff on Twitter if you re curious, I m sure I ll have an excited tweet or two when it does.",
"keywords": ["apple","communities","instapaper","iphone","networking","online","safari","social","twitter","apple","beyond","extensions","gallery","instapaper","safari","twitter","added","assume","before","bigger","build","completed","curious","dedicated","excited","features","formality","gallery","going","grand","great","keeping","launch","making","maybe","minor","project","ready","releasing","scheme","screencast","screencasts","shows","through","ttscoff","updates"]
},{
"title": "Three things I discovered today",
"url": "/2010/08/16/three-things-i-discovered-today/",
"tags": ["aditi","experiments","family","markdown","multimarkdown","voodoopad"],
"date": "Aug 16th, 2010",
"ts": "1282007700",
"summary": "Amidst trying to get ready to launch a major website and playing with my own personal projects, I realized three things today. How important they are is debatable, and their usefulness depends entirely on what you re working on right now. VoodooPad 1 supports column selection (hold down the option key and drag) and non-contiguous text selection. The former is a major boon in many situations, such as wanting to remove all of the spaces/tabs between a number at the beginning of lines in a list, and the first character in the list. That would make more sense if I had a picture for you, but this is a quick post and there s no time for such frivolity. Just try it. The latter is neat, but I ve never really found a use for it. By holding down the Command key and dragging in areas that don t touch, you can create multiple selections and operate on them all at once. I m sure there s a valid use case for that I just think it s neat that it s there. I m weird like that. Python Markdown supports attributes. By placing in the alt text for an image definition, for instance, you can add within that element. It doesn t work very well for things like horizontal rules (messes up the parsing) or unordered lists (gets assigned to individual list items), but for paragraphs, images and other block elements, it s awesome. Markdown has become one of my favorite writing tools, so this is cool news. 2 3 When my wife 4 is out-of-town for a week, things go to hell pretty fast. I didn t just discover that today, but I further proved it. I ll explain why I care about the second item in an upcoming post (teaser: it s about VoodooPad, Python Markdown Extra and running a live website with VoodooPad). You may never get an explanation on the third item, but I m sure you ll be all right with that. Bonus discovery: Our pit bull, Emma, is totally awesome. You know you want to click here for a taste of the awesomesauce. For the last week, it s just been her, me and a crazy pit mix we re fostering named Honey , and we all still love each other. Bonus tip: want to know a nifty way to get the direct image urls from your (or anyone s) Flickr images, despite the new Flickr design? Use getURLinfo . You just enter the url of the page after their url, and optionally add a format (xml or json) to the end as a query string: http://geturlinfo.appspot.com/http://www.flickr.com/photos/circlesixdesign/3431867259/?format=json . Works well for finding out where shortened url s go, too if you",
"keywords": ["languages","markdown","multimarkdown","programming","python","voodoopad","aditi","amidst","babelmark","bonus","command","dingus","extra","flickr","honey","markdown","multimarkdown","python","seriously","voodoopad","works","ability","anyone","appspot","areas","assigned","assume","attributes","awesome","awesomesauce","based","because","becomes","beginning","between","block","character","check","circlesixdesign","click","column","comparison","contiguous","crazy","create","debatable","definition","depends","design","direct","discover","discovery","doesn","dragging","element","elements","enter","entirely","explain","explanation","extra","favorite","finding","first","flavors","flickr","format","former","fostering","found","frivolity","geeks","general","geturlinfo","geturlinfo","goodies","handy","holding","horizontal","image","images","implementation","important","individual","instance","items","killing","languages","latter","launch","lists","loved","loving","major","messes","multiple","named","nifty","notebook","optionally","options","paragraphs","parsing","personal","photos","picture","placing","playing","projects","proved","query","quick","reading","ready","realized","recently","remove","right","rules","running","sandbox","scripts","second","selection","selections","sense","shortened","shown","similar","situations","spaces","string","supports","syntax","tagging","tapped","taste","teaser","testing","think","third","threw","today","tools","totally","touch","triggers","trying","ultimate","unordered","upcoming","usefulness","valid","wanting","website","weekend","weird","where","while","within","working","writing"]
},{
"title": "Is your URL too short? Try our system, free!",
"url": "/2010/08/14/is-your-url-too-short-try-our-system-free/",
"tags": ["experiments","launchbar","leopard","service","shortener","terminal"],
"date": "Aug 14th, 2010",
"ts": "1281798000",
"summary": "I was sifting through my previous blog after Jeffery Zeldman kindly sent a lot of visitors in that direction for some TextMate starter tips . Whilst milling around, I stumbled upon an old trick I used to use in Quicksilver (before I gave up on it 1 ), but had forgotten about since. It s a very simple little shell command which uses to track down the destination of a shortened url (or any link with a redirect). It works with an assortment of services, including bit.ly, tinyurl.com, ow.ly, etc. It returns the destination address (the original url), and you can pass that on to whatever you like! Side note: I ve been working on a little site called JustTheLinks which makes liberal use of url-lengthening. It grabs all of your tweets from your home timeline which contain links, and creates a live-updated list with expanded urls and titles. It uses PHP s curl to do the trick, so it s the same concept. It s in-progress, but feel free to check it out at http://justthelinks.com ! Anyway, I decided to update the Quicksilver action and adapt it for some other uses. I m happy to report that it s still quite useful as a command line script, a LaunchBar action or a System Service. This post has code for all three, so take your pick! The command in this script has two options specified, -I and -s. -I tells it to fetch only the headers of the requested URI, and the -s tells it to suppress error messages (silent). The result is a short response which contains the location of the redirect, which is piped to . We look for the line in the response containing Location and print the second field of that line, which is the destination url. Here are a few ways I thought of to put it to use: The first thing I did was whip up a shell script to run from the command line. Just create a text file wherever you keep scripts 2 , or make a new directory somewhere for it. Paste in the code below, and name it something that makes sense to you. I went with , because it s following the redirect path, and was taken (and lengthen didn t seem as much fun to type ). The script looks for a single argument, which would be the shortened url, and if it doesn t receive one it tries the clipboard. So, if you already have the url in your clipboard, which is a pretty safe bet in this case, you can just run the script with no arguments. I heart LaunchBar . Like Quicksilver, you can easily build actions for it that act on different types of input. This one just acts on text you paste or send to",
"keywords": ["applescript","launchbar","locator","quicksilver","resource","safari","textedit","textmate","actions","anyway","applescript","automator","check","clever","cocoa","editor","expand","hopefully","jeffery","justthelinks","lastly","launchbar","leopard","location","paste","quicksilver","replaces","safari","script","service","services","shell","shortened","sorry","system","terminal","textedit","textmate","whilst","zeldman","absolute","across","action","actions","adapt","address","anywhere","argument","arguments","assortment","assumes","attempting","automatically","because","before","below","block","build","called","check","click","clipboard","comes","command","compiled","concept","contain","containing","contains","contextual","crashy","create","creates","decided","description","destination","development","different","direction","directory","displays","doesn","easily","editor","either","environment","error","expanded","experiments","favorite","fetch","field","first","folder","forgotten","going","grabs","happy","headers","heart","including","input","interesting","justthelinks","kindly","lengthen","lengthening","lengthens","liberal","links","little","location","looks","makes","menubar","messages","milling","named","often","opposite","options","origin","original","paste","piped","point","popup","posted","prefer","previously","print","profile","receive","receives","recognize","redirect","replace","report","response","returns","right","script","scripts","second","selected","selection","sense","services","shell","short","shortened","shortening","sifting","silent","simple","since","single","snippet","somewhere","starter","stumbled","submenu","suppress","taken","tells","thought","through","timeline","tinyurl","titles","track","trick","tries","tweets","types","unknown","updated","useful","variable","version","visitors","wanted","whatever","where","wherever","while","whole","workflow","working","works","world"]
},{
"title": "A quick TextMate KeyBindings tip",
"url": "/2010/08/13/textmate-keybinding-tip/",
"tags": ["keybindings","keyboard","terminal","textmate"],
"date": "Aug 13th, 2010",
"ts": "1281727140",
"summary": "I love the keyboard, and I love keyboard shortcuts. It s one of the reasons TextMate and I get along so well. There s one thing that bothers me any time I m editing text (in any application), though: having to move my right hand all the way over to the arrow keys just to move forward a couple of characters, say, after an auto-paired set of parenthesis that I want to get out of. I know, it s stupid for two reasons: first, it s just not that big a deal, and second, I could just use the Emacs keybindings (C6;F,C6;B,C6;P,C6;N, etc.). Well, to that I say phooey on both counts. It is a big deal I ve probably lost hours of my life to that motion. As to the latter, I didn t grow up on Emacs, and those shortcuts have just never nestled into my muscle memory. In related news, I already have some of those keys bound elsewhere. I used to use KeyRemap4Macbook to map control-j,i,l and m to the cursor keys, but haven t installed it since my last clean wipe (just in case it was part of the reason I had to do the clean wipe to begin with). I missed that convenience, though, so after 15 minutes of Googling, here s the answer Allan Odgaard, creator of TextMate, offers the beginning of the solution on the TextMate blog . I found a little more detailed information around the net, too. Basically, you can add or edit a file called in to add the keystrokes to all Cocoa applications. Mine looks like this now: The first part of each pair is the keystroke, and the second part is the action. To find a list of the available actions, I just looked at , which has all of the default OS X keybindings in it. You ll need Property List Editor to view the file in its default state. To view the file in a text editor, you have to convert it to an XML (old school and plain text) plist. If you re curious, copy the file to your Desktop and, in Terminal, run . After editing and restarting your Cocoa apps, your new keyboard shortcuts will be available. That s when I found the next problem. TextMate has C6;J mapped to Reformat and Justify under the Text menu. I never, ever use that command, so that was just annoying. I first tried to just override it in System Preferences- Keyboard- Application Shortcuts, but that didn t do anything. Next I found a post on macosxhints that offered a Terminal () command for changing default Application shortcuts. For example: Guess what? That didn t do it. TextMate was still pwning the C6;J shortcut. Next stop, the Resources folder of the TextMate application. There",
"keywords": ["cocoa","emacs","keyboard","shortcut","textmate","allan","cocoa","desktop","editor","emacs","googling","guess","justify","keyremap","keyboard","macbook","odgaard","preferences","property","reformat","resources","shortcuts","system","terminal","textmate","action","actions","annoying","answer","applications","arrow","available","begin","beginning","bothers","bound","brilliant","called","changing","characters","clean","command","commented","complaining","control","convenience","convert","counts","couple","creator","curious","cursor","default","detailed","editing","editor","elsewhere","example","fingers","first","folder","found","function","functionality","happy","haven","having","hours","information","installed","keybinding","keybindings","keyboard","keystroke","keystrokes","latter","little","looked","looks","macosxhints","mapped","mapping","memory","mentioned","minutes","missed","motion","movedown","muscle","nestled","offending","offered","offers","override","paired","parenthesis","perfectly","phooey","plist","press","problem","pwning","reasons","regularly","related","restarted","restarting","right","school","second","selecting","shift","shortcut","shortcuts","since","solution","stories","stupid","tried","under","wanted","where","while","whole","world"]
},{
"title": "GReader Instapaper 0.2",
"url": "/2010/08/06/greader-instapaper-0-2/",
"tags": ["extension","instapaper","safari"],
"date": "Aug 6th, 2010",
"ts": "1281146700",
"summary": "I just pushed a tiny little update to the GReader Instapaper extension. It shortens the default speed at which the notifications disappear, and adds a settings item in preferences so you can adjust it if you want to. I think the 1300ms delay is a pretty good one, it was 5000 before (and everyone complained). All better. I cleaned up a few loose ends, fixed some error messages, general housekeeping. However, I m still stuck as to how to tell when a post to Instapaper fails. I m unable to get a response code from the async post, so all I can really tell is that there was a response. I can t tell if it was good or bad. So the notification will pretty much always tell you it was a success. If your articles aren t showing up in Instapaper, check your username and password in the settings and try again. I doubt I ll push much further on this, given that the Instapaper bookmarklet does a fine job with Google Reader, and you can trigger it with a -# if it s in your bookmarks bar, # being the position of the bookmarklet in the bar, from 1-9. GReader Instapaper v0.1 Download GReader Instapaper v0.1 Adds single-keystroke sending of the current article in Google Reader to your Instapaper account. Published 07/28/10. Updated 07/28/10. Changelog Donate More info",
"keywords": ["engines","feedly","google","instapaper","interface","programming","reader","search","searching","changelog","donate","download","greader","google","however","instapaper","published","reader","updated","account","adjust","again","article","articles","async","before","bookmarklet","bookmarks","check","cleaned","complained","default","disappear","doubt","error","everyone","extension","fails","fixed","general","housekeeping","keystroke","little","loose","messages","notification","notifications","password","position","preferences","pushed","response","sending","settings","shortens","showing","single","speed","stuck","success","think","trigger","unable","username"]
},{
"title": "Placeholder image TextMate Snippet",
"url": "/2010/08/05/placeholder-image-textmate-snippet/",
"tags": ["snippet","textmate"],
"date": "Aug 5th, 2010",
"ts": "1281055200",
"summary": "Yesterday, I posted a quick TextExpander snippet for inserting placeholder images into an HTML layout using placehold.it . I took a minute today to convert this to a TextMate snippet as well, and wanted to share it as I find it immensely useful. If you ve never created a TextMate Snippet before, read on. If you re an old pro, skip down to the code below . To create a Snippet in TextMate, go to Bundles- Bundle Editor- Show Bundle Editor. If you don t already have a personal Bundle, you should create one to keep your custom Snippets and Commands separate from other bundles. Just use the plus sign button in the bottom left and choose New Bundle, then name it with your own name (or whatever you like). Select that bundle in the left column and use the plus sign button at the bottom again, this time choosing New Snippet. Name the new Snippet Placeholder Image and set the Activation to Tab Trigger and enter your preferred shortcut in the field next to it. I m using dummy, which is the same as my TextExpander snippet, but I have TextExpander disabled in TextMate, so it overlaps nicely. Snippets in TextMate don t save until you select another one or close the Bundle Editor, so change your sidebar selection before you try it out. You should be able to create or edit any HTML or PHP file now, and type your shortcut, followed by a tab, and get a placeholder image. After it s inserted, you can tab through and change the attributes. This Snippet gives you a full image tag with tab stops 1 for width, height, background color, foreground color and title text. The title text is entered in the alt attribute, and mirrored into the query string so that you can just type alphanumeric characters with natural spaces and it will substitute the necessary plus signs in the mirrored version. The width and height are included as mirrors in the title, but you can delete that in the final tab stop. Tab stops allow you to have multiple editable parts in the inserted code. The first one is highlighted automatically when you insert the snippet, and you can edit it and press tab to go to the next one. You can also skip editing and just tab to the next one, or delete the entire selection and tab on.",
"keywords": ["howbert","snippets","textexpander","textmate","activation","bundle","bundles","commands","creating","editor","image","placeholder","snippet","snippets","textexpander","textmate","trigger","using","yesterday","again","allow","alphanumeric","another","attribute","attributes","automatically","background","before","below","bottom","bundle","bundles","button","change","characters","choose","choosing","close","color","column","convert","create","created","custom","disabled","dummy","editable","editing","enter","entered","entire","field","first","followed","foreground","gives","height","highlighted","image","images","immensely","included","inserted","inserting","layout","minute","mirrored","mirrors","multiple","natural","necessary","nicely","overlaps","parts","personal","placehold","placeholder","posted","preferred","press","query","quick","selection","separate","share","shortcut","sidebar","signs","snippet","spaces","stops","string","substitute","through","title","today","useful","using","version","wanted","whatever","width"]
},{
"title": "Instant placeholder images with TextExpander",
"url": "/2010/08/04/instant-placeholder-images-with-textexpander/",
"tags": ["snippet","textexpander","webdesign"],
"date": "Aug 4th, 2010",
"ts": "1280972580",
"summary": "When designing for the web, placeholder images can come in handy during initial layout, and even during wireframing, if you happen to wireframe in markup. I ve been using a TextExpander snippet to generate instant placeholder images at any size ( almost ) and with appropriate titles using Placehold.it . It s a really handy snippet to have in your web design toolkit. Just create a new plain text snippet, title it Placeholder Image, give it whatever shortcut makes sense to you, and then add this code: It uses TextExpander 3 s Fill feature to get the width, height and title from you before it inserts the image tag. If you have multiple words in your title, use plus signs (+) instead of spaces (url encoded). I ll be turning this into a TextMate snippet soon, too, and I ll post that when I have another minute. I d love to hear about any other great tools you re using!",
"keywords": ["design","development","dropbox","howbert","snippets","textexpander","textmate","image","placehold","placeholder","textexpander","textmate","almost","another","before","create","design","designing","encoded","feature","great","handy","happen","height","image","images","initial","inserts","instant","layout","makes","markup","minute","multiple","placeholder","sense","shortcut","signs","snippet","spaces","title","titles","toolkit","tools","turning","using","whatever","width","wireframe","wireframing","words"]
},{
"title": "A cleaner HootSuite icon for Fluid/Prism",
"url": "/2010/08/04/a-cleaner-hootsuite-icon-for-fluidprism/",
"tags": ["design","fluid"],
"date": "Aug 4th, 2010",
"ts": "1280966700",
"summary": "This is just a quick pointer to an icon I whipped up this evening for HootSuite . I thought I d share it in case anyone else found the default icon packed with the Fluid SSB download ( available here ) unsatisfactory. Their icon is too big and looks awkward in my Dock, so I trimmed it down and vectorized the owl to clean up the lines a bit. If you haven t tried HootSuite, it s a great social media client with a layout similar to TweetDeck . It lacks some of the features that TweetDeck has, but not too many, and it has the benefit of not crashing. Over. And over. Check it out for all your Twitter, Facebook, LinkedIn, Ping.fm, etc. needs.",
"keywords": ["dashboard","facebook","hootsuite","linkedin","media","social","tweetdeck","twitter","check","facebook","fluid","hootsuite","linkedin","tweetdeck","twitter","anyone","available","awkward","benefit","clean","client","crashing","default","download","evening","features","found","great","haven","lacks","layout","looks","media","needs","packed","pointer","quick","share","similar","social","thought","tried","trimmed","unsatisfactory","vectorized","whipped"]
},{
"title": "Blue Bags: new song with 33% more metaphor",
"url": "/2010/08/02/blue-bags-new-song-with-33-more-metaphor/",
"tags": ["music","personal","precious","recording"],
"date": "Aug 2nd, 2010",
"ts": "1280787480",
"summary": "You can count yourself lucky if you have no idea what blue bags with red letters might be, but I think you ll get the idea from the lyrics to this song nonetheless. Within certain circles, the stamp bag 1 is a common form of packaging powdered goods at least in New York and other high-traffic cities. A small envelope, often blue in my day, stamped with red letters which spell out the name of the dealer/batch the contents are from. I do my best never to write blatantly drug-related lyrics. I try to use metaphor and a little imagination to create imagery which people who have been there can relate to, while still being meaningful to those who don t have such self-destructive proclivities. This is an older song of mine, and marks the beginning of this lyrical rule for me. I may not have nailed it, but I think it was a good start. The guitar in this song is the first acoustic I picked up when I started this new leg of my life, and its sound is far from beautiful. The bass is a dumpster find from my punk rock days, recorded through a direct box, and has a sound I would call trashy, if you ll excuse the pun. All told, though, I rather like the final product, and hope you do, too. I m posting the lyrics after the player, as this is an older recording and I don t think my mix on the vocals was optimal for making out all of the words. I m going to go back and add lyrics to the others in this series as well, when I get a chance. He said "I've got the blue bags with the red letters, and You can look away but don't you ever tell me never, for a buck and a quarter, man, I'll do you better, you can walk away but don't you ever tell me never" And I know... I think my brain is trying to kill me Because some of us we find our way out, some of us die trying These are the words she breathed to me as she lay dying She said, I'm drowning in blue bags with red letters I'm drowning in blue bags with red letters I'm drowing, I'm drowing... Curious? See this article .",
"keywords": ["business","lyrics","music","because","can't","curious","sailing","waiting","within","acoustic","again","article","batch","beautiful","before","beginning","blatantly","bleeds","brain","breath","breathed","brown","can't","certain","chance","circles","cities","common","contents","corner","count","create","dancing","dealer","death","destructive","direct","drags","drowing","drown","drowning","drying","dumpster","dying","envelope","everything's","excuse","feels","first","forgiven","found","freedom","giving","going","goods","guitar","heart","heaven","imagery","imagination","letters","little","living","lonely","lucky","lyrical","lyrics","making","marks","meaningful","metaphor","nailed","nonetheless","often","older","optimal","others","packaging","people","picked","player","posting","powdered","proclivities","product","pulled","quarter","rather","recorded","recording","refrain","relate","related","remember","restrain","series","she's","single","small","smells","sound","spell","stamp","stamped","started","steal","think","through","traffic","trashy","tried","trying","veins","vocals","waiting","wallow","we're","while","words","world","write","wrote"]
},{
"title": "Single-keystroke Instapaper in Google Reader",
"url": "/2010/07/28/single-keystroke-instapaper-in-google-reader/",
"tags": ["extension","safari"],
"date": "Jul 28th, 2010",
"ts": "1280325720",
"summary": "This was a quick plugin I put together last night when I got too frustrated to work on my actual jobs. It lets you define a single shortcut key which, after you input your Instapaper username and password, will let you send the currently-selected article in Google Reader straight to Instapaper. It works fine with themes like Helvetireader ( Safari extension ), and functions in both list view and expanded view. Click below to download, unzip the extension and double click it to install. Head for Preferences- Extensions and set up your Instapaper username and password, and pick a hotkey. The default hotkey is i , which doesn t interfere with existing Google shortcuts. Tailor to taste. The only issue I m having right now is that it doesn t fail properly if you have an incorrect user/pass combination. It tells you it succeeded, but doesn t post to your account. I ll have to add a verification step at some point in the process. For now, if things aren t showing up in Instapaper for you, check your username and password in the Extensions preferences. Be sure to check out Instapaper Beyond , too! GReader Instapaper v0.1 Download GReader Instapaper v0.1 Adds single-keystroke sending of the current article in Google Reader to your Instapaper account. Published 07/28/10. Updated 07/28/10. Changelog Donate More info",
"keywords": ["feedly","google","instapaper","iphone","reader","safari","beyond","changelog","click","donate","download","extensions","greader","google","helvetireader","instapaper","preferences","published","reader","safari","tailor","updated","account","article","below","check","click","combination","default","define","doesn","double","download","expanded","extension","frustrated","functions","having","hotkey","incorrect","input","install","interfere","keystroke","night","password","plugin","point","preferences","process","properly","quick","right","selected","sending","shortcut","shortcuts","showing","single","straight","succeeded","taste","tells","themes","together","unzip","username","verification","works"]
},{
"title": "Instapaper Beyond 1.8.9",
"url": "/2010/07/26/instapaper-beyond-1-8-9/",
"tags": ["beyond","extension","instapaper","safari"],
"date": "Jul 26th, 2010",
"ts": "1280151060",
"summary": "Instapaper Beyond version 1.8.9 is another small release with a couple of usability enhancements. Thanks to everyone who s been submitting ideas and bugs, I ll do my best to keep up! Alphabetical sorting of the help HUD (A-Z,a-z) Edit a bookmark with E (Shift-E) you can tab through the fields and submit with Enter, returning you to your listing Scroll animation when navigating bookmark lists makes it more obvious which direction the page just scrolled you in when selecting a bookmark partially or entirely offscreen. Your support is greatly appreciated! Or me on GitHub!",
"keywords": ["bookmark","evernote","instapaper","iphone","pinboard","safari","twitter","alphabetical","beyond","download","enter","github","instapaper","scroll","shift","thanks","animation","another","appreciated","bookmark","couple","direction","enhancements","entirely","everyone","fields","greatly","ideas","includes","listing","lists","makes","navigating","obvious","offscreen","release","returning","scrolled","selecting","small","sorting","submitting","support","through","usability","version"]
},{
"title": "Instapaper Beyond 1.8.7",
"url": "/2010/07/25/instapaper-beyond-1-8-7/",
"tags": ["beyond","extension","instapaper","safari"],
"date": "Jul 25th, 2010",
"ts": "1280076000",
"summary": "Update: I just pushed out version 1.8.8 with a minor fix for some spacebar-in-forms issues. The download link and auto-update file have already been updated. Thanks to John P for the bug report! This is relatively minor update for Instapaper Beyond , the Safari extension which gives you full Ajax loading and keyboard control over Instapaper . It does, however, have one very cool new feature, and one often-requested fix. The new feature is type-ahead folder selection in the popup HUDs for Move To and Go To Folder. When the HUD pops up, you can just start typing and it will find the first folder that matches the letters you ve typed and select it. The arrow keys function as usual, and enter or right arrow will open the selected folder. If you type a few letters and then hit backspace or escape, it will clear the filter field. If you pause for a second, then start typing again, it will start a new filter, QuickSilver/Launchbar style. The other noticeable change is that it works better with Greystyled now. It s not perfect, as Greystyled wants to do its own thing with the Ajax-loaded text versions and there s a major conflict. I check for Greystyled now, though, and give it a little leeway. The text view will not look like it does in Greystyled without IB loaded, but it will work for you. If you have Instapaper Beyond loaded, it will either update automatically, or show up in your available updates if you have auto-updates turned off. If you haven t loaded it, download it below and give it a try! Your support is greatly appreciated! Or me on GitHub!",
"keywords": ["evernote","instapaper","safari","beyond","folder","github","greystyled","instapaper","launchbar","quicksilver","safari","thanks","again","ahead","appreciated","arrow","automatically","available","backspace","below","change","check","clear","conflict","control","download","either","enter","escape","extension","feature","field","filter","first","folder","forms","function","gives","greatly","haven","however","issues","keyboard","leeway","letters","little","loaded","loading","major","matches","minor","noticeable","often","pause","popup","pushed","relatively","report","right","second","selected","selection","spacebar","style","support","turned","typed","typing","updated","updates","version","versions","wants","works"]
},{
"title": "Notes on cleaning up the MediaTemple hack (JohnnyA)",
"url": "/2010/07/24/notes-on-cleaning-up-the-mediatemple-hack-johnnya/",
"tags": ["wordpress","exploit","security","webdesign"],
"date": "Jul 24th, 2010",
"ts": "1280009940",
"summary": "NOTE: Be sure to read through the comments, there s a lot of additional and very useful information in there. I ll compile the notes as soon as I m able and add them to the main post. First, the hack described here is not MediaTemple s fault, nor an exploit of their security system. It s a reminder to all of us that checking permissions and updating software are the bare minimum we can do to avoid a lot of headache and potential security issues. MediaTemple was apparently just targeted because of their size, the responsibility for the hacked sites lies with the site s owner/webmaster. 1 Second, it doesn t just affect WordPress. I found bits of the exploit in MODx files, static files, and even some sites that weren t accessible through the internet. Lastly, to the perpetrators: thanks for the security reminder, but curses upon you and your families. May you spend eternity grepping for obscure lines of code while every client you have calls you to tell you their business is going to fail because their site is throwing security warnings. What follows is not a full-fledged guide to cleaning up a hacked server, just some notes from my experience with this round. The exploit is a little difficult to notice. It inserts percent-escaped lines of code into JavaScript files you re already including on your page, which then use document.write to add redirect code to the rendered page. This means that viewing source won t show it, you have to see the rendered source, ala Firebug, Safari Web Inspector, or one of various plugins that show the actual source after the DOM has loaded. What you ll find in the rendered source is a little function that uses an array of colors and urls to generate somewhat random redirects. A url called edisonsnightclub is always in the mix, so that s what I search for. The redirect has the side-effect of triggering Firefox s security warnings, which is a fair sight better than just sending clients off to malicious sites. However, it appears to only execute the code for search engine bots, so it could potentially go unnoticed on your site for quite some time. I did my cleanup job hastily, and didn t track everything as well as I should have. There were lines inserted into main template PHP files which I just quickly deleted. These always began with , so that became my server-wide search pattern (more on that in a second). This didn t only affect WordPress, it also hit my MODx sites and the exploit would probably hit static sites",
"keywords": ["javascript","jquery","wordpress","check","cleanup","codex","firebug","firefox","first","gridserver","hardening","however","inspector","javascript","johnnya","lastly","mediatemple","safari","second","tinymce","tracking","wordpress","wordpress","access","accessible","across","admin","apparently","appears","array","avoid","became","because","before","began","blast","block","business","called","calls","careful","change","check","checking","cleaned","cleaning","cleanup","client","clients","colors","command","comment","comments","completely","confidence","contains","content","corrections","criteria","curses","databases","dates","deleted","described","difficult","directory","document","doesn","edisonsnightclub","engine","enough","entry","escaped","eternity","everything","examples","execute","existence","experience","exploit","extra","false","families","fault","files","filter","first","fledged","follows","found","function","gives","going","grepping","guide","hacked","hastily","headache","identifiable","included","including","infected","information","inserted","inserts","insidious","install","installs","interesting","internet","issues","itself","jquery","javascript","little","loaded","longer","looking","looks","malicious","malware","manually","match","mentioned","narrow","notes","obscure","opening","owner","pattern","patterns","percent","permissions","perpetrators","picked","plugin","plugins","point","positives","potential","potentially","quickly","random","realized","recent","redirect","redirects","reminder","remove","rendered","responsibility","right","rootkit","round","script","scripts","search","second","secure","security","semicolon","sending","server","several","sight","similar","single","sites","software","somewhat","source","specific","spend","starting","statement","static","string","system","tables","targeted","template","thanks","theme","through","throwing","timestamps","today","track","triggering","truncated","turned","unique","unnoticed","updated","updating","useful","users","various","viewing","warnings","webmaster","weren","where"]
},{
"title": "Make amazing coffee without the hassle",
"url": "/2010/07/24/make-amazing-coffee-without-the-hassle/",
"tags": ["coffee","personal","quicktip"],
"date": "Jul 24th, 2010",
"ts": "1279990080",
"summary": "I ve really been enjoying my current coffee and tea setup, so I thought I d share. There s an investment involved, but you can set it up for anywhere from about $50 to $200, plus the ongoing cost of coffee beans and tea. Here s the rundown. Thanks to an old friend of mine ( @tubetone ), I ve discovered Sweet Maria s , a California-based coffee supplier which sells excellent coffee beans (primarily green) online. I don t roast my own (yet), so I ve been ordering espresso-roasted coffee beans from them, and they re excellent. You can do whatever you like with preparation, but if you start with less-than-satisfactory beans, you might as well just stir up some Folgers. Research growers online and in your area, and find some good beans you can enjoy without the guilt of rainforest destruction and slave labor. It s just more fun that way. I ve been through an array of grinders in my life, but it s only been recently that I ve invested in a conical burr grinder . The one I got may not be perfect, but it works just fine. It quietly creates a grind to your exact specifications, without warming or burning the beans in the process. For this preparation setup, I grind to the fine end of the drip setting, and dial it to 20 seconds which gives me the exact amount of grounds I need and doesn t require me watching over it. I keep the sealed hopper full of beans, and then just grind out what I need when I m making coffee. There are plenty of options for conical burr grinders. The only reason I really prefer them over your average Black and Decker is granular control over the fineness of the grounds, but do what works for you (and your budget). Say what you will about the AeroPress ($18.99 on Amazon right now), which is essentially a glorified French Press, but it makes the best coffee I ve ever had outside of an expensive espresso bar. It takes about 45 seconds to make a great cup of coffee, once you have the hot water and grounds ready. I d recommend alternatives to this, but I haven t found any. The AeroPress is inexpensive and, to rip off a phrase, it Just Works . The optimum temperature for the AeroPress is 175 , and I ve got that nailed and on tap with my Zojirushi water heater 1 . I purchased it from Mandala Tea (friends of mine) for the purpose of brewing perfect tea, but it s doing double duty now that I have my AeroPress. 175 works perfectly for green tea and coffee, so I generally just leave it set there and have hot water on tap. Combine pre-heated water",
"keywords": ["aeropress","amazon","black","california","coffee","french","press","aeropress","amazon","black","brewing","california","chinese","daily","decker","folgers","french","ginseng","grinding","mandala","maria","oolong","press","research","shrimp","thanks","works","zojirushi","alternatives","amount","anyone","anywhere","array","average","based","beans","begin","bottom","brewing","bubbles","budget","burning","choose","cleanup","coffee","conical","control","creates","destruction","discovered","dishwasher","doesn","doing","double","drink","enjoy","enjoying","especially","espresso","essentially","exact","excellent","expensive","fineness","first","found","friend","friends","generally","gives","glorified","granular","great","green","grind","grinder","grinders","growers","guilt","handy","hassle","haven","heated","heater","hopper","inevitably","inexpensive","invested","investment","involved","keeps","labor","leave","loose","makes","making","measured","minute","nailed","ongoing","online","options","ordering","outside","perfectly","phrase","picked","plenty","plunger","point","popping","prefer","preparation","primarily","process","purchased","putting","quietly","rainforest","ready","recently","recommend","religious","right","roast","roasted","routine","rundown","satisfactory","scatter","sealed","seconds","sells","setting","setup","share","shimp","shrimp","simple","single","sipping","slave","specifications","starts","stocked","stove","supplier","supplies","sweeping","takes","technique","temperature","thermometer","thermos","thought","through","toward","trash","trying","tubetone","under","using","warming","watching","water","whale","whatever","where","working","works"]
},{
"title": "Fixing Gleebox",
"url": "/2010/07/17/fixing-gleebox/",
"tags": ["extension","gleebox","userstyle"],
"date": "Jul 17th, 2010",
"ts": "1279411860",
"summary": "If you haven t tried it, gleeBox is an amazing extension. I have it installed in my Firefox and Chrome setups, and I m more than thrilled that it s finally available for Safari. It lets you do a lot of crazy (and useful) things with keyboard commands on any website. There s a great writeup over at PimpMySafari.com , so I won t go into depth on the wonderful parts. I ll concentrate on the one thing that bugs me about gleeBox: the highlight colors on found and selected elements. They are, in my opinion, a little obnoxious. Fortunately, another Safari extension comes to the rescue. User CSS is a pretty effective way to use slightly-modified userstyles and generate your own CSS overrides. If you happen to have both extensions installed (or are on your way to get them right now), here s a recipe for de-uglifying gleeBox ( settings screenshot ): The highlights should be prettier now, even if the change is fairly subtle. The style also removes the padding and shadow on the selected item so that, in most cases, selected items don t jump around and move other elements as you tab through the page. Let me know if it doesn t work for you. Obviously, the colors are adjustable to taste. You could even create special overrides for certain sites to match color schemes better I mean, if you were crazy obsessive or something. If you come up with a better all-around color set, let me know! By the way, the Reddit Twitter style is great in Safari! Here s a shot of it with custom gleeBox highlights!",
"keywords": ["cascading","chrome","firefox","google","reddit","safari","sheets","style","twitter","chrome","create","domains","firefox","fortunately","highlight","manager","override","pimpmysafari","reddit","safari","styles","twitter","adjustable","amazing","another","available","below","certain","change","color","colors","comes","commands","concentrate","crazy","create","custom","depth","doesn","effective","elements","extension","extensions","fairly","field","finally","found","gleebox","great","happen","haven","highlight","highlights","installed","items","keyboard","little","match","modified","obnoxious","obsessive","overrides","padding","parts","prettier","recipe","removes","rescue","right","schemes","screenshot","selected","settings","setups","shadow","sites","slightly","special","style","subtle","taste","thrilled","through","tried","uglifying","useful","userstyles","website","wonderful","writeup"]
},{
"title": "And now... something happier",
"url": "/2010/07/17/now-something-happier/",
"tags": ["music","personal","precious","recording"],
"date": "Jul 17th, 2010",
"ts": "1279375200",
"summary": "Junky Angel, my last post, was a rather dark look into my psyche, which makes this next one, All Comes Spilling Out, seem happy by comparison. It s a love song, dark though it may be. Kind of like Robert Smith s more stable side doing a cover of Give My Love to Rose. Maybe. As with the other songs I ve posted so far, this one was penned long ago, but the recording was only finished recently. In this case, the recording was only started two weeks ago, and I ve pieced it together in my free time. I went a little synth on this one, and used some vocal effects I normally wouldn t (and probably shouldn t). All in all, though, I really like the way it came out.",
"keywords": ["frank","itunes","javascript","lyrics","music","ocean","robert","smith","valentine's","angel","comes","junky","maybe","robert","smith","spilling","comparison","cover","doing","effects","finished","happy","little","makes","normally","penned","pieced","posted","psyche","rather","recently","recording","shouldn","songs","stable","started","synth","together","vocal","weeks","wouldn"]
},{
"title": "Sad songs, part 2: Junky Angel",
"url": "/2010/07/16/sad-songs-part-2-junky-angel/",
"tags": ["music","personal","precious","recording"],
"date": "Jul 16th, 2010",
"ts": "1279332840",
"summary": "If not the saddest song I ve ever written, Junky Angel is at least in the top 5. I m not always this much of a downer, but I really needed to get this one up here as I start publishing my more recent work, mostly because this song in particular lays a historical and emotional backdrop for the journey and growth that follows. The song is not entirely literal. There isn t one, singular Junky Angel rather, it s an amalgam of friends, lovers and acquaintances in my life who shared a common thread. For those who knew Jessica and might be wondering, this song was written before she died. It s about her, though, as much as it s about all of us. I don t need to provide much backstory for this song, it s a story in and of itself. I don t think it needs much further explanation at all, aside from noting that it s pretty long (~8m). Don t miss the last minute, though, it kind of all comes together at the end. I suppose that is when stories usually come together The lyrics and music were written by me, and I did the vocals, but the guitar and the recording chops on this one belong entirely to my friend Randy Kline (one of the best musicians I ve ever known). Thanks for checking it out. Next one s a little more upbeat, I promise.",
"keywords": ["christianity","lyrics","music","religion","spirituality","angel","jessica","junky","kline","randy","thanks","acquaintances","amalgam","aside","backdrop","backstory","because","before","belong","checking","chops","comes","common","downer","emotional","entirely","explanation","follows","friend","friends","growth","guitar","historical","itself","journey","literal","little","lovers","lyrics","minute","mostly","music","musicians","needed","needs","noting","particular","promise","publishing","rather","recent","recording","saddest","shared","singular","stories","story","suppose","think","thread","together","upbeat","usually","vocals","wondering","written"]
},{
"title": "Instapaper Beyond: fix for text style controls",
"url": "/2010/07/16/instapaper-beyond-fix-for-text-style-controls/",
"tags": ["beyond","extension","instapaper","safari"],
"date": "Jul 16th, 2010",
"ts": "1279270800",
"summary": "This is a bugfix release of Instapaper Beyond for Safari which brings the version up to 1.8.6. It fixes a few visual glitches, but most importantly it restores the functionality of the text style menu at the top of a read page, allowing you to set and remember the font, size, width and line spacing of your text view. I actually ended up rewriting the existing javascript as a module in Instapaper Beyond, so there s the possibility of easily extending it to handle more options. Background color, more fonts, etc. We ll see how far I get with that. My next order of business is to get it to work with some of the existing userstyles out there, but time has been tight for me when it comes to these side projects. I ll keep you posted. If you have Instapaper Beyond installed, it should show up in your updates (or be updated automatically, depending on your settings). If you want to download the extension, please use the link below. For more information on Instapaper Beyond, see the original post for the Safari Release . Your support is greatly appreciated! Or me on GitHub!",
"keywords": ["google","instapaper","iphone","locator","reader","resource","safari","background","beyond","github","instapaper","release","safari","allowing","appreciated","automatically","below","brings","bugfix","business","color","comes","depending","download","easily","ended","extending","extension","fixes","fonts","functionality","glitches","greatly","handle","importantly","information","installed","javascript","module","options","original","possibility","posted","projects","release","remember","restores","rewriting","settings","spacing","style","support","tight","updated","updates","userstyles","version","visual","width"]
},{
"title": "EverSave revisited, now with session restore!",
"url": "/2010/07/15/eversave-revisited-now-with-session-restore/",
"tags": ["applescript","evernote","leopard","safari","service"],
"date": "Jul 15th, 2010",
"ts": "1279245000",
"summary": "Safari 5 has brought several solutions for managing lists of open tabs, from the simple (like my TabLinks extension ) to full session-management capabilities (see the beautiful Sessions extension ). However, I ve found I still like using my EverSave script in many situations, primarily because it allows me to annotate, tag and sync my important sessions for later retrieval. One thing s been bugging me, though, and that s the inability to do a mass restore on a tab list (i.e. open them all at once). When I decided to fix this, the first issue was that when EverSave creates the Evernote note, it lets Evernote convert the list from HTML to Rich Text. Once it s stored in Rich Text Format (RTF), manipulating it via any shell language, including AppleScript, becomes quite difficult. It s not impossible, but I quickly decided it wasn t a route I wanted to wander down. Here s what I did do What I ended up doing was modifying what EverSave stored, and including the actual URL in the visible text of the note. It s not the prettiest solution, but it s the only way that this particular system will work. I did my best to minimize the visual presence of the URL using the rudimentary markup that Evernote actually pays attention to. The final product looks like this: The actual layout is still fully controlled by the _template property in the first line, which is the only line that s changed from the original script. I m posting the whole thing again, with this minor revision, for convenience. With a little bit of HTML (remember to escape your double quotes), you can modify the template to look however you like. Just keep in mind that Evernote strips 90% of markup out when it creates the note from your HTML, so stick with basic tags. See the original EverSave post for a breakdown of the script. I have this script saved as EverSave.scpt in my folder (create it if you don t have it), and launch it using FastScripts with a Command-Shift-S shortcut. Safari doesn t have anything bound to that key-combo, and it s easy to remember (Save As in most programs). This solution makes a few assumptions, but the script is easily customized to handle any differences in your setup. I went with a System Service (Snow Leopard) for the restore function, primarily because it allows me to act directly on selected text in Evernote. It s a very simple Ruby script that parses the selected text for urls, and then opens any that it finds in sequential order using your default browser.",
"keywords": ["evernote","eversave","format","iphone","locator","resource","safari","applescript","assign","automator","choosy","command","everrestore","eversave","evernote","fastscripts","format","however","keyboard","leopard","preferences","restoring","safari","saving","script","service","services","sessions","shell","shift","shortcuts","system","tablinks","again","allows","angle","annotate","assumptions","available","basic","beautiful","because","becomes","bound","brackets","breakdown","brought","browser","browsing","bugging","bulletproof","capabilities","certain","changed","choose","combination","combo","command","commented","complex","complexity","contain","contiguous","continue","controlled","convenience","convenient","convert","create","creates","customized","decided","default","desired","differences","difficult","directly","directs","doesn","doing","double","dropdown","easily","editing","ended","escape","explanation","expression","extension","fairly","finds","first","folder","found","fully","function","functionality","handle","highlighting","however","important","impossible","inability","including","language","later","launch","layout","links","lists","little","looks","makes","management","managing","manipulating","markup","minimize","minor","modify","modifying","opening","opens","original","parses","particular","posting","presence","prettiest","primarily","product","programs","property","quickly","quotes","reading","receives","regular","relieves","remember","replacing","restore","retrieval","revision","right","route","rudimentary","running","saved","script","seems","selected","selecting","selections","selectively","sequential","service","session","sessions","setup","several","shell","shortcut","simple","situations","solution","solutions","specifically","stick","stored","strips","system","target","template","typing","unnecessarily","useful","using","visible","visual","wander","wanted","where","whole"]
},{
"title": "New Safari Extensions give good source",
"url": "/2010/07/09/new-safari-extensions-give-good-source/",
"tags": ["extension","safari","source"],
"date": "Jul 9th, 2010",
"ts": "1278707820",
"summary": "A couple of very cool Safari Extensions came down the pipe today, both geared toward web developers and code monkeys. The two of them combined make viewing source in Safari a whole lot better. I love doing web development in Safari, and the Web Inspector pretty well covers the Firebug front for me, but these two extensions are going to make life much easier. BetterSource adds two buttons to your toolbar. The first is for viewing the source code of the current page in a new tab, and with line numbers and syntax highlighting. That in itself is a huge improvement over the native source viewer. The second does the same, but with the rendered source (after DOM changes and other javascript fun), which is basically what you get in the Inspector, but with less fuss and easier copying. Entropy provides the second extension (actually, a plugin to be placed in ~/Library/Internet Plugins), called the XML View Plugin . It provides a more Firefox-like view of XML data (which Safari fails to display), and also formats JSON data for easy viewing. For anyone who works with API s and consumes web services, this is a great tool and a welcome addition to Safari.",
"keywords": ["chrome","document","firefox","google","interface","model","object","programming","safari","bettersource","entropy","extensions","firebug","firefox","inspector","internet","library","plugin","plugins","safari","anyone","buttons","called","changes","consumes","copying","couple","covers","developers","development","display","doing","easier","extension","extensions","fails","first","formats","front","geared","going","great","highlighting","improvement","itself","javascript","monkeys","native","numbers","placed","plugin","provides","rendered","second","services","source","syntax","today","toolbar","toward","viewer","viewing","welcome","whole","works"]
},{
"title": "An ode to Twilight, and a TextMate tip",
"url": "/2010/07/08/an-ode-to-twilight-and-a-textmate-tip/",
"tags": ["design","textmate","themes"],
"date": "Jul 8th, 2010",
"ts": "1278585540",
"summary": "A good friend of mine, Christina Warren , just published a piece on Mashable / Dev Design about TextMate themes , and it warms my heart to know there are other people as dedicated to this aging text editor as I am. She also made her collection available on GitHub, so check that out if you re in the market for a new look. Despite the lack of any major TextMate update for years now, it s still my absolute favorite editor. I ve tried to let go of it. I played with Coda when it came out, and even tried to port some of my favorite TextMate bundles (without much success), but in the end it turned out that I really like having multiple windows taking advantage of my multi-monitor setup. At least when it comes to Terminal (which, thanks to Visor , is never further away than a double-tap on my control key), FTP programs and my editor. So that was a wash. Espresso came out a while after, and it was (and is) hands-down the sexiest text editor out there. I still use it whenever I can, but I just haven t found it to be as extensible and comfortable for me as TextMate. I can make TextMate do anything. Seriously, it made the coffee I m drinking. And now, I d like to pay tribute to one of the original TextMate themes which, in my opinion, is still the greatest theme ever. I m not alone in this, people espouse its virtues throughout the search engines , it s been ported to Espresso, Coda, even Notepad++ on Windows, and you can often find online code rendered in its pleasing pallete. I like light on dark themes in general, and I do, on occasion, like to switch to something high-contrast like Succulent or Vibrant Ink. I even like dark brown backgrounds with mellow foregrounds, sometimes. But I always end up back at Twilight, with its slate background and perfectly contrasted colors. It s detailed and effective in just about every possible syntax, and I find it perfect for readability. I just wish they hadn t gone and named a tale of girly vampires after it. I will offer a bit of a tip to try to bring this post around to being interesting? Did you know that you can actually pull off multiple themes in one? If you look at the screenshot in this post, you ll see two different color schemes, one for my MultiMarkdown files, and one for my PHP code. It s a customization of the Twilight theme, with custom colors added for Markdown-specific scopes. In the Preferences, under Fonts Colors, you ll note that every color definition has a related scope. You can add new scopes",
"keywords": ["christina","editor","github","markdown","multimarkdown","textmate","warren","windows","bundle","christina","colors","command","create","design","editor","enjoy","espresso","fonts","github","input","markdown","mashable","multimarkdown","notepad","nothing","output","preferences","seriously","succulent","terminal","textmate","twilight","vibrant","visor","warren","windows","absolute","added","advantage","aging","alone","assign","available","background","backgrounds","bring","brown","bundles","button","check","clipboard","coffee","collection","color","colors","combination","comes","comfortable","command","contrast","contrasted","control","cursor","custom","customization","dedicated","define","definition","definitions","detailed","different","double","drinking","editor","effective","engines","enter","espouse","extensible","favorite","field","files","foregrounds","found","friend","general","girly","greatest","hands","haven","having","heart","inside","interesting","light","major","market","mellow","monitor","multi","multiple","named","offer","often","online","original","pallete","particular","people","perfectly","piece","played","pleasing","ported","possible","press","pressing","programs","published","readability","related","rendered","schemes","scope","scopes","screenshot","search","setup","sexiest","simple","slate","sometimes","specific","stick","success","switch","syntax","taking","thanks","theme","themes","throughout","tribute","tried","turned","under","vampires","virtues","warms","whatever","whenever","while","windows","years"]
},{
"title": "Better WordPress security through comment filters",
"url": "/2010/07/01/better-wordpress-security-through-comment-filters/",
"tags": ["wordpress","comments","functions","hacks"],
"date": "Jul 1st, 2010",
"ts": "1277985420",
"summary": "I have an admin username (it s not admin) which I use to manage my WordPress blog, and an editor user with which I write posts and leave comments. Sometimes, though, I get confused, lazy or both, and end up leaving comments as my admin user. This rather defeats the purpose of using a non-default admin username, which is generally done for security purposes (if they can t guess the admin s username, it makes it that much harder to hack the admin account). More out of laziness than anything else (we can call it efficiency, right?), I dropped the functions below into my file. They filter my admin username out of any comments I leave. Wordpress also adds the user s name in a class for the list item of the comment, so I needed to remove that as well. If you re in a similar situation, feel free to grab the code and place it in your own theme s file, replacing the adminuser and regularuser placeholders with your own admin and editor usernames. The comment class code is modified from a hack found at WPRecipes .",
"keywords": ["author","class","commenting","tools","wordpress","wprecipes","sometimes","wprecipes","wordpress","wordpress","account","admin","adminuser","below","class","comment","comments","confused","default","defeats","dropped","editor","efficiency","filter","found","functions","generally","guess","harder","laziness","leave","leaving","makes","modified","needed","placeholders","posts","rather","regularuser","remove","replacing","right","security","similar","situation","theme","username","usernames","using","write"]
},{
"title": "Sad music for happy people, part 1",
"url": "/2010/06/27/sad-music-for-happy-people-part-1/",
"tags": ["music","personal","precious","recording"],
"date": "Jun 27th, 2010",
"ts": "1277665080",
"summary": "While I normally keep my blogging pretty technical, I ve decided to start sharing some of my more personal projects, just to see what happens. I ve been (slowly) working on a few songs for a very low-budget EP, and this is the first one I ve finished, per my own standards, anyway. It s not exactly polished between a lack of studio equipment and a personality that enjoys imperfections, I don t tend to end up with anything that anyone could consider professional, at least in the musical arena. That s ok with me, these aren t meant to make me a million dollars, just to be an outlet for some things that would otherwise drag me down. Here s where it gets really personal, and if you d rather just try out my Safari extensions and coding experiments, you should probably just hit that Code button in the menu at the top I wrote the lyrics to this song almost ten years ago in St. Paul, Minnesota, sitting on a squeaky bed with a very, very thin mattress, at what turned out, thankfully, to be my last stint in rehab. I had lost pretty much everything in my life that I cared about, and I had no idea where I was going next. I only knew that something had to be different this time. My roommate, a 300 lb. gorilla of a gangbanger named Angel, read them (with my permission) and told me that he sincerely felt I should hold on to them, that they would have more meaning to me when I could look back at them as a memory and not as a present horror. He was right. About a year after I was released from that treatment center, I picked up a cheap acoustic guitar and started playing again. I found a yellow, college-ruled notepad in the remainder of my belongings, and the words to this song were on the second page. The chords just happened, and it became a song I played often. It was another 7 years before I started working on a recording of it. What I m posting here is the third permutation of this song, but it maintains the same roots it had on the day I first strummed out this rather dark chord progression for it. The words themselves are no longer relevant to my life, but they serve as a strong reminder to me of where I ve been and where I need to keep heading. My wife complains that I never play any happy songs, for which I am apologetic. Music has always served as my outlet for the bad feelings, the fears and the sorrow. I m in a happy place now, and I enjoy happy music, but I m not at a point where I know how to make it, or really feel it when I play it. I cannot",
"keywords": ["chord","guitar","music","progression","raffi","safari","stringed","again","alone","angel","backstory","minnesota","music","raffi","safari","while","acoustic","again","almost","another","anyone","anyway","apologetic","arena","became","before","belongings","between","blogging","bounce","budget","button","cannot","cared","center","cheap","chord","chords","closer","coding","college","complains","consider","decided","different","distant","dollars","enjoy","enjoys","equipment","everything","experiments","extensions","fears","feelings","finished","first","found","gangbanger","going","gorilla","guitar","happened","happens","happy","heading","hoping","horror","imperfections","longer","lyrics","maintains","mattress","meaning","meant","memory","million","mindset","music","musical","named","normally","notepad","offer","often","outlet","permission","permutation","personal","personality","picked","played","playing","point","polished","posting","professional","progression","projects","rather","recording","rehab","released","relevant","reminder","right","roommate","roots","ruled","second","serve","served","sharing","sincerely","sitting","slowly","songs","sorrow","squeaky","standards","started","stint","strong","strummed","studio","technical","thankfully","themselves","third","treatment","turned","where","words","working","wrote","years","yellow"]
},{
"title": "Minor TabLinks update",
"url": "/2010/06/26/minor-tablinks-update/",
"tags": ["extension","safari","tablinks"],
"date": "Jun 26th, 2010",
"ts": "1277560860",
"summary": "I just posted version 1.3 of TabLinks . It doesn t fix all of the things I eventually want to fix, but it does do some rudimentary entity encoding that allows you to actually use HTML tags in the templates. I had said that would work as a template, but it didn t. Now it does. The automatic update is functioning, so anyone with TabLinks already installed should see it show up in their updates, or just update automatically if you have that option enabled. This version should show up as 1.3. If you re looking for the initial install, you can find it below. 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 More info Your support is greatly appreciated! Or me on GitHub!",
"keywords": ["address","buzzfeed","element","email","facebook","formats","languages","locator","markup","resource","changelog","donate","download","extension","github","published","safari","tablinks","updated","allows","anyone","appreciated","automatic","automatically","based","below","copying","defined","doesn","enabled","encoding","entity","eventually","functioning","gathers","greatly","information","initial","install","installed","looking","posted","presents","rudimentary","support","template","templates","updates","version"]
},{
"title": "Antique on PimpMySafari.com",
"url": "/2010/06/21/antique-on-pimpmysafari-com/",
"tags": ["antique","safari"],
"date": "Jun 21st, 2010",
"ts": "1277179680",
"summary": "There was a nice mention of Antique today over at PimpMySafari.com . Thanks, Scott! Despite having sworn off the Reader hacking, I ve actually been continuing development, making tweaks and expanding functionality. My ultimate goal is still to find a way to override the stylesheet via a global page in an extension, turning it from a hack into something a little more legitimate. If I can t pull that off, though, I ll have to share the current version again as a hack I think it s worth it. Take it from me, I m biased.",
"keywords": ["antique","chrome","google","kitti","reader","safari","vancouver","antique","pimpmysafari","reader","scott","thanks","again","biased","continuing","development","expanding","extension","functionality","global","hacking","having","legitimate","little","making","mention","override","share","stylesheet","sworn","think","today","turning","tweaks","ultimate","version","worth"]
},{
"title": "Visually differentiating your development site",
"url": "/2010/06/20/visually-differentiating-your-development-site/",
"tags": ["webdesign"],
"date": "Jun 20th, 2010",
"ts": "1277052600",
"summary": "I have most of the websites I work on set up with separate development (usually local 1 ) and production/deployment servers. It s pretty easy to keep straight when I m first designing a site, but going back later and making changes can cause some confusion with all the refreshing and dealing with caches and all. So I ve been using a trick to make it clear which version I m loading at any given time. All of my local development sites are mapped to .dev addresses, e.g. brettterpstra.dev. I use php to scan the current SERVER_NAME variable for .dev and insert an unobtrusive div at the top of the content if it s found. At the very top of the page (in the header file, assuming the site is modular), I insert this line: As a side note for those not familiar with this syntax: it s a ternary conditional operator, meaning that is set to either true or false based on the result of the condition. The format here is [variable] = [condition] ? [evaluate true] : [evaluate false] . Think of the question mark as if and the colon as else. It s just all on one nifty line. Now we use the variable to determine whether or not we re inserting an extra element in the markup. Right after my body tag, I have this logic: Yep, it just inserts a div if the $dev is true (SERVER_NAME contained .div). You can change the condition above to find whatever differentiates your development server from your production and/or deployment servers. That sticks a dogear image I made into the lower left corner of the site, in a fixed position that is always visible but rarely in the way (you re welcome to steal the image , if you want it). It s an easy trick, but I ve found it saves me a lot of frustration when I get too obsessed with a minor detail to bother looking at the URL and realizing I m not even refreshing the right version of the site. Maybe you never have that problem, in which case I applaud your level, collected personality. People like me, though, can always use a little extra help. I run a full dev site in Snow Leopard with a custom build of PHP5 and MySQL. I use MAMP or RubyStack when I need an alternate configuration, and map all of my dev addresses with VirtualHostX .",
"keywords": ["cascading","hosting","leopard","programming","sheets","style","lastly","leopard","maybe","mysql","people","right","rubystack","server","think","virtualhostx","above","addresses","alternate","applaud","assuming","based","bother","brettterpstra","build","caches","cause","change","changes","clear","collected","colon","conditional","configuration","confusion","contained","content","corner","custom","dealing","deployment","designing","detail","development","differentiates","dogear","either","element","extra","false","familiar","first","fixed","format","found","frustration","going","header","image","inserting","inserts","later","level","little","loading","local","logic","looking","lower","making","mapped","markup","meaning","minor","modular","nifty","obsessed","operator","personality","position","problem","production","rarely","realizing","refreshing","right","saves","separate","server","servers","sites","steal","sticks","straight","style","syntax","ternary","trick","unobtrusive","using","usually","variable","version","visible","websites","welcome","whatever"]
},{
"title": "TextMate drag command for Base64 encoding images",
"url": "/2010/06/19/textmate-drag-command-for-base64-encoding-images/",
"tags": ["command","shell","terminal","textmate"],
"date": "Jun 19th, 2010",
"ts": "1276956000",
"summary": "Just a quick hit on this one when hacking away at the styles of things one probably shouldn t be hacking away at, embedding images right in the CSS is a handy trick. It s done by Base64 encoding the image, removing line breaks from the resulting string, and using it to set the background property for the CSS rule. The image/png changes depending on the filetype that s encoded, becoming image/jpg or image/gif, etc. Anyway, I got tired of shelling out to encode the images, so here s a very simple command I set up in TextMate which allows me to drag any JPEG, PNG or GIF file into a CSS rule and get the background property with encoded image all at once. Don t try it with big images, but for the kind of thing you d actually put into a CSS file, it works great. It uses the command that s on a Mac by default. It encodes the file and outputs it to STDOUT, which is passed to awk. The extension of the dropped file is grabbed via Bash parameter substitution () and passed to awk where it s subbed in and all of the line breaks are removed. Presto. Here s the actual TextMate command if you want to try it out and aren t sure how to create a new one. Assuming you re running TextMate (kind of a prerequisite for a TextMate command), just unzip and double click the file. Base64 Image Encoder TextMate Drag Command v0.9 Download Base64 Image Encoder TextMate Drag Command v0.9 Encodes a dropped image and inserts a CSS background property with the result in TextMate. Works in embedded CSS and in CSS files. Published 06/19/10. Updated 06/19/10. Changelog Donate More info",
"keywords": ["cascading","format","graphics","interchange","network","portable","sheets","style","textmate","anyway","assuming","changelog","command","donate","download","encoder","encodes","image","presto","published","stdout","textmate","updated","works","allows","background","becoming","breaks","changes","click","command","create","default","depending","double","dropped","embedded","embedding","encode","encoded","encodes","encoding","extension","files","filetype","grabbed","great","hacking","handy","image","images","inserts","itself","liner","looks","outputs","parameter","passed","prerequisite","property","quick","removed","removing","resulting","right","running","shelling","shouldn","simple","string","styles","subbed","substitution","tired","trick","truncated","unzip","using","where","works"]
},{
"title": "RedirectBuster, another late night Safari Extension",
"url": "/2010/06/18/redirectbuster-another-late-night-safari-extension/",
"tags": ["experiments","extension","safari"],
"date": "Jun 18th, 2010",
"ts": "1276871280",
"summary": "Okay, this one has a little refining left to go, but it seems to be working pretty flawlessly. I ported most of the code from a greasemonkey script . All I really want to add is a toolbar item that lets you easily turn it on and off, and maybe a whitelist feature. There are actually legitimate uses for a plugin like this. Seriously. RedirectBuster v0.1 Download RedirectBuster v0.1 Removes redirects from urls. Pretty simple. Published 06/18/10. Updated 06/18/10. Changelog Donate More info Your support is greatly appreciated! Or me on GitHub!",
"keywords": ["adobe","explorer","firefox","flash","internet","microsoft","whitelist","windows","changelog","donate","download","github","published","redirectbuster","removes","seriously","updated","appreciated","easily","feature","flawlessly","greasemonkey","greatly","legitimate","little","maybe","plugin","ported","redirects","refining","script","seems","simple","support","toolbar","whitelist","working"]
},{
"title": "TabLinks Safari Extension",
"url": "/2010/06/18/tablinks-safari-extension/",
"tags": ["extension","safari","tablinks"],
"date": "Jun 18th, 2010",
"ts": "1276842480",
"summary": "TabLinks is a quick experiment, designed to meet my own needs. It needs some work, but it does the trick: it copies the link information for every tab open in Safari, and outputs them as a list, based on a user-defined template. You set up your template in the Extension settings, and use the following variables to define your link style: That s all there is for now. The default link format is a Markdown reference list, with the references being window#-tab#, so they come out as Like I said, it s pretty simple right now, and may stay that way while I go back to tidy up and improve on InstapaperBeyond . I do plan to add a checkbox to the settings that lets you decide whether clicking the toolbar button copies just the current window s tabs, or all tabs as it does now. I would have liked to add a copy to clipboard button, but (as far as I know), Safari doesn t allow access to the clipboard in any fashion, even with something like ZeroClipboard . The popup window could use some classing up, too a little CSS3 animation/transition and some more consistent styling that isn t constantly being overridden by site styles. However, it s quite useful to me as is, so I m sharing it in the hopes that others will find it as helpful as I do. Personally, I use it when I write posts, especially on TUAW , where there are a lot of links to deal with. I pop open the links I know, run searches in new tabs for the ones I need, then copy the whole bunch as references to paste into the top of my post. 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 More info Your support is greatly appreciated! Or me on GitHub!",
"keywords": ["clients","firefox","iphone","locator","markdown","resource","safari","changelog","donate","download","extension","github","however","instapaperbeyond","markdown","maybe","personally","published","safari","tablinks","updated","zeroclipboard","access","allow","animation","appreciated","based","bunch","button","changing","checkbox","classing","clicking","clipboard","consistent","constantly","copies","copying","decide","default","define","defined","designed","doesn","easily","especially","experiment","fashion","format","gathers","greatly","helpful","hopes","improve","index","information","liked","linked","links","little","modify","needs","others","outputs","overridden","pages","paste","popup","posts","presents","quick","rather","references","respective","right","searches","settings","sharing","simple","style","styles","styling","support","template","title","titles","toolbar","transition","trick","useful","variables","where","while","whole","window","within","write"]
},{
"title": "Antique 1.6, final release",
"url": "/2010/06/17/antique-1-6-final-release/",
"tags": ["antique","hacks","javascript","jquery","reader","safari","typography","widont"],
"date": "Jun 17th, 2010",
"ts": "1276788240",
"summary": "For a quick how-to on using the Antique (or any) Safari Reader hack, see the related article in the HowTo section . This will be the last release of Antique, I think, barring a few minor fixes (follow @ttscoff for updates on this and other projects). You can download it here . The code is completely open source, if anyone wants to continue the project feel free (credit would be swell, where it s due). I ll be putting my free time into Instapaper Beyond and other more legitimate projects now (although I really would like to do a nice, high-contrast, Helvetica version ). In deference to Faruk Ate , I d like to clearly state that this is a hack, and you run a risk (albeit very minimal) of breaking your Safari install if you don t know what you re doing. I also won t be posting further simplified instructions for installation, but they re not hard to find. For advanced users, you simply need to know that you re replacing in . The coolest changes, in my opinion, are an amped-up Widon t for headlines, and improved image linking. On the Widon t end, if a title exceeds the width of the headline area, it s actually split in the middle to provide more equal-length lines. It s neat-o. And for the images: I had it only lightboxing images which were too large for the style and which weren t already linked somewhere else, resulting in the user never knowing what would happen when they clicked an image. Now, if an image is linked to an external site, that link is extracted and placed on a line below the image. If an alt or title attribute are present in the image or the link, they re preferred over the source attribute for naming the link, which should provide a decent idea of where you re going, in most cases. Images which are linked, then, are always linked to the Colorbox effect, and will never take you out of the Reader page. Ah, consistency. I swapped out the scrollbar images, shifted the colors a little, and included them in the HTML file. Some style changes, including a darker background and slightly heavier gradient Massively fixed up the ampersand code . Also shifted ampersands 1 pixel left for better kerning within non-italicized text. Improved smashing of empty paragraphs in bad markup to avoid huge spaces between paragraphs. Fixed a CSS mistake I had introduced which caused the background and drop shadow to be visible before the content slid up from the bottom. Set up an onscroll check for new elements. Every time the page is scrolled,",
"keywords": ["ampersand","antique","colorbox","element","inspect","instapaper","safari","antique","beyond","cssedit","changelog","colorbox","donate","download","droid","element","extract","faruk","firebug","fixed","github","helvetica","howto","images","improved","inspect","instapaper","massively","published","reader","safari","updated","version","widon","adjust","advanced","albeit","although","amped","ampersand","ampersands","anyone","applies","appreciated","article","attribute","automatically","avoid","background","barring","based","before","below","between","blocks","bottom","breaking","button","buttons","caused","change","changes","check","checks","choose","circumstance","clearly","click","clicked","colors","commenting","completely","consistency","content","continue","contrast","coolest","covered","credit","darker","decent","decided","declaration","default","deference","developer","development","doctype","document","doesn","doing","download","easily","element","elements","empty","enabled","example","exceeds","expressions","external","extracted","features","fixed","fixes","functions","going","gradient","greatly","handy","happen","headline","headlines","heavier","image","images","improved","included","including","initial","inline","inserted","inspector","install","installation","instructions","introduced","italicized","javascript","kerning","knowing","legitimate","length","lightboxing","linked","linking","little","loaded","markup","mention","middle","minimal","minor","mistake","naming","onscroll","pages","paragraphs","pixel","placed","playing","pleasant","position","possible","posting","preferences","preferred","project","projects","putting","quick","quotes","reasonable","regular","related","release","remove","rendered","replacing","restart","resulting","right","sandbox","scrollbar","scrolled","section","seems","shadow","shifted","shrinking","simplified","simply","slightly","smart","smashing","somewhere","source","spaces","speed","split","started","style","styles","stylesheets","styling","support","swapped","swell","taste","think","title","ttscoff","typography","updates","users","using","version"]
},{
"title": "Ampersands & Javascript",
"url": "/2010/06/14/ampersands-javascript/",
"tags": ["antique","javascript","jquery","typography"],
"date": "Jun 14th, 2010",
"ts": "1276532280",
"summary": "While playing around with Antique 1 , I decided I really wasn t in love with the ampersands that were included in any of the fonts I was working with. Normally, I d just run everything through Typogrify 2 and get some handy CSS classes to work with. Working in Safari s Reader, though, I only had access to Javascript (and jQuery, now). I set out on a search for an easy, all-purpose solution, but nothing worked as well as I wanted it to. So I did a little scavenging and put together a couple of functions that do the job pretty well. They use jQuery, but could just as easily be done with pure Javascript, if you really wanted to. They seem to work pretty well, so far. I accompany them with some CSS I nicked from SimpleBits and Patrick Haney : In my situation, it doesn t really matter if ampersands are captured within code blocks, but just to keep styling consistent, I also force any .amp-wrapped ampersands within pre and code blocks to match the pre/code styling: Of course, this is all really better handled server-side with, say, PHP, but if you re looking for spicy typography and are limited to client-side solutions, give it a shot! I m running these right before my rather wicked new version of widon t which splits long titles into nearly equal-length lines more on that soon. http://brettterpstra.com/2010/06/13/antique-1-5-for-safari-reader/ http://code.google.com/p/typogrify/",
"keywords": ["ampersand","cascading","courier","javascript","jquery","palatino","safari","sheets","style","antique","haney","javascript","normally","patrick","reader","safari","simplebits","typogrify","while","working","access","accompany","ampersands","antique","before","blocks","brettterpstra","captured","classes","client","consistent","couple","decided","doesn","easily","everything","fonts","force","functions","google","handled","handy","included","jquery","latest","length","limited","little","looking","match","nearly","nicked","nothing","playing","rather","reader","right","running","safari","scavenging","search","server","situation","solution","solutions","spicy","splits","styling","through","titles","together","typography","typogrify","unreleased","using","version","wanted","wicked","widon","within","worked","working","wrapped"]
},{
"title": "Antique 1.5 for Safari Reader",
"url": "/2010/06/13/antique-1-5-for-safari-reader/",
"tags": ["antique","hacks","jquery","safari"],
"date": "Jun 13th, 2010",
"ts": "1276463940",
"summary": "There is a new version of Antique available! Check out version 1.6 ! jQuery: added the jQuery library via Google s Ajax API to make some of the other additions much easier to implement. Colorbox: links to images are automatically opened in a lightbox so you don t have to leave the page. Uses jQuery Colorbox and automatically applies the effect to links ending in .jpg or .png . Widon t: headlines and paragraphs have a widon t function applied to them, preventing widows (short words alone on a line). This was mostly annoying me in the top-level headings of the page, but it s a nice touch throughout. It ignores words longer than 8 characters. They ll do just fine on their own. New HUD buttons: in addition to the Evernote web clipper button in the floating HUD, there are new buttons for DEVONthink , Delibar and Webbla . These are mostly to show how to pull it off, and are easily edited. See the instructions below to remove buttons from the HUD. Pass text selections: unlike using bookmarklets, clicking on a HUD icon makes you lose your text selection. Any service that accepts a selection as a note or description (Evernote, DEVONthink, Webbla, etc.) won t normally work. By storing the selected text in an HTML5 sessionStorage key every time your mouse enters the HUD, Antique is able to pass what was selected before you clicked the button. Still working on making this function with Evernote. Smarter image resizing: when you load a page, Antique shrinks the larger images. It s smarter now, though: wide, centered images are only reduced slightly and left centered, and any floated images that are reduced (and aren t already linked somewhere) are now linked to the full size version of themselves, which will display in-page using Colorbox. Floated images also have bottom margin and clear:left applied to them to prevent horizontal stacking when images are close to each other in the layout. Minor Update: (version 1.5.1) I just swapped out Crimson Text for OFL Sorts Mill Goudy TT, primarily because I like the quotation marks much better. I also added hanging quotes (image-based) to blockquotes, and improved code blocks and bulleted lists wrapped around images. If you want to try out the style, download it here and open the archive. Inside you ll find a file called Reader.html. The file you re going to replace (back it up somewhere safe first) is . If you don t know how to do this from Terminal, you can just do it in Finder: go to your Applications",
"keywords": ["antique","colorbox","devonthink","jquery","safari","adding","antique","applications","changelog","check","colorbox","contents","crimson","devonthink","delibar","donate","download","evernote","finder","floated","github","google","goudy","inside","installation","javscript","minor","package","published","reader","readerjs","removing","resources","restart","safari","smarter","sorts","standard","terminal","updated","version","webbla","white","widon","above","accepts","access","active","added","additions","adjust","aesthetic","alone","annoying","applied","applies","apply","appreciated","archive","attribute","automatically","available","barely","based","because","before","below","blockquotes","blocks","bookmarklet","bookmarklets","bottom","break","brings","bulleted","button","buttons","called","centered","changes","characters","choice","choose","cinch","clear","click","clicked","clicking","clipper","close","comment","converting","cover","covers","definition","depending","description","desktop","detail","different","directly","display","distribute","doing","download","downloaded","easier","easily","edited","editor","efficiency","encoding","ending","enters","execute","external","features","fewer","filename","files","first","floated","floating","focus","folder","folks","function","general","getting","going","greatly","handles","hanging","headings","headlines","horizontal","ignores","image","images","improved","inactive","including","inline","inner","inside","instructions","interested","issues","jquery","javascript","larger","layout","leave","leaving","level","libraries","library","lightbox","linked","links","lists","loaded","locally","longer","major","makes","making","margin","marks","mentioned","minor","missing","modified","modifying","mostly","mouse","needs","normally","object","obvious","occupying","opacity","opened","opening","original","overrides","paragraphs","pixels","pleasant","plugins","possible","prevent","preventing","primarily","problem","process","quirks","quotation","quotes","reduced","remove","removing","replace","reposition","resize"]
},{
"title": "Antique Safari Reader hack update with Evernote goodness",
"url": "/2010/06/12/antique-safari-reader-hack-update-with-evernote-goodness/",
"tags": ["evernote","hacks","reader","safari"],
"date": "Jun 12th, 2010",
"ts": "1276343100",
"summary": "Evernote web clipper functionality is now complete in the style, and the button in the HUD will open the floating frame, let you add tags and extra text, then clip just the visible text in Reader to your main Evernote notebook without ever opening a new page. Exactly what I wanted. Now I just have to add the same thing to Instapaper Beyond! The style is also now available with and without background images, just check the main post for updates. Antique 1.6 for Safari Reader v1.6 Download Antique 1.6 for Safari Reader v1.6 Version 1.6 of the Antique hack for Safari 5. Adds pleasant styling to Reader, with many additional features. Published 06/13/10. Updated 06/13/10. Changelog Donate More info Your support is greatly appreciated! Or me on GitHub!",
"keywords": ["clients","evernote","google","instapaper","reader","antique","beyond","changelog","donate","download","evernote","github","instapaper","published","reader","safari","updated","version","appreciated","available","background","button","check","clipper","extra","features","floating","frame","functionality","greatly","images","information","links","little","notebook","opening","pleasant","readers","style","styling","support","thought","updated","updates","upgrade","visible","wanted"]
},{
"title": "Safari Reader Antique hack",
"url": "/2010/06/12/safari-reader-antique-hack/",
"tags": ["hacks","reader","safari"],
"date": "Jun 12th, 2010",
"ts": "1276319520",
"summary": "There is a new version of Antique available! Check out version 1.6 ! I was thrilled when it was first announced that someone had located the HTML/CSS for the new Safari Reader functionality in Safari 5, which happened the day it was released. I ve been toying around with some ideas in the days since, and this hack is the result of a little too much effort. Click the screenshot thumbnail to see a full version. Uses CSS3 to find doubleclick.net ads, which Reader sometimes misses because they inject after the DOM loads Uses CSS3 to remove blank paragraphs and paragraphs containing nothing but a line break tag It only shows the title once, as opposed to at the top of every page Many style changes, including: uses Google fonts (Crimson Text) antique color palette, which extends to the background and HUD less-contrasty links, easier to read over but still noticeable slight gradient in the background Extra button in the HUD (Evernote, experimental) Narrower scrollbar Left-justified text Currently attempting to resize images to max-width 300px (but it s not resizing properly if width/height attributes are set. I ll fix that shortly.) Update: using a little Javascript now to resize the images proportionally after page load. Adds dashed line indicating page breaks, lightens and shrinks page numbers Update: added a background image. Let me know what you think. Update to update: there s a second download link without the background image. If you want to try out the style, download it here (with background image), or grab the version with no background image , and open the archive. Inside you ll find a file called Reader.html. The file you re going to replace (back it up somewhere safe first) is . If you don t know how to do this from Terminal, you can just do it in Finder: go to your Applications folder and locate Safari, then right click on it and choose Show Package Contents. That will open a new window with the inner workings of Safari inside it. Open the folder called Contents, and then the Resources folder inside of that. Locate the file Reader.html and drag it out to your desktop (that s your original, keep it safe). Then drag the new Reader.html file you downloaded into the Resources folder. Restart Safari and try it out! I added a button to the HUD as a proof-of-concept. It doesn t do anything very useful yet, the current one just loads the title and URL in the Evernote web clipper in a new tab/window. It",
"keywords": ["evernote","google","iphone","javascript","safari","twitter","addendum","antique","anyway","applications","changelog","check","click","colorbox","contents","crimson","donate","download","evernote","expect","extra","finder","github","google","inside","javascript","narrower","package","published","reader","readerjs","resources","restart","safari","style","terminal","twitter","updated","using","version","access","added","again","announced","antique","anyone","appreciated","appropriately","archive","attach","attempting","attributes","available","background","backgrounds","because","becomes","beginning","blank","bored","bottom","break","breaks","bundle","button","called","calling","changes","choices","choose","cleanup","clearly","click","clipper","clips","color","colors","completely","complicated","components","compress","concept","containing","contents","contrasty","cookie","cross","curious","dashed","decided","default","definitely","desktop","details","different","directly","doesn","doing","domain","doubleclick","download","downloaded","dragging","easier","easily","effort","email","encoded","entire","entirely","example","experimental","extends","extension","external","extra","features","figured","files","first","folder","fonts","found","frame","fully","functional","functionality","functions","getting","giggles","going","gradient","greatly","hacked","happened","haven","height","hovering","iframe","ideas","image","images","improved","included","including","indicating","information","inject","injected","inner","inside","install","installs","interesting","involve","itself","jquery","javascript","justified","labeled","lightens","links","little","loaded","loading","loads","local","located","locating","location","looking","meantime","misses","multi","narrow","necessary","notebook","notes","nothing","noticeable","numbers","object","offline","opening","opposed","original","pages","palette","paragraphs","played","pleasant","point","portion","possible","preferences","preview","print","process","proof","properly","proportionally","provides","reading","reads","ready","realized"]
},{
"title": "Instapaper Beyond Bugs (fixed)",
"url": "/2010/06/09/instapaper-beyond-bugs/",
"tags": ["beyond","extension","instapaper","safari"],
"date": "Jun 9th, 2010",
"ts": "1276119420",
"summary": "I ve found a few bugs in Instapaper Beyond since releasing the Safari extension this morning. I ve updated the extension to version 1.8.3, but I m not convinced that my update manifest (the automatic update) is working yet. If you re running into issues (the biggest offender being an error when closing the help menu), try downloading the latest version and installing it over the existing version. You can download the current version here , and see the list of links in the series box to the right for further info and backstory on Instapaper Beyond.",
"keywords": ["evernote","google","instapaper","iphone","locator","reader","resource","safari","twitter","beyond","instapaper","safari","automatic","backstory","biggest","closing","convinced","download","downloading","error","extension","found","installing","issues","latest","links","manifest","morning","offender","releasing","right","running","series","since","updated","version","working"]
},{
"title": "Instapaper Beyond for Safari",
"url": "/2010/06/09/instapaper-beyond-for-safari/",
"tags": ["beyond","extension","instapaper","safari"],
"date": "Jun 9th, 2010",
"ts": "1276093440",
"summary": "The Instapaper Beyond Extension now has it s own page . Check it out! Instapaper Beyond is officially available as a Safari 5 extension! For Safari users new to Instapaper Beyond, it s an extension which adds full keyboard navigation and Ajax loading to Instapaper . For example, when the page loads, the first article in the list is highlighted. Using up/down arrows, or j/k, you can navigate forward and backwards. Right arrow or o will open an Ajax view of the article from which j/k will continue to navigate articles in text mode. Pressing the spacebar in text view will page down 1 page (shift-space to page up), and at the bottom of a page, spacebar will load the next article. s will go to starred articles, S (shift-s) will star an article, etc. There are tons of commands available in addition to basic navigation, and the context-sensitive help is always a key away (h). I recommend turning off auto-archiving of articles (Apparently this isn t even an option anymore -thanks to Mark for noticing). Now that you can archive an article with Shift-A, it s just as easy to take manual control, and less confusing when using the Ajax view. I m sure I ll continue to tweak and bugfix this extension, but I set up the auto-update manifest in the extension, so any updates will automatically install for Safari 5 users. Use the link below to download the extension, then double-click the downloaded file to install it. You must have extensions enabled in your Safari preferences. Also, the Instapaper Beyond userscript for Fluid has also been updated to version 1.8, with improved spacebar handling and a few minor tweaks. Just press U in your Instapaper SSB to update to the latest version. You can read more about the original Instapaper Beyond script for Fluid here .",
"keywords": ["instapaper","safari","apparently","beyond","check","download","enjoy","extension","fluid","instapaper","pressing","right","safari","shift","using","anymore","archive","archiving","arrow","arrows","article","articles","automatically","available","backwards","basic","below","bottom","bugfix","click","commands","confusing","context","continue","control","double","download","downloaded","enabled","example","extension","extensions","first","handling","highlighted","improved","install","keyboard","latest","loading","loads","manifest","manual","minor","navigate","navigation","noticing","officially","original","preferences","press","recommend","script","sensitive","shift","space","spacebar","starred","thanks","turning","tweak","tweaks","updated","updates","users","userscript","using","version"]
},{
"title": "Minor update to Instapaper Beyond (1.4)",
"url": "/2010/06/07/minor-update-to-instapaper-beyond-1-4/",
"tags": ["beyond","fluid","instapaper","userscript"],
"date": "Jun 7th, 2010",
"ts": "1275919860",
"summary": "Instapaper Beyond 1 users will want to type U in their Instapaper SSB 2 to update to version 1.4. It includes a minor update that improves bottom-of-page detection when using the spacebar. Styled after Google Reader and others, when the spacebar is pressed at the bottom of an article, it loads the next article. I m trying a better selector to detect the bottom of the page, which should prevent false jumps before you finish reading your article. Originally published here . Site Specific Browser created using Fluid (Mac only).",
"keywords": ["browser","engines","fluid","google","instapaper","reader","search","specific","beyond","browser","fluid","google","instapaper","originally","reader","specific","styled","article","before","bottom","created","detect","detection","false","finish","improves","includes","jumps","loads","minor","others","pressed","prevent","published","reading","selector","spacebar","trying","users","using","version"]
},{
"title": "Fun with MarsEdit, part I",
"url": "/2010/06/06/fun-with-marsedit-part-i/",
"tags": ["applescript","blogging","jquery","macos","marsedit"],
"date": "Jun 6th, 2010",
"ts": "1275858120",
"summary": "I ll be the first to admit that I get a little obsessed with projects that aren t really going to improve my life all that much. Those projects can be fun to blog about, though, so I present you my brief obsession for this Sunday afternoon. You may have noticed on this blog that some posts have header images, and some don t, and that they get styled differently based on whether there s an image or not. It pulls the header images from one of two places: the post thumbnail (which I can t edit from MarsEdit) or the first image in the post content with a class of headerimg . As long as I m blogging in MarsEdit (or TextMate for that matter), I m stuck with the latter option. Because the whole header image deal is handled through PHP in my functions.php file, I can t really preview how it s going to look rather, I get a header image stuck somewhere before, in or after my content. In TextMate, I have a little more scriptability at my disposal, and the previews I ve created there are quite accurate. As far as I can tell, I can t pre-process content before the template is generated, so I had to try something else My solution, for now, is jQuery in the preview template. I load the jQuery library up top (inside the header) using Google s Ajax API: Then, at the bottom, I just start polling for an image with the right class to show up. I know it s brute force, but this isn t exactly public-facing, and it doesn t seem to cause any hiccups in my writing. I have this right before my closing body tag: I m sharing this just to toss the idea out there, not because I think there s anyone else with the exact same template setup as mine. In addition to having Javascript at my disposal, MarsEdit is also AppleScript-able. I haven t looked very far into that yet, but I did whip up a quick script for adding the headerimg class to my images (because I always forget which class I assigned for this):",
"keywords": ["applescript","element","google","javascript","jquery","marsedit","textmate","applescript","because","google","javascript","marsedit","sunday","textmate","accurate","adding","admit","afternoon","anyone","assigned","based","because","before","blogging","bottom","brief","brute","cause","class","closing","content","created","differently","disposal","doesn","exact","facing","first","force","forget","functions","generated","going","handled","haven","having","header","headerimg","hiccups","image","images","improve","inside","jquery","latter","library","little","looked","necessary","noticed","obsessed","obsession","pending","places","polling","posts","preview","previews","process","projects","public","pulls","quick","rather","right","script","scriptability","setup","sharing","solution","somewhere","stuck","styled","template","think","through","thumbnail","upload","using","whole","writing"]
},{
"title": "MultiMarkdown in MarsEdit",
"url": "/2010/06/06/multimarkdown-in-marsedit/",
"tags": ["macos","markdown","marsedit","multimarkdown"],
"date": "Jun 6th, 2010",
"ts": "1275830460",
"summary": "I ve just started using MarsEdit 1 again (in combination with my TextMate 2 blogging bundles), but I ve run into a couple of issues. First, I can t assign thumbnails to my posts directly. This is the result of poor API support in Wordpress for handling attachments on a specific post, and not Daniel s fault at all. Fortunately, I ve set my blog up to search for an image with a specific class, remove it from the post and use it as the post header if a thumbnail isn t assigned. That works. Second, my blog uses PHP Markdown Extra 3 , and a lot of the extra functionality was messing up my carefully-crafted preview in MarsEdit. Fortunately, a little searching on the Red Sweater forums yielded exactly what I needed 4 : you can add your own text filters with a little editing and some luck. Markdown Extra shares most of the functionality I need with MultiMarkdown 5 , such as footnotes and quick, semantic tables. By copying the folder from to and renaming it from to (the exact same name as the executable), I was able to add the text filter without breaking a sweat. Now, between MarsEdit and Edit in TextMate, I can do all of my blogging in Markdown Extra, offline, with full previews. I can manage categories and tags, excerpts and add media. Spectacular. MarsEdit: http://www.red-sweater.com/marsedit/ TextMate: http://macromates.com/ PHP Markdown Extra: http://michelf.com/projects/php-markdown/extra/ Red Sweater Forum Post: http://www.red-sweater.com/forums/viewtopic.php?id=1211 MultiMarkdown: http://fletcherpenney.net/multimarkdown/",
"keywords": ["markdown","marsedit","multimarkdown","textmate","wordpress","daniel","extra","first","fortunately","forum","markdown","marsedit","multimarkdown","second","spectacular","sweater","textmate","wordpress","again","assign","assigned","attachments","between","blogging","breaking","bundles","carefully","categories","class","combination","copying","couple","crafted","directly","editing","exact","excerpts","executable","extra","fault","filter","filters","fletcherpenney","folder","footnotes","forums","functionality","handling","header","image","issues","little","macromates","markdown","marsedit","media","messing","michelf","multimarkdown","needed","offline","posts","preview","previews","projects","quick","remove","renaming","search","searching","semantic","shares","specific","started","support","sweat","sweater","tables","thumbnail","thumbnails","using","viewtopic","works","yielded"]
},{
"title": "Instapaper Beyond 1.3",
"url": "/2010/06/05/instapaper-beyond-1-3/",
"tags": ["beyond","fluid","instapaper","macos","userscript"],
"date": "Jun 5th, 2010",
"ts": "1275790920",
"summary": "I just pushed out a fairly large update for Instapaper Beyond 1 , my little userscript for Fluid which adds extensive keyboard navigation and additional functionality to the Instapaper website. I ve been playing with it sporadically for a while now, and version 1.3 has a lot of new features and some big fixes. See below for the best changelog I could pull together from my surprisingly scattered notes and commit messages. Current users can update simply by pressing U (shift-U) in their Instapaper SSB. New users will want to take a look at the original installation instructions . The script itself is located here and over at userscripts.org . If you find any problems or have any feature requests, I d love to hear them! Added new keys: Shift-O to open articles immediately t to open a menu for sending articles elsewhere D to send to Delibar, d to delicious web E to Evernote web clipper (the local helper isn t quite ready yet) e to email link with selection or highlighted text if it exists p for Pinboard web \\ to enter concentrate mode (no sidebar, dark background) See the help (h) for a complete list Made certain functions work outside of Instapaper pages so it could do some tricks on opened tabs added click recognition in article list, select articles by clicking with the mouse and then perform keyboard actions added click recognition for paragraphs in text only version, sets highlight, ready for Delicious, Pinboard, email, etc. added automatic target=_blank to title links intercept mouse clicks on the Text-Only links to load Ajax version added _blank to Open Original Article in text view improved element selector for ,. paging and selection Ajax folder creation, kinda fixed text styling options so you can use all of Instapaper s built-in customizations smoothed out autoscrolling (/) made the up and down arrows not scroll the article list page until the selection moves offscreen added styling to break lines in code blocks (pre) for wrapping",
"keywords": ["delibar","delicious","evernote","greasemonkey","instapaper","iphone","pinboard","added","article","beyond","delibar","delicious","evernote","fluid","instapaper","original","originally","pinboard","shift","actions","added","arrows","article","articles","automatic","autoscrolling","background","below","blank","blocks","break","built","certain","changelog","click","clicking","clicks","clipper","commit","concentrate","creation","customizations","delicious","element","elsewhere","email","enter","exists","extensive","fairly","feature","features","fixed","fixes","folder","functionality","functions","helper","highlight","highlighted","improved","installation","instructions","intercept","itself","keyboard","kinda","links","little","local","located","messages","mouse","moves","navigation","notes","offscreen","opened","options","original","outside","pages","paging","paragraphs","playing","pressing","problems","published","pushed","ready","recognition","requests","scattered","script","scroll","selection","selector","sending","shift","sidebar","simply","smoothed","sporadically","styling","surprisingly","target","title","together","tricks","users","userscript","userscripts","version","website","while","wrapping"]
},{
"title": "Auto-lightboxing image links",
"url": "/2010/05/26/auto-lightboxing-image-links/",
"tags": ["wordpress","jquery","lightbox","plugin"],
"date": "May 26th, 2010",
"ts": "1274886900",
"summary": "I ran into a problem recently. I wanted to have links to images be lightboxed, but I also wanted to blog in Markdown and not have to write out link tags with rel attributes for every image link. There are several existing plugins for Wordpress that will do this automatically, but I ve been sticking with the jQuery Lightbox plugin , which handles Wordpress galleries in this manner, but requires the rel=lightbox attribute to handle single image links. I m not a big fan of directly modifying plugins, primarily because it means that my changes will be scrapped if I ever automatically update the plugin. Since all I m doing is adding a little jQuery to apply the effect to some additional selectors, I ve just added it into an external Javascript file that I was already loading. Here s what I did It selects any link whose href value ends with jpg . I added a selector to exclude the Wordpress gallery links that the plugin already does a nice job of handling and turning into navigable lightbox galleries. This little bit of code will work with any flavor of the jQuery Lightbox plugin that uses lightbox() as its main function. Next I put this snippet into my js file, in the function that executes when the document is ready: The $ inside of the function s parameters () lets us use the standard jQuery $ inside of the function, instead of the no-conflict jQuery. Just a convenience, but if you don t do this, and you have the default jQuery library loaded in Wordpress, you ll need to replace all of the $ in the original snippet with jQuery to get it to work. That did the trick, and any JPEG image I link to directly now gets the lightbox treatment. I haven t run into any conflicts yet, but I ll keep my eyes peeled and refine the selector if I need to.",
"keywords": ["element","javascript","jquery","markdown","programming","wordpress","javascript","lightbox","markdown","since","wordpress","added","adding","apply","attribute","attributes","automatically","because","changes","conflict","conflicts","convenience","default","directly","document","doing","executes","external","extra","flavor","function","functions","galleries","gallery","handle","handles","handling","haven","image","images","inside","jquery","javascript","library","lightbox","lightboxed","links","little","loaded","loading","modifying","navigable","original","parameters","peeled","plugin","plugins","primarily","problem","queue","ready","recently","refine","replace","requires","scrapped","selector","selectors","selects","several","simple","single","snippet","standard","sticking","target","theme","treatment","trick","turning","value","wanted","whose","write"]
},{
"title": "My weather report. Seriously.",
"url": "/2010/05/25/my-weather-report-seriously/",
"tags": ["design","multimedia","personal","video"],
"date": "May 25th, 2010",
"ts": "1274840100",
"summary": "I did some massive Spring cleaning over the weekend, and found a lot of treasures that, after having been momentarily cherished, are on their way to the dump. A pile of Dead Kennedy s and TCHC cassettes from High School that had been severely devastated by an extended stay in the garage, original vinyl pressings from some of my old bands, Phreak boxes , and more defunct electronics than I could possibly E-bay. Amongst all of it, though, I found a CD of work from my Interactive Multimedia degree at the Minneapolis College of Art and Design . Aside from my diploma, it s really the only proof I have left that I was ever there. There was definitely some interesting work on there, though. We were given a weather report from a local cable station. Our assignment was to make it interesting, and this is what I did with it. The sound design, especially, makes me chuckle. Thank you. That is all.",
"keywords": ["college","compact","design","kennedys","minneapolis","youtube","amongst","aside","college","design","interactive","kennedy","minneapolis","multimedia","phreak","school","spring","thank","youtube","assignment","bands","boxes","cable","cassettes","cherished","chuckle","cleaning","definitely","defunct","degree","design","devastated","diploma","electronics","especially","extended","found","garage","having","interesting","local","makes","massive","momentarily","original","possibly","pressings","proof","report","severely","sound","station","treasures","vinyl","weather","weekend"]
},{
"title": "Delicious, Spotlight and OpenMeta tags, revisited",
"url": "/2010/05/25/delicious-spotlight-and-openmeta-tags-revisited/",
"tags": ["bookmarking","delicious","macos","openmeta","spotlight","tagging"],
"date": "May 25th, 2010",
"ts": "1274774160",
"summary": "I ve taken a little time to improve the script I d posted previously . It saves bookmarks you add to Delicious as webloc (Safari bookmark) files on your local hard drive, optionally with thumbnails and OpenMeta tags . First, it adds Spotlight search abilities to your Delicious bookmarks, and, if you use OpenMeta tags, it integrates a tag-based search into any OpenMeta application. The second half of that is, in my case, I bookmark in different ways for different purposes, and it s nice to have everything integrate into a full search in the end. For me, that search is primarily tag-based, thus the OpenMeta tagging. When I want to share a link, I use Delicious ( via Delibar ), and when I just want to save it for my own reference, I use OpenMeta ( via Tags.app ). This script is part of a system which blends the two, removing the need for redundant tagging and bringing my Spotlight searches together. Read on for the new script, and installation instructions. You ll need to set these properties to your own information, but after that the script should take care of itself. Username and password are your login info for Delicious.com. Obviously, it won t work without those. The targetFolder property should be set to a folder that already exists or that you just created for the purpose. The script will not create a folder that doesn t exist. I recommend creating one in , and just substituting your user name in the targetFolder config. The last two configuration options determine whether posts are tagged with Tags.app and/or thumbnailed with setWeblocThumb. I recommend doing both, but if you have other purposes for the script, feel free to set these to false. In order to use either option, you ll need to have the appropriate application installed. Tags is a $29US application that makes tagging everything from URL s to iPhoto pictures, as well as files and folders, a breeze. Worth every penny, in my opinion. setWeblocThumb is a free utility that captures thumbnail images of the bookmarked page and applies it to the webloc file. It makes for very nice presentation of search results and bookmark folders. The last thing you ll probably want to alter is the first line after the end of the config. It sets the date from parameter default to 1 hour prior, in Central Standard Time. If you re not stuck in the middle of the country, you ll want to edit the -v+4H part to a + or - number more indicative of your own GMT offset. It s not a huge deal, this current script",
"keywords": ["applescript","delicious","evernote","iphoto","safari","central","delibar","delicious","editor","first","however","lingon","matteo","openmeta","safari","script","seems","shiny","spotlight","standard","thanks","updated","username","worth","abilities","added","agent","alarm","alter","applies","avoiding","based","before","blends","bookmark","bookmarked","bookmarking","bookmarks","breeze","bringing","captures","caused","certain","changes","checks","choose","commented","config","configuration","country","create","created","creating","default","different","doesn","doing","drive","duplicates","either","entirety","errors","everything","exist","exists","false","filenames","files","finds","first","folder","folders","found","hourly","iphoto","images","improve","indicative","information","installation","installed","instructions","integrate","integrates","itself","latest","launchd","limiting","little","local","login","looks","makes","middle","newest","offset","optionally","options","parameter","password","penny","pictures","posted","posts","presentation","previously","primarily","process","properties","property","readability","recommend","record","redundant","removing","results","retrieval","running","saves","schedule","script","search","searches","second","section","setweblocthumb","share","smartened","smoother","solution","solved","storing","stuck","substituting","system","tagged","tagging","taken","targetfolder","testing","thumbnail","thumbnailed","thumbnails","tipping","together","utility","version","watches","webloc","writes","writing"]
},{
"title": "Targeting and filtering IE with relative ease",
"url": "/2010/05/16/targeting-and-filtering-ie-with-relative-ease-2/",
"tags": ["webdesign"],
"date": "May 16th, 2010",
"ts": "1274068020",
"summary": "I just read a blog post by James Scariati regarding a method to target every version of IE from a single stylesheet. The idea was to add a wrapper div with a specific class using conditional comments, allowing you to target IE6 using CSS specificity rather than separate stylesheets. The commenters took it a bit further, and I decided to test out a slight permutation. Using the double comment trick (as shown below) to filter IE, you can add a series of statements that put a class on the body tag for the page (without resorting to javascript or browser sniffing). I ve given it a quick test in Firefox, Safari and Internet Explorer 6, 7 and 8. It seems to be working quite well. This may be my new body tag! The code below includes a button that will pop up an alert showing which class has been assigned to the body tag after the page loads. Thanks to James Scariati for the idea, Greg McAusland for the evolution of it!",
"keywords": ["cascading","clients","comment","conditional","element","explorer","firefox","internet","safari","sheets","style","explorer","firefox","internet","james","mcausland","safari","scariati","thanks","using","alert","allowing","assigned","below","browser","button","class","comment","commenters","comments","conditional","decided","double","evolution","filter","includes","javascript","loads","method","permutation","quick","rather","resorting","seems","separate","series","showing","shown","single","slight","sniffing","specific","specificity","statements","stylesheet","stylesheets","target","trick","using","version","working","wrapper"]
},{
"title": "Delicious bookmarks and OpenMeta tags",
"url": "/2010/05/11/delicious-bookmarks-and-openmeta-tags/",
"tags": ["applescript","bookmarking","delicious","experiments","macos","openmeta","tagging","utility"],
"date": "May 11th, 2010",
"ts": "1273578960",
"summary": "There are quite a few things I love when it comes to my Mac. I love Spotlight . I love OpenMeta tagging. I love Evernote . I love being able to collect information from any source, and find anything I ve saved, anywhere, no matter what program I used to create it. I especially love programs that allow me to accomplish that. Unfortunately, one of my favorite apps right now, Delibar , doesn t integrate with Spotlight or OpenMeta, despite the fact that it would be relatively easy to do. Delibar is an excellent (and sexy) menubar application for creating and searching Delicious (and Pinboard ) bookmarks. A similar app, Pukka , pulls off the Spotlight part, but I still wanted OpenMeta tags that matched my Delicious tags for local searching. I also use Tags.app for most of my tagging. OpenMeta tags allow you to group and classify files with simple tags, and provide a Spotlight-compatible way to search more intelligently. When you tag a website with Tags, it creates a webloc file in your metadata cache and applies the OpenMeta tags to it. I figured a similar approach would be feasible using AppleScript, and it seems to be working out great. Read on to see the script I m using, and be sure to let me know if you improve on it! What I m doing is using curl with the Delicious API , and downloading everything that s been bookmarked within the last hour. I m running it with launchd every hour, so I don t want to grab more than that every time it runs. It parses out the title, tags and url for the bookmark, saves it to a .webloc file, and tags it using Tags.app s AppleScript commands. If you re not running Tags, it could be modified pretty easily to work with the command line application. I m leaving the target folder up to the user, so when you define it in the CONFIG section, make sure it s pointing to an existing folder. The only other config properties are your Delicious username and password (sent securely). As noted in the comments in the script, you can adjust the time/date it retrieves from in the first line after the CONFIG section. The script is pretty well commented, so I won t rewrite the whole thing here. Take a look, and then I ll show you how I installed it. The first thing I did was make a version of the script that excluded the date parameter (fromdt) in the curl call in order to download my entire history and process it so I was up-to-date. This took a while, but didn t seem to cause any problems. The Delicious API is pretty quick to",
"keywords": ["applescript","element","formats","languages","markup","spotlight","addendum","applescript","applications","areas","bundle","config","delibar","delicious","editor","evernote","expert","installing","lingon","openmeta","pinboard","pukka","script","spotlight","unfortunately","above","account","added","addendum","adjust","allow","anywhere","applies","approach","automatically","based","below","bookmark","bookmarked","bookmarks","bunch","cache","cause","classify","collect","comes","command","commands","commented","comments","compatible","config","create","created","creates","creating","dates","define","directory","doesn","doing","download","downloading","easily","editing","editor","entire","errors","especially","everything","excellent","excluded","favorite","feasible","feedback","figured","files","first","folder","fromdt","great","group","highly","history","improve","improvement","information","install","installed","integrate","intelligently","launchd","leaving","local","logging","matched","menubar","metadata","modified","noted","offset","options","originally","osascript","parameter","parses","password","plist","pointing","problems","procedure","process","program","programs","properties","pulls","quick","reasons","recommend","relatively","retrieves","rewrite","right","running","saved","saves","saving","script","scripts","search","searching","seconds","section","securely","seems","sense","setting","similar","simple","source","tagging","target","throttle","through","title","trouble","unknown","username","using","version","wanted","webloc","website","where","while","whole","within","working"]
},{
"title": "A few scripts for TaskPaper users",
"url": "/2010/05/08/a-few-scripts-for-taskpaper-users/",
"tags": ["applescript","macos","taskpaper","utility"],
"date": "May 8th, 2010",
"ts": "1273345200",
"summary": "I ve been using Things for task management lately, mostly because it has a decent iPad app. I really do love my iPad however, I often use TaskPaper from Hog Bay Software for weekend to-do lists and for tracking bugs and fixes on my various freetime projects. I sometimes edit my TaskPaper files (which are just plain text) in TextMate and use some Ruby scripts adapted from the GTDAlt bundle to do some fun things, but I really like the interface you get when you actually use TaskPaper. So I started scripting it There are three scripts I m going to share, two are pure AppleScript and one depends on a Ruby library called Chronic. A download will be available at the end of the article that is an AppleScript bundle with the Ruby library included, so it should run fine without any extra hassle. The first two scripts work in tandem, and increment and decrement the priority of the current or selected tasks. TaskPaper lets you add a value to a tag, e.g. @priority(4). These can be used for sorting or searching and can be very valuable. Read on for the scripts I ve been using to make it even more so The basic idea is to assign a keyboard shortcut to the scripts and be able to add a priority tag if it doesn t exist, remove it if we decrement it below 1, and be able to change the priority incrementally with repeat keystrokes. To add a script to TaskPaper, just pull down its script icon in the top menu and choose Open Scripts Folder. That s where you ll put your compiled scripts and they ll show up in TaskPaper. Add keyboard shortcuts using the Keyboard Preference pane in System Preferences, adding an application shortcut for TaskPaper and setting it to the exact name of the menu item your script creates (the title of the script without the extension). I have my increment and decrement scripts set to - and + (command shift minus, and command shift plus). I m just going to make this one available for download (see the bottom of the post for all three scripts) and not try to post the code here. What it does is expand natural language dates into a date format that TaskPaper and other scripts can easily recognize. It looks for @start() and @due() tags, and runs whatever value they contain through the Ruby Chronic library. This turns things like next tuesday and in 3 days into usable dates. I have it assigned to = (command equal). It will function on the current line or an entire selection. That s it for now. I ve got others, but some of them are too complicated",
"keywords": ["applescript","keyboard","preferences","shortcut","software","store","system","taskpaper","textmate","allows","applescript","changelog","chronic","donate","download","folder","gtdalt","github","keyboard","preference","preferences","published","scripts","software","system","taskpaper","textmate","updated","adapted","adding","anyone","appreciated","article","assign","assigned","available","basic","because","below","bottom","bundle","called","change","choose","command","comment","compiled","complicated","contact","contain","creates","dates","decent","decrement","decrementing","depends","doesn","download","easily","entire","exact","exist","expand","expansion","extension","extra","files","first","fixes","format","freetime","function","going","greatly","hassle","however","included","increment","incrementally","incrementing","interface","keyboard","keystrokes","language","library","lists","looks","management","minus","mostly","natural","often","others","priority","projects","questions","recognize","remove","repeat","script","scripting","scripts","searching","selected","selection","setting","share","shift","shortcut","shortcuts","sometimes","sorting","started","suggestions","support","tandem","tasks","think","through","title","tracking","tuesday","turns","usable","users","using","valuable","value","various","weekend","whatever","where"]
},{
"title": "TextExpander experiments",
"url": "/2010/05/07/textexpander-experiments/",
"tags": ["email","experiments","leopard","lipsum","macos","markdown","scripting","service","snippet","textexpander","utility"],
"date": "May 7th, 2010",
"ts": "1273286880",
"summary": "I ve seen a few people around the net sharing their TextExpander snippets, so I thought I d join in. Not familiar with TextExpander? It s a Mac utility that expands short snippets into full text you ve defined. There are quite a few programs that do text expansion (see Typinator ), but TextExpander currently holds my heart because of its extra features such as shell scripting, completion suggestion and a new Fill dialog for variable input. Most of my snippets are specific only to me, such as email signoffs and abbreviations for companies I work for. I have a few more general snippets, though, so that s what I m sharing. For reference, I m currently experimenting with triggering only after a Tab press, a la TextMate tab-triggers. That shouldn t make a difference on many of these, they should work with whatever you have set up. All of the snippets I m sharing are available for download . For more detail, read on First, there are the Lipsums. This is a collection of my most-used Lorem Ipsum snippets, great for filling in fields when testing forms, making quick HTML markup for CSS styling, or anywhere you just need to fill up some space. I have snippets for 1, 2, and 3 paragraphs of standard Lorem Ipsum text, as well as a few for HTML-specific lipsum. The king of these is a snippet I pulled from http://html-ipsum.com/ that inserts all of the major elements of HTML markup. It s great for giving your CSS stylesheet a quick test to make sure you ve covered the basics. The Tools collection is a sampling of scripts and snippets, some more useful than others, that I ve been experimenting with (and, in some cases, making good use of). Some examples: I tend to write out very long, multi-word modifiers that need hyphenation. While it s more effective to use a System Service, I ve found that the Automator services are too slow for such simple operations. So I cut the needs-to-be-hyphenated text to the clipboard and type ,,-. When I hit tab, the hyphenated version is pasted, with proper attention to punctuation and leading/trailing spaces. It looks like this: This one takes an email address from the clipboard and returns a mailto: link with the email address itself encrypted, at least to the point where it s not human readable anymore. This one parses the clipboard for any and all urls, pasting the resulting matches as a Markdown reference list. It automatically names the references based on the url s domain, strips duplicate urls and sorts the list",
"keywords": ["applescript","ipsum","lorem","markdown","textexpander","textmate","applescript","automator","changelog","clipboard","cloud","cloudapp","corners","direct","donate","download","encode","expand","first","github","handy","hashbang","hyphenate","instant","ipsum","lipsum","lipsums","lorem","makes","markdown","meyers","paste","published","reset","rounded","service","shortening","snippets","system","textexpander","textmate","tools","typinator","updated","while","abbreviations","added","address","alphanumerically","anymore","anywhere","appreciated","associated","automatically","available","based","basic","basics","because","before","browser","clipboard","collection","command","commands","companies","contains","corner","corners","covered","creates","cross","defined","destination","detail","dialog","difference","differences","direct","document","domain","download","duplicate","duplicates","effective","elements","email","encrypted","examples","expands","expansion","experimenting","explore","extra","familiar","feature","features","fields","filling","flavors","flexibility","format","forms","found","general","giving","great","greatly","group","guess","handling","hashbangs","heart","holds","human","hyperlink","hyphenated","hyphenation","improve","improved","including","input","inserts","ipsum","itself","leading","lipsum","little","looks","mailto","major","making","markup","matches","modifiers","multi","names","needs","operations","original","osascript","others","paragraphs","parses","pasted","pasting","people","pixel","point","press","processes","programs","proper","protocol","pulled","punctuation","qualified","quick","quicker","radius","readable","references","remove","rendered","reset","respectively","resulting","returns","rounded","sampling","scripting","scripts","service","services","sharing","shell","short","shortened","shortening","shouldn","signoffs","simple","slight","snippet","snippets","sorts","space","spaces","specific","standard","string","strips","stylesheet","styling","suggestion","support","takes","testing","thought","tinyurl","trailing","triggering","triggers","typical","upload","useful"]
},{
"title": "A System Service for to. url shortening",
"url": "/2010/04/28/a-system-service-for-to-url-shortening/",
"tags": ["leopard","service","shell","shortener","utility"],
"date": "Apr 28th, 2010",
"ts": "1272506580",
"summary": "I m fascinated by http://to . It s a url shortener with no TLD. Some browsers, and apparently some DNS setups, don t like the urls it creates (they want a .com or .org or anything at the end), so it s not exactly in heavy usage. Still, I wish they had an API. In lieu of that, here s a quick Ruby script that will run on a stock OS X install as a System Service. It s so simple that I m not even going to package it up It ll be a good chance to show the steps for creating your own utilities using Snow Leopard Services : Open Automator and choose Service from the first menu. Tell it that the service receives text in any application . Drag the Run Shell Script action from the left side. Set the Shell to Ruby Paste in the code below (or something of your own, hopefully far more interesting) Save it with an intuitive name Use it. Basically, anything you can do to or with text or files using a major scripting language, you can make into a Snow Leopard service. Now that I ve set the bar this low, I d love to see what new Services everyone else is cooking up! Update: Yeah, that didn t work out so well. It works sometimes, but leaves url parameters in the shortened url half the time. I haven t figured out why, but I ll leave it up and see if someone can point out the error of my ways Fixed it, just neglected to notice it needed a POST, not a GET",
"keywords": ["interface","internet","languages","leopard","media","programming","source","automator","fixed","leopard","paste","script","service","services","shell","system","action","apparently","below","browsers","chance","choose","cooking","creates","creating","error","everyone","fascinated","figured","files","first","going","haven","heavy","hopefully","install","interesting","intuitive","language","leave","leaves","major","needed","neglected","package","parameters","point","quick","receives","script","scripting","service","setups","shortened","shortener","shorter","simple","sometimes","steps","stock","usage","useful","using","utilities","works"]
},{
"title": "A big upgrade for Instapaper Beyond",
"url": "/2010/04/25/a-big-upgrade-for-instapaper-beyond/",
"tags": ["beyond","fluid","instapaper","userscript"],
"date": "Apr 25th, 2010",
"ts": "1272186360",
"summary": "I just got back from a week-long Code Jam that was all business, all week, so I took a Saturday to work on some personal projects. Instapaper beyond 1.1 is out, and I d love to hear some feedback on the new features. One of the major additions is a bit of mouse support. You can now click an article in your list to skip the highlighting to that point, and then perform the standard commands on it (open, move, archive, etc.). To that end, most of the links in the interface have also been hijacked and will use the Instapaper Beyond methods, mostly Ajax, to perform their jobs. Read on for a more complete list of new features Shift-O will open the original articles in a new window, immediately from the article list Send-To menu (t), includes Evernote , E-mail, Delicious , Delibar and Pinboard Sending to a service will find any selection, highlight or existing summary and use it as a description Period and comma navigation has been improved, and mouse clicks to highlight elements have been added Title links and Open original article links automatically open in a new window if clicked Better positioning for the Star indicator in text view Ajaxed folder creation (Shift-N) from the Unread and Folder views Concentrate mode can be toggled with the backslash (\\) key, hiding headers and sidebars and focusing the article list I don t know if anyone noticed it in the first version, but navigating with period and comma while reading in text view will sequentially highlight headlines, code blocks, paragraphs and other blocks of text for easy reading and clipping to other services. Like the article lists, these elements also accept mouse clicks to skip the highlight to your position more quickly. If you highlight a block and press t , you ll be able to send it as a description or quote to a service or as an email (along with the link and title). Any manual selection on the page will override the highlight. From the list view, if there s a summary available in the Instapaper article, it will be used as the description. I have a few more ideas to implement, mostly based around grabbing code snippets and sending them to Snippet, Snippets, Code Collector, TextMate or Gist, but we ll see when I get my next big block of free time. In the meantime, let me know what you think! If this is your first look at Instapaper Beyond, check out my previous post for instructions on creating a dedicated Instapaper app using Fluid . If you re already using it and just",
"keywords": ["delicious","evernote","instapaper","pinboard","snippet","textmate","unread","ajaxed","beyond","collector","concentrate","delibar","delicious","evernote","fluid","folder","instapaper","pinboard","saturday","sending","shift","snippet","snippets","textmate","title","unread","accept","added","additions","anyone","archive","article","articles","automatically","available","backslash","based","beyond","block","blocks","business","check","click","clicked","clicks","clipping","comma","commands","creating","creation","dedicated","description","elements","email","features","feedback","first","focusing","folder","grabbing","headers","headlines","hiding","highlight","highlighting","hijacked","ideas","improved","includes","indicator","instance","instructions","interface","links","lists","major","manual","meantime","methods","mostly","mouse","navigating","navigation","noticed","original","override","paragraphs","personal","point","position","positioning","press","projects","quickly","quote","reading","script","selection","sending","sequentially","service","services","sidebars","snippets","standard","summary","support","think","title","toggled","using","version","views","while","window"]
},{
"title": "Compress PDFs with Preview",
"url": "/2010/04/17/compress-pdfs-with-preview/",
"tags": ["compression","leopard","quicktip"],
"date": "Apr 17th, 2010",
"ts": "1271535300",
"summary": "It s probably old news to most, but I just realized this today. Since Leopard, OS X s multi-talented Preview.app can compress needlessly large PDF s in a matter of seconds. My clients (and today, my mother) often export PDF s from various programs that don t flatten or compress images, ending up with files between 8M and 90M, in my experience. Obviously, when you re building a website, you want to get filesize down as much as possible. I ve always used Acrobat to shrink these, usually reducing the size to about 15% of the original. Here s how to do it with just Preview, which is included with your Mac OS: Open the original PDF in Preview. If Preview is your default PDF application, just double-click the file, otherwise, right-click (control-click) and Open with Preview.app. Choose File - Save As Give the file a new name I usually append _r to the filename. Before you save, pull down the Quartz Filter menu at the bottom of the dialog and choose Reduce File Size from the options. Save your file, and enjoy the slimmed-down version. Compressing PDF s causes very, very little quality loss, and can make emailing or downloading PDF s much less troublesome. If you re not compressing your PDF s before you share them, you should!",
"keywords": ["acrobat","adobe","click","context","double","preview","acrobat","before","choose","compressing","filter","leopard","preview","quartz","since","append","before","between","bottom","building","causes","choose","click","clients","compress","compressing","control","default","dialog","double","downloading","emailing","ending","enjoy","experience","export","filename","files","filesize","flatten","images","included","little","mother","multi","needlessly","often","options","original","possible","programs","quality","realized","reducing","right","seconds","share","shrink","slimmed","talented","today","troublesome","usually","various","version","website"]
},{
"title": "Adding a TinyMCE button to Wordpress",
"url": "/2010/04/17/adding-a-tinymce-button/",
"tags": ["tinymce","wordpress","functions"],
"date": "Apr 17th, 2010",
"ts": "1271527380",
"summary": "I was working on a quick website for my wife , and trying to make things as simple as possible for both of us. For me, I just wanted to give her a flexible template that I didn t have to hack much on (I went with Thesis ), and for her, I wanted her to be able to start posting with a minimal learning curve. She just got a Flip , and wanted to start posting video. Since she was already posting to YouTube, I just wrote a quick shortcode in Thesis custom functions file that would take a YouTube id and turn it into a link that the Shadowbox plugin could pick up and make into a lightboxed video player. It worked great. Then, I thought I d just add a quick button to Wordpress TinyMCE editor to make adding the shortcode even easier. That turned out to be a real pain, at least the first time around, so I thought I d detail how I ended up pulling it off. Read on for a step-by-step as I add a button to the built-in visual editor that will request an ID (or a full url) and insert a custom shortcode to play the video. You can see the end results here . I m positive there are plugins that do just this, but I wanted to figure it out for myself Note that these instructions are for Wordpress 2.5+. Want to just download the skeleton files and go for it? YourYouTubeButton.zip First, the shortcode. Because the shadowbox plugin just needs a YouTube link to do it s job, all the shortcode is going to do is take an id and turn it into a properly formatted link, inserting the necessary markup for shadowbox to do its job. In your functions.php (or custom/custom_functions.php if you re using Thesis), add this code: This lets you use a shortcode in your post that looks like and have that turned into a centered paragraph containing a preview image and a link to the video. If you re running the shadowbox plugin , or any plugin that detects YouTube links and handles them, clicking the link in your post will load the destination video in a hovering box, without leaving the page. Otherwise, it will go to the YouTube page for the video. The screenshot is pulled straight from YouTube, and (poorly) resized using HTML. I needed a 400x300 image to fit into the template, and since it wasn t a huge change, it was easiest to just hardcode the size into the tag and let the browser handle it. For reference, you can get a YouTube-generated screenshot by inserting the video s id into a string like this: http://img.youtube.com/vi/[video id]/0.jpg. Use that inside of an image tag, as shown",
"keywords": ["javascript","shadowbox","tinymce","wordpress","youtube","adding","because","button","buttons","changelog","codex","custom","donate","download","first","github","includes","javascript","lastly","published","quicktags","references","shadowbox","since","skeleton","thesis","tinymce","updated","video","viper","visual","wordpress","youtube","youryoutubebutton","above","action","addbutton","adding","adjusting","against","anyone","appreciated","appropriately","array","before","browser","built","button","buttons","caching","calls","centered","change","changed","changes","check","checks","cinch","clicking","client","clients","contain","containing","create","curious","curve","custom","defaults","defined","desired","destination","detail","detects","directly","directory","dirty","divider","download","earlier","easier","easiest","editor","effort","ended","everything","execute","executed","expect","expression","external","extract","fairly","figure","files","filters","first","flexible","folder","formatted","found","function","functions","generated","going","great","greatly","handle","handler","handles","hardcode","hovering","image","increment","initializes","inserting","inserts","inside","instructions","intercept","javascript","knows","learning","leaving","lifted","lightboxed","links","little","loading","loads","located","location","looks","magic","makes","markup","match","messing","minimal","myself","necessary","needed","needs","paragraph","permission","pieces","player","plugin","plugins","point","poorly","portion","portions","positive","possible","posting","preview","prompts","properly","pulled","pulling","quick","ready","referenced","references","regular","resized","results","running","screenshot","script","second","settings","shadowbox","shortcode","shown","simple","since","sites","skeleton","statement","straight","string","subfolder","support","tells","template","thinking","thought","tidier","trick","trouble","trying","turned","underneath","using","version","video","visual","wanted","website","where","worked","working","writing","wrote"]
},{
"title": "Instapaper Beyond for Fluid.app",
"url": "/2010/03/28/instapaper-beyond-fluid/",
"tags": ["beyond","fluid","instapaper","keyboard","navigation","userscript"],
"date": "Mar 28th, 2010",
"ts": "1269766800",
"summary": "Introducing Instapaper Beyond, an Instapaper userscript for Fluid that provides full keyboard navigation and some special features for browsing your Instapaper articles. If you re not familiar, Fluid is a Mac (only) application which creates a Single Site Browser (SSB) for a site, using the same Webkit engine as Safari. It essentially allows you to turn web applications and sites into Mac apps. It s pure Cocoa, so all of your Services and fun text tricks (like Control-T transposition) work on it. Oh, and it includes userstyle and userscript engines, similar to Greasemonkey , which allows nerds like me to do some crazy things. Fluid (WebKit) is the only browser I ve developed this for, so I doubt Greasemonkey (Firefox) users will have much luck with it. Know what you re doing and want to skip straight to the script? OK . The script started as an expansion of a cool userscript called Instapaper Article Tools , which provides a floating menu with some options while in the text view of an article. For the most part, that script isn t even visible in the final version, unless you manually click into an article. You don t need to do that, though, because the whole point of the script is to provide keyboard navigation for Instapaper. Articles are loaded via Ajax and you can go from article to article in full-screen text view, starring/unstarring, moving and archiving on the fly. A full list of commands available at any time can be seen by pressing h , but here s a quick overview: h will bring up a help screen with the available shortcuts on it g opens a list of folders you can jump to navigation is fairly intuitive if you use Google Reader or other Google apps, in that j is forward, k is backwards, o is open, u returns to unread articles. Escape and Enter function as expected (at least to me), closing open dialogs, returning to posts, etc. In list view, lowercase letters jump to sections (a:Archive, s:Starred, u:unread) and capital letters perform functions (A:Archive, S:Toggle Star). The delete key deletes the current article in list and text views see the help (h) for more! Additionally, Instapaper Beyond adds target=_blank to external links (original articles) so that you can open them in tabs or new windows (depending on your tabbed browsing settings). U will check for updates to the script and offer you a link to any updated version for easy installation. There s wraparound navigation of lists, so using any next command at the end",
"keywords": ["firefox","fluidium","google","greasemonkey","instapaper","reader","safari","webkit","additionally","advanced","archive","archiving","article","articles","beyond","browser","browsing","cocoa","control","download","enter","escape","firefox","first","fluid","fluidium","general","google","greasemonkey","install","installation","instapaper","introducing","point","preferences","reader","remember","safari","script","services","settings","single","starred","tabbed","toggle","tools","under","userscript","webkit","webkit","above","account","adding","allows","although","applications","archiving","article","articles","automatic","automatically","available","backwards","because","blank","blown","bottom","brettterpstra","bring","browse","browser","browsing","built","called","capital","check","choice","click","closing","command","commands","contextual","copied","crazy","create","creates","deletes","depending","developed","development","dialogs","doing","doubt","earlier","engine","engines","entire","essentially","eventually","expand","expansion","expected","external","fairly","familiar","features","floating","folders","function","functions","guarantee","handy","having","image","includes","install","installation","instapaper","instapaperbeyond","intuitive","keyboard","letters","links","lists","loaded","looks","lowercase","manually","menus","moving","myself","navigation","needed","nerds","offer","offered","opens","options","original","overview","paste","peeled","point","populate","posted","posts","pressing","provides","quick","quickly","recognize","results","returning","returns","screen","script","scroll","sections","settings","several","shortcuts","similar","sites","special","stable","starring","started","straight","system","tabbed","target","tested","thinking","transposition","tricks","trouble","unchecking","under","unread","unstarring","updated","updates","users","userscript","userscripts","userstyle","using","versa","version","versions","views","visible","while","whole","window","windows","works","wraparound"]
},{
"title": "Updated: Songza Lucky Link Service",
"url": "/2010/03/20/updated-songza-lucky-link-service/",
"tags": ["leopard","service","songza"],
"date": "Mar 20th, 2010",
"ts": "1269141900",
"summary": "Songza.fm has moved to Songza.org, so I ve rewritten the old Songza Lucky Link Service for Snow Leopard to match. This new version of the service runs without dependencies, so it should work for any Snow Leopard setup right out of the box. It s a bit silly, but what it does is take your selected text and run it as a query on Songza.org, parse for the first result (if there are any), shorten that link and insert it after your selected text. A fast, easy way to punctuate your obscure music references in emails and on the web. Have fun, and join me in hoping for the Songza API to blossom into something we can really sink our scripts into! To install, just download the file below, unzip it (double click), and move it into . To use it, select text in any Cocoa app (Safari, Mail, and most Mac apps) and look under the application menu in the menubar for the Services submenu. Trigger it from there, or just right click on your selected text and you should get the same services menu as a contextual menu item. If you re feeling clever, go into the Keyboard preferences pane, choose Keyboard Shortcuts - Services and double click the blank space to the right of the service to assign a hotkey. As long as that hotkey isn t already assigned by the application your using, you can trigger the service with it any time you have text selected. Songza Lucky Link Service v1.1 Download Songza Lucky Link Service v1.1 A Snow Leopard Service to generate a shortened url to the first result of a Songza.org search for the selected text. The text will remain, but it will have the result in parenthesis after it. Uses a built-in html parser to scrape the results, at least until Songza provides an API. Published 03/20/10. Updated 03/20/10. Changelog Donate More info Your support is greatly appreciated! Or me on GitHub!",
"keywords": ["cocoa","context","interface","keyboard","leopard","programming","safari","shortcut","songza","windows","changelog","cocoa","donate","download","github","keyboard","leopard","lucky","published","safari","service","services","shortcuts","songza","trigger","updated","appreciated","assign","assigned","below","blank","blossom","built","choose","clever","click","contextual","dependencies","double","download","emails","feeling","first","greatly","hoping","hotkey","install","match","menubar","moved","music","obscure","parenthesis","parse","parser","preferences","provides","punctuate","query","references","results","rewritten","right","scrape","scripts","search","selected","service","services","setup","shorten","shortened","silly","space","submenu","support","trigger","under","unzip","using","version"]
},{
"title": "Songza is back!",
"url": "/2010/03/17/songza-is-back/",
"tags": ["songza"],
"date": "Mar 17th, 2010",
"ts": "1268840580",
"summary": "Just a quick note for those who may have missed it: Songza is back at http://songza.org ! This is exciting to me personally, as I had been having a lot of fun searching and automatically creating links to Songza pages , mostly just to back up obscure music references when I pushed them on unsuspecting victims. Hooray!",
"keywords": ["android","itunes","media","music","playlist","songza","spotify","streaming","hooray","songza","automatically","creating","exciting","having","links","missed","mostly","music","obscure","pages","personally","pushed","quick","references","searching","songza","unsuspecting","victims"]
},{
"title": "Save Safari tabs to Instapaper",
"url": "/2010/03/08/save-safari-tabs-to-instapaper/",
"tags": ["applescript","instapaper","safari"],
"date": "Mar 8th, 2010",
"ts": "1268109240",
"summary": "I posted a way to save your Safari tabs to Evernote , which I ve found is generally a great way to save bookmarks. It syncs automatically to your other computers and your iPhone, and it s fast and easy. If you really want to highlight a few tabs to make sure you get back to them, you might consider this script, though. Once you ve saved your entire Safari browsing session for later, close everything except for those special urls, run the code below as a script, and your open tabs will be saved as entries in your InstaPaper account. There are two property lines at the top of the script edit them to set your Instapaper username and password (if you have one, otherwise, set it to ). The next section handles everything, iterating through each tab, grabbing its title and url and building a shell command to do a simple curl call to the InstaPaper API . After that, the rest of the script is a routine for url encoding that I nicked here . It s called when setting both the and variables to make the curl call from the shell work. I haven t tested this extensively yet, but it s worked for everything I ve tried. A title with odd characters in it could potentially cause problems. You can always add a shell-escaping routine",
"keywords": ["ascii","encoding","evernote","instapaper","interface","iphone","locator","percent","programming","resource","safari","evernote","instapaper","instapaper","safari","account","automatically","below","bookmarks","browsing","building","called","cause","characters","close","command","computers","consider","encoding","entire","entries","escaping","everything","except","extensively","found","generally","grabbing","great","handles","haven","highlight","iphone","iterating","later","nicked","password","posted","potentially","problems","property","routine","saved","script","section","session","setting","shell","simple","special","syncs","tested","through","title","tried","username","variables","worked"]
},{
"title": "A better System Service for Evernote clipping - with MultiMarkdown",
"url": "/2010/03/06/a-better-os-x-system-service-for-evernote-notes-with-multimarkdown/",
"tags": ["evernote","leopard","macos","markdown","multimarkdown","service"],
"date": "Mar 6th, 2010",
"ts": "1267920120",
"summary": "Update: If you re looking for a Markdown - Evernote, check this out . The fact that Evernote processes HTML so much better than it does plain or rich text got me thinking and tinkering. I use Markdown (actually, MultiMarkdown ) constantly, and it does a great job of turning plain text into valid markup. With (Multi)Markdown, even plain text becomes HTML that when imported into Evernote retains most of its formatting. To answer your question, no, I m not obsessed with Evernote, I m obsessed with problems I think I could solve. It s unhealthy. Please note, this requires that you have Fletcher Penney s MultiMarkdown installed in , and that the Perl files (MultiMarkdown.pl and SmartyPants.pl) are located in a bin subdirectory (which is the default install). If you don t have MultiMarkdown, you should get it anyway (all the cool kids have it), so head over to the download page and grab a copy. Now, on with the show. I set this up originally as a TextMate command, intending just to be able to clip code snippets and free-form text to Evernote without thinking too much about it. That worked well, so I modified it to work as a System Service. Specifically, a Snow Leopard service, but I m providing the Ruby script here and it can be modified for any Mac setup you want. While it will work just fine on plain text with no markup, it does have a couple of special features. If you start a line with a and a space (e.g.: # This is my header), which is a Markdown convention for a first-level heading, it will use that as the title for the note and strip it out of the text in processing. It only uses the first one it finds, but it will strip out any first-level headers in the selection. I ll probably modify that later, or just have it leave them in. Also, a line that begins with tags: followed by a space and a comma-separated list of words will be split up and used to tag the new note. This is also stripped before processing. It handles spaces in multi-word tags, and odd marks at the beginning or end of a tag, but only one punctuation character, and only at the beginning or end of a tag. The code follows You can create a System Service in Automator with it, set up a command in TextMate, or do whatever else you can think of. If you just want to download the service and try it out, I ve made it available here . Unzip and copy it to ~/Library/Services (in your home folder). If you set it up as a System Service, assign a shortcut key in the Keyboard pane of System",
"keywords": ["element","evernote","markdown","multimarkdown","textmate","another","automator","changelog","donate","download","evernote","fletcher","github","keyboard","leopard","library","markdown","multi","multimarkdown","overall","penney","preferences","published","requires","service","services","smartypants","specifically","support","system","textmate","unzip","updated","while","abominable","allows","answer","anyway","apparently","appreciated","assign","available","becomes","before","beginning","begins","character","check","choke","clippings","clips","comma","command","constantly","convention","couple","create","creating","default","download","editor","explanation","features","figure","files","finds","first","folder","followed","follows","formatted","formatting","generated","grabs","great","greatly","handles","haven","having","header","headers","heading","headline","hopefully","imported","install","installed","intending","later","leave","level","located","looking","makes","marks","markup","messy","modified","modify","multi","narrowed","nicely","obsessed","originally","problems","processes","processing","providing","punctuation","quickly","regrettably","requires","resulting","retains","script","selected","selection","separated","service","setup","shortcut","snippets","solve","space","spaces","special","spice","split","starting","strip","stripped","subdirectory","support","syntax","think","thinking","tinkering","title","touch","turning","unhealthy","valid","whatever","while","words","worked"]
},{
"title": "fk: redux",
"url": "/2010/03/06/fk-redux/",
"tags": ["function","scripting","shell","terminal"],
"date": "Mar 6th, 2010",
"ts": "1267897740",
"summary": "Just a quick change to my post on the bash function that I ve been using. A small modification has greatly improved its usability: make the cancel option always be first in the menu. Just move Cancel before the bit. It s a little odd that I didn t do that to begin with",
"keywords": ["command","filename","programming","cancel","before","begin","cancel","change","first","function","greatly","improved","little","quick","small","usability","using"]
},{
"title": "Saving Safari browsing sessions to Evernote",
"url": "/2010/03/06/saving-safari-browsing-sessions-to-evernote/",
"tags": ["applescript","evernote","safari","websurfing"],
"date": "Mar 6th, 2010",
"ts": "1267890300",
"summary": "I primarily use Safari for web browsing, mostly because it s smoother and faster than Firefox, and the Web Inspector is just as useful as Firebug. As time passes, I end up with a lot of web pages open, and I like to clear out my browser tabs on a regular basis. Safari doesn t really have a long-term session-saving option, so I save lists of open tabs to various applications. I used to use SafariStand to do this, but it got too buggy and slow for me. I use VoodooPad for it, but I like the sorting and searching option in Evernote , both on my desktop, and synced online and to my iPhone. As much as I love Evernote, its editor is, well, a hassle. Importing text clippings can strip line breaks and leave you with quite a mess, and cleaning it up is less than pleasant. I ve found that using AppleScript, HTML and Evernote together allows me to create pretty well-formatted notes from web and text clippings, aside from using Evernote s PDF features. In most caseslike website clippingsI don t need or want a full PDF, replete with ads and comments ( Clippable was designed with that in mind). The trick when creating a note in Evernote via AppleScript is to use a little HTML to get the basic formatting. Evernote s AppleScript library provides a command tailored to this purpose. To demonstrate, I ll show you how to save your browsing session in Safari as a nicely formatted list in Evernote. For this I set up a new Notebook called Bookmarks, and am keeping the markup very simple. Evernote strips most styling from imported HTML, but accepts structural items like headlines, lists, tables, etc., applying its own default formatting to the elements. To begin, open AppleScript Editor (or Script Editor in Leopard) and create a new document. Save it as EverSurfSaver.scpt (or your own, better name) in , creating the folders if you need to. This makes the script show up at the top of the list when you re in Safari, and not clutter your script menu in other applications. Speaking of the Script Menu, if yours isn t showing up in your menubar, and you want it to, look in the General tab of AppleScript Editor (Snow Leopard) or open the AppleScript Utility (Leopard). I launch most of my scripts with LaunchBar , but I keep the AS menu around. In my script, the first thing I did was set up a template for the link formatting, and a search-and-replace function to implement it. It s not terribly advanced, it just gives you %name and %url as placeholders, and you can set up the",
"keywords": ["applescript","evernote","firefox","iphone","locator","resource","safari","unicode","addendum","applescript","because","bookmarks","click","clippable","cocoadialog","editor","eversurfsaver","evernote","firebug","firefox","general","importing","inspector","justin","launchbar","leopard","notebook","safari","safaristand","saturday","script","speaking","utility","veritrope","voodoopad","wordpress","accepts","action","advanced","again","allows","although","amongst","apologize","append","appending","applications","applying","aside","associated","attribute","available","basic","basis","batch","because","before","begin","beginning","below","blackslash","block","bookmark","breaks","browser","browsing","buggy","building","called","calls","caseslike","check","checkboxes","cleaning","clear","clippings","clippingsi","closing","clutter","collection","command","comments","commerce","containing","create","creating","cycle","deals","decent","default","designed","desktop","dialog","digit","document","doesn","doing","double","easily","editor","elements","entirely","entirety","escaped","extra","fairly","faster","features","first","folders","forgot","format","formatted","formatting","found","fragment","front","frontmost","function","functions","gather","gives","going","great","group","handling","happens","hassle","headlines","however","hyperlink","hyperlinked","iphone","immediacy","import","important","imported","indented","information","items","itself","keeping","keywords","later","launch","leave","library","links","lists","little","looks","makes","markup","meaningful","menubar","method","minus","mostly","nicely","notebook","notes","often","online","original","outside","padded","pages","passes","placeholders","pleasant","plugins","point","possible","prefer","primarily","process","provides","quotes","regular","remember","remove","replace","replete","results","right","saved","saving","script","scripts","search","searching","services","session","shell","shorter","showing","similar","simple","simplicity","single","smoother","sorting","space","specific","statements","string","strings","strip"]
},{
"title": "Clippable updated, goes mobile",
"url": "/2010/02/26/clippable-updated-goes-mobile/",
"tags": ["bookmarklet","clippable","iphone","mobile","readability"],
"date": "Feb 26th, 2010",
"ts": "1267200060",
"summary": "I ve pushed out an update to Clippable , for better or worse. In addition to the previously added line number removal for code blocks, it removes spans used in TextMate formatted code and adds some keyboard shortcuts: These features are added without modifying the original bookmarklet, so if you ve got it installed, you ve got the goodies already. Otherwise, head over to the Clippable bookmarklet page and try it out. The big news, though, is the introduction of Clippable Mobile . It s a work in progress, but installs on an iPhone and makes use of the special formatting options available in Mobile Safari. It shrinks images, cuts off code blocks, etc., making every attempt to provide a readable page that doesn t scroll horizontally. There are occasions where it fails on first attempt, but running it again right away fixes everything. I m still working on figuring out why that happens a little sleep will probably help. Head over to the Clippable Mobile page on your iPhone and follow the instructions to install it. Bug reports are welcome!",
"keywords": ["handhelds","iphone","keyboard","shortcut","smartphones","source","textmate","clippable","escape","mobile","right","safari","textmate","added","again","arrow","available","black","blocks","bookmarklet","doesn","everything","fails","features","figuring","first","fixes","formatted","formatting","goodies","happens","horizontally","iphone","images","install","installed","installs","instructions","introduction","keyboard","light","little","makes","making","modifying","normal","options","original","previously","pushed","readable","removal","removes","reports","return","right","running","scroll","shortcuts","shrinks","sleep","spans","special","switch","welcome","where","white","working","worse"]
},{
"title": "Emma, watching The Westminster Dog Show ",
"url": "/2010/02/18/emma-watching-the-westminster-dog-show-e2-80-a6/",
"tags": [],
"date": "Feb 18th, 2010",
"ts": "1266545400",
"summary": "Uploaded by www.cellspin.net",
"keywords": ["components","downloading","frameworks","programming","server","system","tools","tracking","uploading","uploaded","cellspin"]
},{
"title": "A CellSpin Test",
"url": "/2010/02/18/a-cellspin-test/",
"tags": [],
"date": "Feb 18th, 2010",
"ts": "1266527280",
"summary": "This is a quick test of CellSpin, just to see if it does what I think it will.",
"keywords": ["business","cellspin","electricity","kilowatt","panel","photovoltaic","solar","source","system","technology","cellspin","quick","think"]
},{
"title": "Downtime apology and upcoming projects",
"url": "/2010/01/29/downtime-apology-and-upcoming-projects/",
"tags": ["clippable","songza"],
"date": "Jan 29th, 2010",
"ts": "1264787700",
"summary": "I apologize for the recent downtime, which also affected the Clippable bookmarklet s ability to work. Dreamhost has been pretty awful with downtime lately, and my attempt to switch to a different physical server resulted in a horrible mess for myself and several clients. I have to say that Dreamhost support was extremely helpful in repairing the situation their support is the main reason I ve stuck with them through the 4 hours of downtime I d had up to that point. I m not sure I ll be able to swallow much more, but we ll see if things run as smoothly as they ve promised from here on out. In other news, I have a new version of the Songza service one that doesn t require any additional libraries which I ll post soon. A couple of other little projects are in the works, including a service that interprets natural language dates for various purposes. I m in Atlanta for a week, then I ll be in San Francisco covering Macworld for TUAW, so it may be a bit, but I ll be back!",
"keywords": ["atlanta","downtime","dreamhost","francisco","hosting","service","songza","states","united","wordpress","atlanta","clippable","dreamhost","francisco","macworld","songza","ability","affected","apologize","awful","bookmarklet","clients","couple","covering","dates","different","doesn","downtime","helpful","horrible","hours","including","interprets","language","libraries","little","myself","natural","physical","point","projects","promised","recent","repairing","resulted","server","service","several","situation","smoothly","stuck","support","swallow","switch","through","various","version","works"]
},{
"title": "Big Nerd Ranchero",
"url": "/2010/01/29/big-nerd-ranchero/",
"tags": ["bignerdranch","personal","travel","writing"],
"date": "Jan 29th, 2010",
"ts": "1264786920",
"summary": "I m sitting at the airport in Minneapolis, waiting for a flight to Atlanta. I m headed for Big Nerd Ranch for a week-long crash course in iPhone programming. I ve done a little, but I think it will be a great way to start from the basics and fill in all of the holes in my knowledge. The thing is, I m a little torn about the circumstances Big Nerd Ranch is paying for this trip and providing a week of classes in order for me to review the facilities for The Unofficial Apple Weblog, where I m a blogger. There s nothing innately wrong with the situation, it s essentially the same as receiving an NFR license for software to review, except for I can t give away the license at the end, and it s worth a whole lot more. I want to maintain my journalistic integrity, but I m not sure how this will turn out in the end. Big Nerd Ranch is pretty legendary, and I feel like it would be a waste to decline the invitation. I also feel like there are plenty of developers and would-be devs who would love to have a look at the offerings. I just don t want to be pegged as providing reviews in exchange for anything. I ve always been good about paying for software I ve reviewed and continued using, returning review hardware (or buying it, in the case of the ViDock). I don t want this to be a black mark on my integrity. This is the plan, then: I ll be letting the ranch speak for itself. I ll be shooting video and doing interviews with the personalities involved, including Aaron Hillegass , which I m pretty psyched about. I won t be adding a lot of commentary or expressing my own opinions about the experience. If something s great, it should come through as great without much help from me. I ve noticed that people only question your integrity if you say positive things but I doubt I ll have much negative input in this case. As I said, this is an opportunity I just couldn t bear to pass up. It s exciting and very generous of Big Nerd Ranch. What will be, will be, I guess.",
"keywords": ["aaronhillegass","atlanta","bignerdranch","facebook","handhelds","iphone","minneapolis","aaron","apple","atlanta","hillegass","minneapolis","ranch","unofficial","vidock","weblog","adding","airport","basics","black","blogger","buying","circumstances","classes","commentary","continued","couldn","crash","decline","developers","doing","doubt","essentially","except","exchange","exciting","experience","expressing","facilities","flight","generous","great","guess","hardware","headed","holes","iphone","including","innately","input","integrity","interviews","invitation","involved","itself","journalistic","knowledge","legendary","letting","license","little","maintain","negative","nothing","noticed","offerings","opinions","paying","pegged","people","personalities","plenty","positive","programming","providing","psyched","ranch","receiving","returning","reviewed","reviews","shooting","sitting","situation","software","speak","think","through","using","video","waiting","waste","where","whole","worth","wrong"]
},{
"title": "A (fairly) simple equation evaluation service for Snow Leopard",
"url": "/2009/12/31/equation-evaluation-service-for-snow-leopard/",
"tags": ["leopard","service"],
"date": "Dec 31st, 2009",
"ts": "1262269980",
"summary": "This is a stripped down version of a command I have in the TextMate bundle we use at TUAW . It allows you to select any basic numeric equation and evaluate it, replacing the selected text with the results. It will ignore your text if it contains anything but numbers and basic mathematical symbols. Sure, there are plenty of ways to do calculations in OS X ( Spotlight , Launchbar , Quicksilver ), but I ve had more and more incidents lately where I just wanted to do quick calculations inline, so I whipped this up. A little explanation The service is built for Snow Leopard only, but I m including the code here because it could be wrapped up in ThisService or Bellhop pretty quickly for Leopard. It s built in Ruby and uses the eval function to process text such as and return the result. It will add commas to numbers longer than 3 digits, but I stripped out the part of the original command that trimmed decimal places I figured the accuracy might be important and the results are easy to edit manually in this case. I also added a silly feature that I actually find quite useful: it evaluates +/- percentage strings, such as , which I find most useful for calculating savings during sales or quickly handling markup or tax on services and goods. It can t get too complex, but for most everyday purposes, it does a good job. You can download a ready-to-go Snow Leopard service , or build your own with the code above. Don t forget to use the Keyboard preference panel to assign a keyboard shortcut to it (I m using Control-Shift-=). I d love to hear back if you find it useful!",
"keywords": ["calculation","decimal","launchbar","leopard","textmate","bellhop","control","download","evaluateexpressionservice","expression","keyboard","launchbar","leopard","quicksilver","shift","spotlight","textmate","thisservice","above","accuracy","added","allows","assign","basic","because","build","built","bundle","calculating","calculations","command","commas","complex","contains","decimal","digits","download","equation","evaluates","everyday","explanation","feature","figured","forget","function","goods","handling","ignore","important","incidents","including","inline","keyboard","little","longer","manually","markup","mathematical","numbers","numeric","original","panel","places","plenty","preference","process","quick","quickly","ready","replacing","results","return","sales","savings","selected","service","services","shortcut","silly","strings","stripped","symbols","trimmed","useful","using","version","wanted","where","whipped","wrapped"]
},{
"title": "Clippable updated to remove source code line numbers",
"url": "/2009/12/31/clippable-updated-to-remove-source-code-line-numbers/",
"tags": ["bookmarklet","clippable","evernote","javascript","snippet","source"],
"date": "Dec 31st, 2009",
"ts": "1262260500",
"summary": "I made a couple of minor changes to the Clippable bookmarklet , mostly in the way it handles SyntaxHighlighter code blocks. The SyntaxHighlighter plugin is used (too) often to format and color code source snippets in websites. The result when clipping a page is that the code you get still has line numbers, but no option to view the raw source without going back to the web page. Then you end up manually editing out the line numbers if you want to copy and paste the code, which can be a pain in most cases. Since the point of Clippable was to deal better with things like code blocks (especially for saving snippets to Evernote), it now removes the toolbar and line numbers from SyntaxHighlighter blocks. It also looks for another common technique: converting lines in code to an ordered list inside of a pre block. This is just blotted out with CSS now. Those are the only two highlighting methods it targets at the moment, but I ll tackle more as I run into them. If you already have the bookmarklet installed, you re already benefitting from these changes (the bookmarklet calls the source scripts on my server, so it is, in essence, automatically updated). If not, just cruise over to the Clippable page and grab it!",
"keywords": ["cascading","evernote","programming","sheets","style","syntaxhighlighter","wordpress","clippable","evernote","since","syntaxhighlighter","another","automatically","benefitting","block","blocks","blotted","bookmarklet","calls","changes","clipping","color","common","converting","couple","cruise","editing","especially","essence","format","going","handles","highlighting","inside","installed","looks","manually","methods","minor","mostly","numbers","often","ordered","paste","plugin","point","removes","saving","scripts","server","snippets","source","tackle","targets","technique","toolbar","updated","websites"]
},{
"title": "Designing Draw",
"url": "/2009/12/12/designing-draw/",
"tags": ["appdesign","design","ericasadun","iphone"],
"date": "Dec 12th, 2009",
"ts": "1260678060",
"summary": "Erica Sadun recently released her latest app, Draw (iTunes link), into the wilds of the App Store. I take a special interest in this release because I designed the interface for it from the ground up. Erica, of course, made all of the magic happen she d take my photoshop sketches and send them back as amazing working interfaces. In the end, it was a really fun process to go through and Erica was great to work with. Here s a quick walk-through of the design process. I started with a choice between a chalkboard motif and something more pencil-and-paper based. Erica made that decision pretty easy, and we moved forward with a sketchbook look. The pencil picker was an interesting challenge, I needed to make them small and compact and Erica needed to make them, um, work. A little back and forth and she had a working model using my tiny little pencils that even the largest-fingered user would be able to use. At first, I was mixing hand drawn elements and photorealistic icons, which I ditched in favor of a more congruous hand-drawn aesthetic overall. This included redesigning the more traditional HUD slider to be a piece of paper as well. The nub of translucent black originally used to pull the HUD up turned into a paperclip, attached to a slightly discolored piece of paper which slid over the main panel to reveal additional options. Whereas the HUD would have been suited by a typical exponential tween, the paper aesthetic required a little more cartoonish animation, which Erica accomplished adeptly with a nice bounce. The icons went through quite a few permutations before I gave up on finding the right brush in Illustrator. Eventually, I drew the icon elements (on the same sketchpad I scanned to make the final paper textures) and scanned them in, cleaned them up and turned them into icons. As the sliding elements and icons became less modern, the paper textures and hand-drawn elements became less antique, and soon they met in the middle in a more harmonic interface. The color changed over the course of the mockups, eventually ending up on a more neutral blue-grey. It looks dull and dead next to the more antiqued previous generations, but it s much easier to create your own drawings on a neutral page, so I decided to keep things grey. I think it works well for the end user. The best part of working with Erica is that she could make any of my little visual ideas work. In programming my own apps, I often pull some punches because I don t have the chops to",
"keywords": ["erica","iphone","itunes","mockup","sadun","store","erica","eventually","illustrator","sadun","store","accomplished","adeptly","aesthetic","amazing","animation","antique","antiqued","attached","based","became","because","before","between","black","bounce","brush","cartoonish","chalkboard","challenge","changed","choice","chops","cleaned","color","compact","congruous","create","decided","decision","design","designed","difference","discolored","ditched","drawings","easier","elements","ending","eventually","exponential","favor","finding","fingered","finished","first","forth","generations","great","ground","happen","harmonic","iphone","itunes","icons","ideas","included","inside","interest","interesting","interface","interfaces","knows","largest","latest","little","looks","magic","makes","middle","mixing","mockups","model","modern","motif","moved","needed","neutral","often","options","originally","overall","panel","paper","paperclip","pencil","pencils","permutations","photorealistic","photoshop","picker","piece","process","programming","punches","quick","quickly","recently","redesigning","release","released","required","reveal","right","scanned","sketchbook","sketches","sketchpad","slick","slider","sliding","slightly","small","special","started","suited","textures","think","through","traditional","translucent","turned","tween","typical","using","version","visual","wilds","working","works"]
},{
"title": "Where I've been this week",
"url": "/2009/12/12/where-ive-been-this-week/",
"tags": ["personal"],
"date": "Dec 12th, 2009",
"ts": "1260654900",
"summary": "Well, I ve been out of touch with a lot of people for the last four days, and I thought I d save some time and provide a place I could link everyone to for a quick explanation. On Tuesday evening, in the middle of what the weather service is calling our worst storm in 20 years, I started having stomach cramps. I won t go into detail about what followed, but I ll skip forward to the part where Aditi (my loving and amazingly dedicated wife) packed me into her 4-wheel drive Pathfinder and headed out to Community Memorial Hospital. After a brief survey, I was admitted for observation. It looks, at this point, like a bacterial Colitis, which essentially just means an inflammation of the colon with bacterial sources, as opposed to sources that might not be curable. That would be an ideal diagnosis at this point, but I have to schedule a colonoscopy next week which will hopefully shed more definitive light on the situation. I sincerely thank everyone who s been supporting me and sending warm wishes throughout this, and apologize to those I probably should have contacted by now but have been too overwhelmed to do so. The photo (click to enlarge) is of me getting ready for my second shower the bare patches on my chest are where the previous incarnation of the telemetry patches were located. The wrapping on my arm covers the IV site, which effectively disables that arm and leaves me to shower one-handed. Good times.",
"keywords": ["aditi","autos","colitis","community","drive","hospital","makes","memorial","models","recreation","states","united","wheel","aditi","colitis","community","hospital","memorial","pathfinder","tuesday","admitted","amazingly","apologize","bacterial","brief","calling","chest","click","colon","colonoscopy","contacted","covers","cramps","curable","dedicated","definitive","detail","diagnosis","disables","drive","effectively","enlarge","essentially","evening","everyone","explanation","followed","getting","handed","having","headed","hopefully","ideal","incarnation","inflammation","leaves","light","located","looks","loving","middle","observation","opposed","overwhelmed","packed","patches","people","photo","point","quick","ready","schedule","second","sending","service","shower","sincerely","situation","sources","started","stomach","storm","supporting","survey","telemetry","thank","thought","throughout","times","touch","weather","wheel","where","wishes","worst","wrapping","years"]
},{
"title": "My new favorite Bash prompt",
"url": "/2009/11/17/my-new-favorite-bash-prompt/",
"tags": ["prompt","terminal"],
"date": "Nov 17th, 2009",
"ts": "1258503120",
"summary": "I do a lot in Terminal. Sometimes, it s easier. Sometimes it s faster. Sometimes I d just rather type it out. Whatever the reason, I ve never been able to stand looking at a boring shell prompt. Bash is my primary shell, mostly because I ve never taken the time to learn much else. I ll get there someday. For now, here s my current Bash shell prompt I m using the variable to run a few quick functions to generate the prompt. It doesn t do anything processor-intensive, so I haven t seen any lag caused by this one (unlike some of my previous experiments). is set to call a function called, appropriately, . This, in turn, calls a few external functions defined in my . To use it, just stick all of the code below into your , and modify it as you see fit. Be sure to replace any definitions of or . The current time is formatted just the way I like it. You can modify the function with your own strings as desired. The current 1m average CPU load is included in the prompt in dark grey, gathered using a quick command. If the previous command returned an error message, the error code returned will show up at the end of the first line in red. If you use Git, and your current working directory is a Git repository, the current branch will be shown in green before the actual prompt on the second line. This might cause problems if you don t have Git installed if you see Git-related errors, you can remove the section of the code under the Git comment from to . Also remove the from the last line of the function. Lastly, it sets the title of the tab in Terminal to the last two portions of the current working directory () string, meaning the current directory and its parent directory. All of the colors used in the prompt are defined as shell variables. In the final line of the function, you can modify the colors just by replacing the color names in the line. That should be pretty self-explanatory.",
"keywords": ["directory","function","github","operating","systems","title","working","lastly","sometimes","terminal","whatever","appropriately","average","because","before","below","boring","branch","called","calls","cause","caused","color","colors","command","comment","defined","definitions","desired","directory","doesn","easier","error","errors","experiments","explanatory","external","faster","features","first","formatted","function","functions","gathered","green","haven","hidden","included","installed","intensive","learn","looking","meaning","message","modify","mostly","names","parent","portions","primary","problems","processor","prompt","quick","rather","related","remove","replace","replacing","repository","returned","second","section","shell","shown","someday","stand","stick","string","strings","taken","title","under","unique","unlike","using","variable","variables","working"]
},{
"title": "fk: a useful bash function",
"url": "/2009/11/14/fk-a-useful-bash-function/",
"tags": ["function","terminal"],
"date": "Nov 14th, 2009",
"ts": "1258243140",
"summary": "This is a function from my OS X .bash_profile. fk is short for Find and Kill, and it lets you do a quick search of your running processes for a case-insensitive partial match of the first parameter passed to it. It s useful for quickly finding a process without worrying about its capitalization or full spelling, and without having to sift through (or manually grep) a long list. On OS X (and similar Linux systems), you should have a file in your home folder () called .bashprofile. Just copy and paste this code at the bottom of that file, and then run in Terminal. Now (and every time you log in) you can run , where process is a partial name of a running application or UNIX process. You ll get a menu with the matches, and you can kill a specific process by typing its number at the prompt. The last option is always Cancel, which will terminate the command without taking any action. I d love to hear about any improvements you make to this code I m far from a Bash pro.",
"keywords": ["directory","linux","operating","sensitivity","shell","systems","cancel","linux","terminal","action","bottom","called","capitalization","command","finding","first","folder","function","having","improvements","insensitive","manually","match","matches","parameter","partial","passed","paste","process","processes","profile","prompt","quick","quickly","running","search","short","similar","specific","spelling","systems","taking","through","typing","useful","where","worrying"]
},{
"title": "Songza Lucky Link Service",
"url": "/2009/11/12/songza-lucky-link-service/",
"tags": ["leopard","service","songza","textmate"],
"date": "Nov 12th, 2009",
"ts": "1258069260",
"summary": "This is a quick and dirty Snow Leopard Service that scrapes Songza.fm to find a song related to your selected text in most applications. It replaces the selected text with an is.gd shortened link and the name of the first song it found (just to be sure you re on the same page literally). The code is also available as a TextMate command for those interested. Update: TextMate command with link selection popup . The service (and TextMate command) require the Hpricot gem for ruby. In most cases, this should be installable from the command line with . If you see errors, you may need to update some Ruby components. Once that s set, just install the workflow in ~/Library/Services and it should immediately start showing up in your services menu. Add a shortcut for it in Preferences - Keyboard - Shortcuts - Services. Next time you re tweeting or writing an email about a song, why not send a Songza link to back up your point? Songza Lucky Link Service v1.1 Download Songza Lucky Link Service v1.1 A Snow Leopard Service to generate a shortened url to the first result of a Songza.org search for the selected text. The text will remain, but it will have the result in parenthesis after it. Uses a built-in html parser to scrape the results, at least until Songza provides an API. Published 03/20/10. Updated 03/20/10. Changelog Donate More info Your support is greatly appreciated! Or me on GitHub!",
"keywords": ["command","interface","languages","leopard","programming","songza","sublime","textmate","changelog","donate","download","github","hpricot","keyboard","leopard","library","lucky","preferences","published","service","services","shortcuts","songza","textmate","updated","applications","appreciated","available","built","command","components","dirty","email","errors","first","found","greatly","install","installable","interested","literally","parenthesis","parser","point","popup","provides","quick","related","replaces","results","scrape","scrapes","search","selected","selection","service","services","shortcut","shortened","showing","support","tweeting","workflow","writing"]
},{
"title": "Test post from iphone",
"url": "/2009/11/12/test-post-from-iphone/",
"tags": [],
"date": "Nov 12th, 2009",
"ts": "1258057080",
"summary": "Test post from my iPhone. I figure if this is slick enough, I might blog more Guess we ll find out.",
"keywords": ["apple","handhelds","iphone","samsung","smartphone","store","guess","enough","figure","iphone","slick"]
},{
"title": "Getting back into real TextMate blogging",
"url": "/2009/11/03/getting-back-into-real-textmate-blogging/",
"tags": ["blogging","bundle","textmate","xmlrpc"],
"date": "Nov 3rd, 2009",
"ts": "1257310140",
"summary": "It may take me a while to convert my setup back to the old days of TextMate blogging. I ve primarily been blogging for TUAW , which uses a blogging system with very poor XMLRPC support. The end result of this, for me, was the development of an elaborate TextMate bundle which emulated the ease-of-use that TextMate provides to bloggers on Wordpress (and other platforms). I have, I guess, forgotten how to do this. So this post is going to begin as a test, to be continued with some ideas, some tools, and some discoveries I ve made in my time away from the glory of TextMate blogging.",
"keywords": ["command","interface","markdown","sublime","textmate","twitter","wordpress","markdown","textmate","wordpress","xmlrpc","begin","bloggers","blogging","bundle","continued","convert","development","discoveries","elaborate","emulated","float","forgotten","glory","going","guess","ideas","image","paragraph","platforms","primarily","provides","setup","support","system","tools","upload","while"]
},{
"title": "Clippable to Evernote Snow Leopard Service",
"url": "/2009/11/03/clippable-to-evernote-snow-leopard-service/",
"tags": ["bookmarklet","clippable","evernote","keyboard","leopard","safari","service","webdesign"],
"date": "Nov 3rd, 2009",
"ts": "1257306900",
"summary": "Clippable to Evernote will allow you to trigger the Clippable bookmarklet in Safari and copy the result directly to your Unfiled notebook in Evernote. This service is Snow Leopard-only. If you need it modified for Leopard and aren t sure how, let me know. If there s some interest, I ll just work one up and post it. To install in Snow Leopard, just unzip (double-click the zip file) the file and move the resulting .workflow file to [your home directory]/Library/Services. It should now appear in your Safari- Services menu, in Safari only. To add a keyboard shortcut to the Service, go to the Keyboard pane in System Preferences, choose the Keyboard Shortcuts tab, select Services on the left and find the Clippable service on the right. Double click on the right side of the listing to enter a hotkey. I currently have mine bound to control-command-E, which works well for me in Safari.",
"keywords": ["evernote","keyboard","leopard","preferences","safari","services","shortcut","system","utilities","windows","clippable","double","download","evernote","keyboard","leopard","library","preferences","safari","service","services","shortcuts","system","unfiled","allow","appear","bookmarklet","bound","choose","click","command","control","directly","directory","double","enter","hotkey","install","interest","keyboard","listing","modified","notebook","resulting","right","service","shortcut","trigger","unzip","workflow","works"]
},{
"title": "Clippable",
"url": "/2009/11/03/clippable/",
"tags": ["bookmarklet","clippable"],
"date": "Nov 3rd, 2009",
"ts": "1257300240",
"summary": "11.03.09 Renaming Readable2 to Clippable, I think. At least that s what it s going to be on the code page, for now.",
"keywords": ["baltimore","bookmarklet","fiction","formats","israel","judaism","plains","science","white","clippable","readability","readable","renaming","bookmarklet","found","going","original","think"]
},{
"title": "Readability2 leaks out",
"url": "/2009/11/02/readability2-leaks-out/",
"tags": ["clippable","evernote","javascript","service"],
"date": "Nov 2nd, 2009",
"ts": "1257147000",
"summary": "So my modification of the Readability bookmarklet kind of snuck out before it was ready, but it s my own fault. Now I m scrambling a little to make it more presentable and less of a straight-up hack of the excellent original . I wanted to make a few things clear about my goals and purpose on this one. First the entire project was really a subset of my attempt at a better Evernote clipper for Snow Leopard. One which allowed me to preserve code formatting and automatically remove comments and ads from the post, in a smarter fashion than the current Safari clipper does. I built it as a System Service and run it with a hotkey. You can download it and try it out, if you like. I ll make a more accessible version with instructions shortly. This is why I removed the formatting options from the bookmarklet Evernote was going to strip all of that out anyway. Originally, I was just using the code to strip out ads and find the meat. The modifications to preserve code blocks, movies, etc. were simply working toward the perfect Evernote clip. It works for what it is, but wasn t really intended to be used without the Evernote Service. If I get enough feedback, and no cease and desist orders from the original creators, I ll continue to modify it. One thing you can certainly do to help is provide me with URL s to pages it fails on the more scenarios I can study, the smarter I can make it.",
"keywords": ["design","development","evernote","google","keyboard","leopard","readability","safari","shortcut","evernote","first","leopard","originally","readability","safari","service","system","accessible","allowed","anyway","automatically","before","blocks","bookmarklet","built","certainly","clear","clipper","comments","continue","creators","desist","download","enough","entire","excellent","fails","fashion","fault","feedback","formatting","goals","going","hotkey","instructions","intended","little","modifications","modify","movies","options","orders","original","pages","presentable","project","ready","remove","removed","scenarios","scrambling","shortly","simply","smarter","snuck","straight","strip","study","subset","toward","using","version","wanted","working","works"]
},
{
"title": "Latest Bunch News",
"url": "/bunch_news/",
"tags": [],
"date": "page",
"ts": "",
"summary": "BrettTerpstra.com",
"keywords": []
},
{
"title": "Doing - All Commands",
"url": "/doing_all_commands/",
"tags": [],
"date": "page",
"ts": "",
"summary": "Global Options Commands again (or resume) Options archive (or move) SECTIONORTAG Options autotag Options cancel COUNT Options changes (or changelog) Options colors commands Commands add (or enable) [COMMAND [COMMAND ]] ls (or list) [QUERY] Options remove (or disable) [COMMAND [COMMAND ]] completion Options Commands generate [zsh|bash|fish|all] Options install [zsh|bash|fish] config Options Commands edit (or open) Options get (or dump) Options list set Options undo update (or refresh) done (or did) [ENTRY] Options finish [COUNT] Options grep (or search) SEARCH_PATTERN Options help command Options import PATH Options last Options later ENTRY Options mark (or flag) Options meanwhile [ENTRY] Options note [NOTE_TEXT] Options now (or next) ENTRY Options on DATE_STRING Options open Options plugins Options recent COUNT Options redo COUNT Options reset (or begin) [DATE_STRING] Options rotate Options sections Commands add SECTION_NAME list Options remove SECTION_NAME Options select Options show [SECTION|@TAGS] Options since DATE_STRING Options tag TAG Options tag_dir TAG [TAG..] Options tags [MAX_COUNT] Options template TYPE Options test today Options undo COUNT Options update Options view VIEW_NAME Options views [NAME(S)] Options wiki Options yesterday Options record of what you ve been doing, complete with tag-based time tracking. The command line tool allows you to add entries, annotate with tags and notes, and view your entries with myriad options, with a focus on a natural language syntax. v2.1.84 Use a specific configuration file. Deprecated, set $DOING_CONFIG instead Default Value: Specify a different doing_file Default Value: Colored output Verbose output Answer yes/no menus with default option Show this message Answer all yes/no menus with no Output notes if included in the template Use a pager when output is longer than screen Silence info messages Send results report to STDOUT instead of STDERR Display the program version Exclude auto tags and default tags Answer all",
"keywords": ["allow","answer","archive","argument","automatically","autotag","available","backdate","boolean","change","command","config","count","cancel","change","check","checks","colored","command","commands","config","contents","count","deprecated","doing","default","deprecated","disable","disables","display","doing","entry","editor","export","fixed","filter","finish","flexible","force","format","generates","global","highlight","improved","ignored","import","imports","initial","install","interpret","items","label","later","limit","lists","markdown","marks","match","matching","monday","multiple","normal","options","output","override","overrides","overwrite","patch","pattern","prefix","prompt","query","record","remove","repeat","replace","reset","resume","return","reverse","reverts","rotate","search","section","stderr","stdin","stdout","string","search","section","separate","shortcut","shows","silence","since","specify","starting","stuff","sublime","table","target","taskpaper","templates","timed","title","using","value","values","verbose","views","wildcards","access","accurate","action","added","adding","affects","again","albeit","allow","allowed","allowing","allows","alter","altered","alternate","annotate","append","archive","archiving","argument","arguments","assist","automatically","autotag","available","backdate","backdates","backups","based","before","began","begin","below","between","boolean","booleans","bundle","byday","calendar","cancel","cannot","change","changelog","changelogs","changes","choose","color","colors","column","coming","comma","command","commands","completed","completions","config","configs","configuration","configurations","configutations","confirmation","containing","content","contents","converted","count","counts","create","created","creating","custom","customization","daily","dated","dates","datestamp","dayone","default","defaults","defined","deletes","deleting","designed","detected","different","direction","directories","directory","disable"]
},
{
"title": "Giveaway Test",
"url": "/sponsorship/giveaway/",
"tags": [],
"date": "page",
"ts": "",
"summary": "Sorry, this giveaway has ended.",
"keywords": ["sorry","again","ended","giveaway","testing"]
},
{
"title": "BrettTerpstra.com Sponsorship Guidelines",
"url": "/sponsorship/guidelines/",
"tags": [],
"date": "page",
"ts": "",
"summary": "Thank you for your interest in advertising on BrettTerpstra.com. Your post will reach over 50k readers with a vested interest in technology and productivity. A sponsored post is written by the advertiser. I retain right to final edit, and in some cases will flesh out content from bullet lists of points for the advertiser, but this requires an agreement in advance and affects price. The headline should be 80 characters or less (60 is preferred). The headline is up to you, and will have appended on the site. An effective headline should offer a value proposition that will be detailed in the post, and preferably include the name of the advertiser/product. A sponsored post contains one image (required), included after my recommendation and before your content. The image provided should be 1600px wide, in landscape (or square) orientation. It will be displayed at 800px wide and provided at 2x resolution for high-res displays, and will scale for mobile/smaller devices. The image will be clickable and linked to the same link as the call to action. The most effective images indicate where clicking it will lead, and can optionally include the call to action, positioning it at the top of the post as well as at the end. A sponsored post can be up to 600 words (no minimum), and can include paragraphs, bullet lists, links, and block quotes. The content should be written in your voice, not mine. It will be introduced by me with a personal recommendation, then it will be presented as you speaking directly to my audience. The content should include a call to action at the end, linked to your website, and including any tracking parameters you wish. Including multiple links to different urls within the content is allowed but not recommended the call to action should be the focus. All links will have appended to the HTML tag. A sponsored post does the best when it focuses on a single value prospect or use case for your service/product. You can, of course, just list all features, but focusing on one feature/use case is more effective ( example ). If you re running multiple spots, use a different focus in each spot. For the duration of the sponsorship (1 week), every page on the site will have a short text link in the sidebar. If you don t provide the text and destination for this link, it will read Sponsored by [advertiser], [tagline from headline] and link to the same url as the call to action. Feel free to specify this text when submitting materials. The",
"keywords": ["blurb","brettterpstra","content","details","headline","image","including","mastodon","materials","media","optional","posts","sidebar","social","sponsored","summary","thank","twitter","action","advertiser","advertising","affects","agreement","allowed","appended","assumed","audience","before","block","bullet","characters","clarifications","clickable","clicking","contains","content","continue","destination","detailed","devices","different","directly","displayed","displays","effective","email","example","examples","feature","features","flesh","focus","focuses","focusing","followers","format","headline","image","images","included","including","interest","interested","introduced","landscape","linked","links","lists","materials","media","mobile","multiple","offer","optional","optionally","orientation","paragraphs","parameters","parties","personal","points","positioning","preferably","preferred","presented","price","product","productivity","proposition","prospect","questions","quotes","reach","readers","readership","recommendation","recommended","required","requires","resolution","right","running","scale","service","shared","short","sidebar","single","smaller","social","speaking","specify","sponsored","sponsorship","sponsorships","spots","square","submitting","tagline","technology","tracking","value","vested","visit","voice","website","where","within","words","working","written"]
},
{
"title": "Brett's Soundtrack",
"url": "/soundtrack/",
"tags": [],
"date": "page",
"ts": "",
"summary": "This page contains experiments in combining data from Last.fm, Spotify, and Apple Music in a responsive presentation. Click an item below to view. I'm happy to share the scripts, feel free to contact me if you're curious. Top Tracks Last.fm most-played tracks (12 months), images and audio previews from Spotify with fallback to Apple Music. Meter shows: Energy , Danceability , Valence (Cheerfulness) Cover Artwork Recent Plays Latest scrobbles from Last.fm with photos and audio previews from Apple Music. Meter shows: Energy , Danceability , Valence (Cheerfulness) Top Artists Last.fm most-played artists (6 months). Bio and related artists from Last.fm, photos, genres, and top tracks from Spotify, previews from Spotify with Apple Music fallback. Faved Tracks Loved on Last.fm, previewed with embeds from the iTunes Search API.",
"keywords": ["apple","artists","artwork","cheerfulness","click","cover","danceability","energy","faved","latest","loved","meter","music","plays","recent","search","spotify","tracks","valence","artists","audio","below","combining","contact","contains","curious","embeds","experiments","fallback","genres","happy","itunes","images","photos","played","presentation","previewed","previews","related","responsive","scripts","scrobbles","share","shows","tracks"]
},
{
"title": null,
"url": "/",
"tags": [],
"date": "page",
"ts": "",
"summary": "Welcome to the lab. BrettTerpstra.com Flexibits Premium giveaway! I 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 re reading this via RSS, you 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/22/24 at 12:00 PM. Name: Yes, sign me up for the BrettTerpstra.com mailing list. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you 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! I wanted short urls for Dimspirations , and I wanted a custom domain name (dim.moi), but didn 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",
"keywords": ["aaron","accept","acknowledging","action","adams","albert","alfred","allow","altogether","amazon","appreciation","archive","avoid","brett","bsponsor","backblaze","banner","begin","black","brett","brettterpstra","build","bunch","bureau","calendar","cardhop","central","check","christoph","clearly","closely","closing","cloudfront","cluster","colorful","compose","congratulations","context","cotton","crafting","create","daniel","default","dimspirations","display","doron","douglas","dreamhost","dropzone","eaglefiler","effective","email","emails","enter","entries","example","excursions","express","fantastical","fbike","fbrettterpstra","fbuild","fdimspirations","ferkenstad","fflexibits","flexibits","foley","frank","friday","friendly","fthings","github","giveaway","giveaways","greeting","harahan","hassle","hookmark","hopefully","however","hyper","indieterpstra","interconnected","luckily","mastodon","meeting","merch","millard","minnesota","monday","myers","nathan","nicholas","nihilisa","online","panzier","photo","photos","polite","premium","printful","products","readme","recipient","reminder","reminders","robot","roddenberry","sanebox","sanereminders","sanebox","scheduling","schneider","screenshot","sellfy","shortly","shorty","simple","sorry","specific","specify","sponsor","spring","standard","stephen","store","subdomain","superkey","sweater","terpstra","thank","thanks","think","tumblr","twitter","unite","upcoming","visit","welcome","willis","winners","within","workbench","writing","access","achieve","across","action","actionable","actions","adamrice","adams","added","adding","additions","address","addressing","adjust","admit","affordably","again","allow","allowtransparency","alongside","altogether","among","announce","anxiety","append","appending","appreciated","appreciation","approaching","archive","arrangements","article","aside","associated","attached","attendance","author","automatically","avoid","awesome","backblaze","background","backs","balance","bandwidth","banner","based","basic","before","begin","behavior","below","beyond","biggest","black","blackink"]
},
{
"title": "Macworld 2014 links",
"url": "/macworld-2014-links/",
"tags": [],
"date": "page",
"ts": "",
"summary": "Add a Spacer to the Mac OS X Dock Hyper Key Adding a shortcut key for tagging in Mavericks Automator: Markdown Service Tools Mac App Store - Dropzone Mac App Store - Desktop Curtain LaunchBar 5 Alfred App - Productivity App for Mac OS X Hazel Mac Menu Bar Item Control Markdown Service Tools - BrettTerpstra.com TextExpander Tools - BrettTerpstra.com Mac App Store - PopClip Brett s PopClip Extensions - BrettTerpstra.com OS X keyboard shortcuts A Few Handy, Hidden OS X Shortcuts BetterTouchTool Introducing Apptivate 2.1 Mac App Store - FastScripts Mac Basics: Spotlight Create good queries in Spotlight Spotlight Commands (PDF) HoudahSpot - Find Mac files. Fast! Default Folder X TotalFinder brings tabs to your native Finder and more! Mac Basics: Automator Mac OS X Automation TextExpander: Mac Typing Shortcut Utility Saves You Time",
"keywords": ["adding","alfred","apptivate","automation","automator","basics","bettertouchtool","brett","brettterpstra","commands","control","create","curtain","default","defaultfolderx","desktop","dropzone","efficient","extensions","fastscripts","finder","folder","handy","hazel","hidden","houdahspot","hyper","introducing","launchbar","links","macworld","markdown","mavericks","popclip","productivity","saves","service","shortcut","shortcuts","spacer","spotlight","store","textexpander","tools","totalfinder","typing","utility","alfredapp","apple","apptivateapp","article","bettertouchtool","binaryage","bretts","brettterpstra","brings","comprojects","curtain","desktop","dlfiles","dropzone","extensions","fastscripts","files","handy","hazel","hidden","hints","houdah","houdahspot","https","index","itunes","keyboard","launchbar","ldquo","lifehacker","macbartender","macosxautomation","macworld","markdown","mavericks","native","noodlesoft","obdev","osxdaily","popclip","products","projects","queries","rdquo","rsquo","service","shortcut","shortcuts","smilesoftware","spacer","speedier","spotlight","stclairsoft","support","tagging","tools","totalfinder","useful"]
},
{
"title": "systematic linkage",
"url": "/otherstuff/systematic-linkage/",
"tags": [],
"date": "page",
"ts": "",
"summary": "Shows #122: Thank you for the fish #121: Fighting Cancer with Anthony Waller #120: Trekking with Scott McNulty #119: Pioneering in Media with Jason Snell #118: Roderick dot dot dot #117: Reluctant Selfies with Virginia Roberts #116: Sketchnote Master Mike Rohde #115: Tech Addiction with Dr. Pam Peeke #114: David Wain and The State of Things #113: Roderick Part III #112: Internet Anonymity with Patrice Brend amour #111: Underworld Dogs with Aditi Terpstra #110: Roderick Part II: Breaking Up #109: The Principal s Office with Mike Rogers #108: Measures of Success with Michael Simmons #107: Um, Presentations with David Sparks #106: Roderick on the Systematic Line (Part 1) #105: Uniform Individuality with Kevin Rothermel #104: All turtles, all the time with Paul Gibbons #103: Speaking Of Stage Fright with Nat Osten #102: Startup Religions with Brian Alvey #101: Safety First with Jordan Cooper #100: Episode 100 with Merlin Mann #99: Dave Hamilton and Moisés Chiullan - Drums, Routers and WWDC #98: Reading, writing and rithmetic with Brett Kelly #97: Phillip Broughton - Sub-zero radioactive bartending #96: Economic Audiophilia with Matthew Ward #95: Robert McGinley Myers - Tech Anxiety #94: Work Overload With David Chartier #93: Appropriating Tech with Alex Enkerli #92: Ryan Irelan - Fascinating Details #91: Ad Hilaritatem with Brother Gabriel Mosher #90: Zachary Kain on design, writing and ADHD #89: Colin Devroe on developing in the open #88: David Macdonald hacks music and fitness #87: David Duval - Hobbits and Higher Ed #86: Nick Honko on Technology and Learning #85: Adam Christianson - on getting to independent #84: Aaron Hockley: Capturing Emotion #83: Dave Seah - Creative Productivity #82: John Voorhees - Coding Legalese #81: Greg Pierce on tortoises, app development and pizza #80: Graham Lampa - Digital Diplomacy #79: Marco Arment - Indie Life #78: Jeff Severns Guntzel - Telling Stories #77: Chase Nordengren - Tagging, brainstorming and educational policy #76: Fatal Mutations with Dr. Don Schaffner #75: Tech in Humanities with José de Piérola #74: Will Styler on Linguistics, Android and Audiophilia #73: Seth Brown - One bourbon, one scotch, and a few statistical analyses #72: Philip Mozolak On Cop Cars and Forgotten Art History #71: David Sparks on Email #70: The Magical Jamie Phelps #69: The Health Episode with Dr. Pam Peeke #68: Justin",
"keywords": ["archive","aspca","atlas","avsab","aalst","aamazon","aaron","aaronmahnke","abbey","abnormal","abstract","academic","academy","accents","accessories","accessory","accidental","accordions","accurate","acorn","acousticsheep","acqualia","acting","action","activity","actotracker","addicted","addiction","adhesive","aditi","adobe","adolescents","adrian","advanced","adventures","aeropress","aeroccino","aeronaut","again","against","agenda","agile","agilebits","agony","agreda","agricola","airfoil","airlines","aistxgaga","alamagoozlum","albers","albina","album","alesmith","alexandre","alfred","allen","aloud","alpha","alpine","aluminum","alvey","amazing","amazon","america","american","ampkit","amplitube","amplified","amusionist","analog","ancestry","andrew","android","animal","animals","anime","anker","annotation","announcing","anonymity","anonymizer","another","answered","anthony","antithesis","anvil","anxiety","anxious","anyone","apple","applr","appropriating","apptivate","aptus","archer","archive","archy","arkel","arment","arrogant","arthouse","arthur","articles","artists","artka","asepsis","ashley","ashleyesqueda","asperger","assistant","assistants","asterios","atmosphere","atomic","attachments","attack","audialhub","audio","audiobox","audioengine","audiophilia","auralex","autolux","automatic","automattic","average","aviator","awesome","ayers","bbedit","black","bocbz","bsmwa","btput","babelmark","babypants","backblaze","backdrop","backflip","backlit","backup","baghdad","barclay","barley","bartek","bartender","bartending","based","basics","bastard","bastards","battery","battle","battleship","beamapp","beats","beautiful","bebot","because","beckett","before","begin","behavior","behaviorworks","behaviorist","behind","belkin","bella","benedict","berlin","bettertouchtool","between","beyond","bible","biggest","billing","billings","bionic","bittorrent","bitsplitting","black","blades","blake","blanc","blanchard","blankbaby","bleach","bleeding","bloggess","blogging","blogsmith","blood","bloom","bloop","blount","blueboard","bluelounge","blueprint","bluetooth"]
},
{
"title": "Ringtones 2",
"url": "/otherstuff/ringtones2/",
"tags": [],
"date": "page",
"ts": "",
"summary": "For the ever-manic people in your contacts list. Just to set the tone when they call out of the blue, probably with some crazy idea for your next entreprenurial attempt. Yeah yeah yeah. No no no. It s actually the opposite. A nice, mellow, harmonica buildup that would fit nicely in Apple s default selection if it weren t for the whole copyright thing. This ringtone is primarily designed to quietly advise caution before answering the call. Assign it to the more questionable contacts you only hear from occasionally.",
"keywords": ["apple","assign","batshit","collection","crisis","dolls","heartbreakers","invited","lipstick","petty","rudeness","specials","answering","before","buildup","caution","contacts","copyright","crazy","customized","default","designed","download","entreprenurial","harmonica","manic","mellow","nicely","occasionally","opposite","people","primarily","questionable","quietly","ringtone","ringtones","selection","weren","whole"]
},
{
"title": "Ringtones",
"url": "/otherstuff/ringtones/",
"tags": [],
"date": "page",
"ts": "",
"summary": "You know how annoyed you get when the person in front of you in the checkout line has decided to use their favorite bubblegum pop or better yet a generic but slightly danceable techno riff as their ringtone? The best defense is a good offense. Now you can be that person. This is a set of six iOS ringtones I made because I was bored. I actually use the Cleartones ringtones , but the fact that I can assign different ringtones to different callers means I have a little flexibility in the obnoxiousness as the situation calls for it. You may recognize these as they re all snippets from some of the best songs ever. No, that s not subjective. They are the among the greatest songs in the history of human sound creation. For the psycho ex-girlfriend/boyfriend. It puts you in the mood for stimulating conversation and prepares you for your eventual return to therapy. A slightly longer clip which literally explodes about halfway through. It will either make you want to answer your phone quickly to avoid embarrassment, or (if you re like me), will make you miss phone calls because you just have to hear the good part. Think about Green Street Hooligans and decide who in your contact list is most like Elijah Wood. Then think about his character in Sin City as you fall asleep tonight. Sweet dreams. These actually make reasonable ringtones, in my opinion. Possibly even of aphrodisiac quality. I should call them the Is that a phone in your pocket, or ringtones instead. So there. The whole set is available here for free until I get sued. Then I ll charge all the people who downloaded it exorbitant amounts so I can pay my lawyer.",
"keywords": ["burning","cleartones","collection","elijah","everything","green","hooligans","possibly","ringtones","stomp","street","swamp","tastes","think","thorny","unlicensed","wreck","ahead","among","amounts","annoyed","answer","aphrodisiac","asleep","assign","available","avoid","because","bored","boyfriend","bubblegum","buddy","callers","calls","character","charge","checkout","contact","conversation","crazy","creation","danceable","decide","decided","defense","different","downloaded","dreams","drinking","either","embarrassment","eventual","exorbitant","explodes","favorite","flexibility","friend","front","generic","girlfriend","greatest","grocery","halfway","history","human","lawyer","literally","little","longer","looking","obnoxiousness","offense","people","person","phone","pocket","prepares","psycho","quality","quickly","reasonable","recognize","return","ringtone","ringtones","situation","slightly","snippets","songs","sound","stimulating","store","subjective","techno","therapy","think","through","tonight","unpopular","wants","whole"]
},
{
"title": "Wallpapers",
"url": "/otherstuff/wallpaper/",
"tags": [],
"date": "page",
"ts": "",
"summary": "The entire collection of Dimspirations has moved to Dimspire.me . Go check it out! 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 More info Not because it is easy, but because wallpaper. Or me on GitHub!",
"keywords": ["changelog","collection","desktop","dimpapers","dimspirations","dimspire","donate","download","github","paper","published","updated","wallpapers","based","because","check","classic","collection","entire","iphone","moved","songs","typographic","wallpaper","wallpapers"]
},
{
"title": "Other stuff",
"url": "/otherstuff/",
"tags": [],
"date": "page",
"ts": "",
"summary": "BrettTerpstra.com",
"keywords": ["apple","music","ringtones","soundtrack","spotify","systematic","wallpaper","downloadables","experiments","interest","links","questionable"]
},
{
"title": "How To: Install a macOS Service",
"url": "/howtos/install-an-os-x-system-service/",
"tags": [],
"date": "page",
"ts": "",
"summary": "If you downloaded the file from a website it may be compressed, usually as a .zip file (if your browser is set to automatically open files or you see a .workflow file but no .zip file, skip ahead). Locate the file in your Downloads folder and double-click it to unzip/extract the contents. For most third-party Services you ll find on the web, the extracted file will have a .workflow extension. You have two options for installing the Service. The simplest way to install a single Service is to double-click it in Finder. Finder will show a dialog asking if you want to install the Service. Just hit Install to add it to your Services menu. You can also move the files into your Services folder manually. This may be useful if you re installing multiple Services (such as the Markdown Service Tools . To do so: Open a new Finder window (⌘N) Locate your user s Services folders by going to your Home directory (titled with your username), and within it finding Library Services*. Drag the .workflow file from the first Finder window into the Services folder. The service is now installed. You may have to enable it from System Preferences. If you re not seeing it show up as mentioned under Using the Service, see Adding a keyboard shortcut below to access and enable Services in System Preferences. * If you can t find your Library folder, use Go- Go to Folder (Shift-Command-G) and enter to jump right there. Your new Service will show up in two places when it s available: the Services submenu of the Applications menu in the menubar, and the Services submenu of the contextual menu which pops up when you right (or Control) click a file or selected text. Not all Services are available all the time, they only appear when your selected object is something on which they can act. For example, if it s a text-modifying service and you have a file selected, that service will not show up in the Services list. Using the Service is as easy as selecting the type of object (files, text) it acts on and selecting it, either from the Application Services menu or by right-clicking on your selection and selecting it from the Services submenu. There s one more way to activate the Service, though, and it makes accessing your tools very convenient… To add a keyboard shortcut to your Service, open System Preferences and choose the Keyboard Shortcuts tab at the top. Sometimes there s a delay when loading this tab as OS X indexes all of the available applications and services",
"keywords": ["adding","applications","click","command","control","double","downloads","finder","folder","install","keyboard","library","markdown","preferences","screenshot","service","services","shift","shortcut","shortcuts","sometimes","system","tools","using","access","accessing","actions","activate","adding","ahead","another","anyway","appear","applications","arrow","asking","associated","automatically","available","avoid","below","brettterpstra","browser","cause","change","checkboxes","choose","class","click","clicking","column","combination","compressed","conflicting","contents","contextual","convenient","dialog","different","directory","disable","disappear","doesn","doing","double","downloaded","either","enter","example","extension","extract","extracted","field","figcaption","figure","files","finding","first","folder","folders","going","having","height","highlighter","https","image","indexes","input","install","installed","installing","keyboard","language","ldquo","letter","loading","makes","manually","markdown","media","mentioned","menubar","menus","modifier","modifying","mostly","multiple","neither","noscript","object","options","original","panel","party","picture","places","plaintext","press","projects","punctuation","rdquo","remove","replaced","results","right","rouge","rsquo","safest","seeing","selected","selecting","selection","service","services","serviceshortcuts","shiny","shortcut","shown","simplest","single","source","srcset","strong","submenu","symbol","system","third","title","titled","tools","triangle","turns","uncompress","under","unzip","uploads","useful","username","using","usually","warning","website","width","window","within","workflow","yellow"]
},
{
"title": "How Tos",
"url": "/howtos/",
"tags": [],
"date": "page",
"ts": "",
"summary": "BrettTerpstra.com",
"keywords": ["install","service","system"]
},
{
"title": "Legal Info",
"url": "/legal/",
"tags": [],
"date": "page",
"ts": "",
"summary": "BrettTerpstra.com",
"keywords": ["policy","privacy"]
},
{
"title": "Macstock 2019 Links",
"url": "/macstock19/",
"tags": [],
"date": "page",
"ts": "",
"summary": "Bunch , Brett s (free) project for work contexts doing , Brett s project for leaving a breadcrumb trail when you head down rabbit holes ExtraInfo , Brett s project for wiki-fying everything on your Mac jTag , Brett s autotag system for Jekyll and other flat file blogging systems (with YAML headers) KeyBindings , Brett s extensive keybinding nerdery MarkdownEditing , Brett s package for Markdown Editing in Sublime Text Markdown Service Tools , Brett s collection of macOS Services (Quick Actions) for using Markdown anywhere Marked 2 , Brett s commercial app for previewing and proofreading Markdown nvALT , Brett s Markdown fork of Notational Velocity, soon to be replaced by nvUltra SearchLink , Brett s (favorite) project for quickly adding links to blog posts without leaving the editor URL Preview , Brett s tool for double-checking SearchLink results TextExpander Tools , how crazy can you get with TextExpander? Desktop Curtain , a way to single-task without quitting all of your apps Drafts , Mac and iOS app for quickly collecting thoughts Hook , a tool for connecting files, websites, and documents for research and productivity purposes iThoughts , Brett s favorite mind mapping app on Mac and iOS Keypoints , an app for tracking highlights and annotations in PDFs using Markdown documents Markdown , you know, that thing Terpstra keeps talking about Markdown Guide Meistertask , Kanban-style project management (and brainstorming) Trello , an alternative Kanban system MindMeister , online collaborative mind mapping Geistesblitz , mind map in the shower with your Apple Watch OmniFocus , Brett s preferred task manager Pinboard , antisocial bookmarking Spillo , macOS bookmark manager for Pinboard Retrobatch , node-based image automation TextExpander , Brett s favorite app for timesaving text expansions Timing , automated time tracking for Mac Workona , Brett s favorite Chrome plugin for tab management Workspaces , a commercial alternative to Bunch",
"keywords": ["actions","apple","brett","bunch","chrome","curtain","desktop","drafts","editing","extrainfo","geistesblitz","guide","jekyll","kanban","keybindings","keypoints","links","macstock","markdown","markdownediting","marked","meistertask","mindmeister","notational","omnifocus","party","pinboard","preview","projects","quick","retrobatch","searchlink","service","services","spillo","sublime","terpstra","textexpander","timing","tools","trello","velocity","watch","workflows","workona","workspaces","writing","adding","annotations","antisocial","anywhere","automated","automation","autotag","based","blogging","bookmark","bookmarking","brainstorming","breadcrumb","checking","collaborative","collecting","collection","commercial","connecting","contexts","crazy","documents","doing","double","editor","everything","expansions","extensive","favorite","files","fying","headers","highlights","holes","ithoughts","image","keeps","keybinding","leaving","links","macos","management","manager","mapping","mentioned","nerdery","nvalt","nvultra","online","package","plugin","posts","preferred","previewing","productivity","project","proofreading","quickly","quitting","rabbit","replaced","research","results","shower","single","style","system","systems","talking","thoughts","timesaving","tracking","trail","using","websites"]
},
{
"title": "All the downloads",
"url": "/otherstuff/all-the-downloads/",
"tags": [],
"date": "page",
"ts": "",
"summary": "I hit my first 100 downloadable projects. Some of them are defunct and very few of them have been updated in years, but Clippable to Evernote Service Equation Evaluation Service Markdown To Evernote Service Songza Lucky Link Service TinyMCE Button Skeleton TextExpander Snippets TaskPaper Scripts Instapaper Beyond for Safari 5 Antique Safari Reader style TUAW style for Safari Reader Antique Safari Reader Style (no background image) Antique 1.6 for Safari Reader TabLinks Safari Extension RedirectBuster Base64 Image Encoder TextMate Drag Command SyntaxUnhighlighter GReader Instapaper TaskPaper Date Scripts Auto-link Web Search HomeControl VoodooPad log navigation QuickTags to Markdown Blogsmith Bundle (defunct) nvALT Markdown Service Tools Random Lipsums for TextExpander Markdown for TextExpander iOS Date Conversion for TextMate Watcher Service Pinboard mirror with OpenMeta tagging AutoTag2 and GetTags-RPC Brett s MacVim Icons v1 Markdown List TextMate Macros Indents to Markdown Service Prefixr Service Killer DefaultKeyBinding.dict Convert Date - Natural Language Date Service md - HTML to Clipboard System Service Average Numbers in Selection Marked Bonus Pack QuickQuestion Markdown Spotlight Plugin MultiMarkdown Composer Themes Stained - Simplify Jacket mindmeister2md Clean up Markdown Lists Marked Watcher Scripts Open URLs Dropzone Destination Read2Text Clip to Day One Service Convert Inline Footnotes Service ScrivWatcher Gather nvALT 2.2 BETA Cheaters Create Dropbox Collection Sparkup System Service Proximity mod Marky Services Increment Templated Service OmniFocus Clipper Plugins for Chrome Localized GeekTool Weather and Forecast Slogger Google Lucky Link Services SearchLink Planter for LaunchBar/CLI Clip Text File System Service Open link in iTunes or MAS jQuery Fiddler beengone Down Under nvTagNavigator Brett s PopClip Extensions Link Bundler Service nvALT Tag Search for Alfred 2 Lopash for nvALT ItunesIcon Sidecar Cheaters for Alfred nvremind Markdown to MindMap Sidecar13 Planter Create Marked Index Total Numbers Service Bitlyize Service spl PopMaker GitHub TOC Service bookmark-cli Ubersicht Widgets Bytes Service vitag ReadingListCatcher Titler Service Rock Paper Rock Wallpapers Marked Selection Services Preview URL Action Extension Marked 2 Docset for",
"keywords": ["action","alfred","antique","autotag","average","beyond","bitlyize","blogsmith","bonus","brett","bundle","bundler","button","bytes","cheaters","chrome","clean","clipboard","clippable","clipper","collection","collections","command","composer","conversion","convert","create","defaultkeybinding","destination","dimpapers","docset","dropbox","dropzone","encoder","equation","evaluation","evernote","extension","extensions","extrainfo","fiddler","footnotes","forecast","greader","gather","geektool","gettags","github","google","homecontrol","icons","image","increment","indents","index","inline","instapaper","itunesicon","jacket","keyboard","killer","language","launchbar","lipsums","lists","localized","lopash","lucky","macvim","macros","maestro","markdown","marked","marky","mindmap","multimarkdown","natural","numbers","omnifocus","openmeta","paper","pinboard","planter","plugin","plugins","podtagger","popclip","popmaker","prefixr","preview","quickquestion","quicktags","random","reader","readinglistcatcher","redirectbuster","safari","scripts","scrivwatcher","search","searchlink","selection","service","services","share","sidecar","sideshow","simplify","skeleton","slogger","snippets","songza","sparkup","spotlight","stained","style","syntaxunhighlighter","system","tablinks","taskpaper","templated","terpstra","textexpander","textmate","themes","tinymce","titler","tools","ubersicht","under","voodoopad","wallpapers","watcher","weather","widgets","background","beengone","bookmark","defunct","downloadable","first","itunes","image","jquery","macros","mindmeister","mirror","navigation","nvalt","nvtagnavigator","nvremind","project","projects","since","stuff","style","tagging","updated","vitag","years"]
},
{
"title": "About Brett",
"url": "/contact/",
"tags": [],
"date": "page",
"ts": "",
"summary": "Email Brett , Find him on Mastodon , or download his VCard . Subscribe to the BrettTerpstra.com newsletter for (occasional) updates, and use the RSS feed to get the latest posts. If you re looking for my resume, the current version can be found at brettterpstra.info , which is generated by Marked and built from a Markdown text version . I work as a technical content writer and software developer for the Developer Relations team at Oracle . In my free time, I m also a coder, podcaster, author, and web developer. I develop and maintain a Markdown previewer for Mac called Marked 2 and an automation tool called Bunch . I also have over 100 open source projects, ranging from one-off utilities to full fledged command line apps. You can see everything I ve worked on/am working on on the projects page . I ve co-authored some macOS books with David Sparks for the iBookstore and Vimeo. I m currently working on a new app , podcasts, and maybe another book (it could happen). I ve been a speaker at Macworld, CMD-D, ALTWWDC, and a regular at Macstock. I ve written for MacStories, Lifehacker, TUAW, and Macworld. You can also listen in weekly as I chat with a broad range of guests on my podcast, Systematic , as well as my more eccentric (and often sacreligious) conversations with Christina Warren on Overtired . I can be found as ttscoff just about everywhere, including Twitter , Mastodon , and Github . See the icons above for everywhere else.",
"keywords": ["altwwdc","brett","brettterpstra","bunch","christina","david","developer","email","github","lifehacker","macstories","macstock","macworld","markdown","marked","mastodon","oracle","overtired","relations","sparks","subscribe","systematic","twitter","vcard","vimeo","warren","above","another","author","authored","automation","books","brettterpstra","broad","built","called","coder","command","content","conversations","develop","developer","download","eccentric","everything","everywhere","fledged","found","generated","guests","happen","ibookstore","icons","including","latest","listen","looking","macos","maintain","maybe","newsletter","occasional","often","podcast","podcaster","podcasts","posts","previewer","projects","range","ranging","regular","resume","sacreligious","software","source","speaker","technical","ttscoff","updates","utilities","version","weekly","worked","working","writer","written"]
},
{
"title": "Stuff Brett Uses",
"url": "/stuff-i-use/",
"tags": [],
"date": "page",
"ts": "",
"summary": "This page contains affiliate links to things I use frequently, if not daily. It s not an attempt to trick you into buying things to make me money. I just really love this stuff, and these companies happen to offer me a little payout when I get other people to also love this stuff. Setapp I have an app (Marked) on Setapp, but I also use about 30 apps on the service right now. It s well worth the $10/mo, and using the Setapp version of apps you already own also offers recurring support to your favorite developers. Tower Tower is the best Git GUI app on the market. If you use Git version control for anything (including working with GitHub Pull Requests), do yourself a favor and get Tower. Sanebox My email sanity wouldn t work without Sanebox. It helps me achieve Inbox Zero every day. I wouldn t want to have an email address without it. Hookmark Hookmark ties all of my apps together, and I ve written about it before. If you ve ever wished you could easily connect a project s notes, files, web pages, and tasks together, Hook is the answer. MindMeister I do my local mind mapping using iThoughtsX on Setapp, but when I want to share a map or work collaboratively, there is no better solution than MindMeister. LOVE IT. Fathom Analytics Because I value my readers privacy, I stopped using Google Analytics a long time ago. To get just the info I need for advertisers and my own design decisions, I use Fathom, which doesn t track any personal information. If you run a website and are even a little turned off by Google s privacy practices, check it out. CleanMyMac3 This is not the malware you re thinking of. It s a solid, reputable, and highly effective app for cleaning up your hard drive, performing system maintenance, and keeping your Mac in tip top shape. Backblaze I ve lost data before, and I make every effort never to let that happen again. Backblaze is my favorite solution for offsite backups. It s inexpensive, fast, saves version history, and it s super easy to recover your files one at a time or en masse. I used to use their B2 storage with Arq , but the Backblaze app has gotten so good (light on CPU, wifi network exclusions, and good network throttling) and the recovery is so easy, there s no reason not to just use it.",
"keywords": ["analytics","backblaze","because","cleanmymac","fathom","github","google","hookmark","inbox","marked","mindmeister","requests","sanebox","setapp","tower","achieve","address","advertisers","affiliate","again","answer","backups","before","buying","check","cleaning","collaboratively","companies","connect","contains","control","daily","decisions","design","developers","doesn","drive","easily","effective","effort","email","exclusions","favor","favorite","files","gotten","happen","helps","highly","history","ithoughtsx","including","inexpensive","information","keeping","light","links","little","local","maintenance","malware","mapping","market","masse","money","network","notes","offer","offers","offsite","pages","payout","people","performing","personal","practices","privacy","project","readers","recover","recovery","recurring","reputable","right","sanity","saves","service","shape","share","solid","solution","stopped","storage","stuff","super","support","system","tasks","thinking","throttling","together","track","trick","turned","using","value","version","website","wished","working","worth","wouldn","written"]
},
{
"title": "Donate",
"url": "/donate/",
"tags": [],
"date": "page",
"ts": "",
"summary": "Thanks for your interest in donating. 90% of the projects on this site are labors of love, and your donation encourages continued development and creation. If you re donating because of a specific project, please note it in the donation form. In some cases (such as nvALT), the donations are split with my co-conspirators, in other cases it helps me determine what projects should get the most attention. If you d like to offer continued support, please consider a monthly subscription ! Click to go to PayPal! Or me on GitHub!",
"keywords": ["click","github","paypal","thanks","again","because","consider","conspirators","continued","creation","development","donating","donation","donations","encourages","helps","interest","labors","monthly","nvalt","offer","project","projects","specific","split","subscription","support"]
},
{
"title": "Thank you",
"url": "/thank-you/",
"tags": [],
"date": "page",
"ts": "",
"summary": "Your support means a lot to me, thanks for signing up!",
"keywords": ["brett","signing","support","thanks"]
},
{
"title": "Readitfor.me Systematic Giveaway!",
"url": "/readitforme/",
"tags": [],
"date": "page",
"ts": "",
"summary": "Add your name and email for a chance to win a free year of Readitfor.me , a service that summarizes business books and reads them to you. 10 winners will be drawn to receive annual memberships. Giveaway runs until Dec 1st, 2017. Sorry, this giveaway has ended.",
"keywords": ["giveaway","listeners","readitfor","sorry","systematic","welcome","annual","books","business","chance","email","ended","giveaway","memberships","reads","receive","service","summarizes","winners"]
},
{
"title": "nvALT (Ukranian translation)",
"url": "/nvalt-ukranian-translation/",
"tags": [],
"date": "page",
"ts": "",
"summary": "Нова бета випущений 6/8/13! Дивіться пост для більш докладної інформації . nvALT 2 вилка оригінальної позначеннях швидкість з деякими додатковими можливостями і модифікацій інтерфейсу, у тому числі функціональних MultiMarkdown. Вона була розроблена за еластичні нитки (David Холтер) і Бретт Terpstra , і доступні безкоштовно (пожертвування приймаються). Позначення швидкість спосіб, щоб робити нотатки швидко і легко, використовуючи тільки клавіатуру. Ви натискаєте ярлик, щоб відкрити вікно і просто почати друкувати. Він почне шукати існуючі замітки, фільтрація їх при введенні. Ви можете використовувати ⌘-J і ⌘-K для переміщення по списку. Введіть вибирає і починає редагування. Якщо ви створюєте нову замітку, ви просто введіть унікальну назву та натисніть клавішу Enter, щоб перемістити курсор у порожній області редагування. Ознайомтеся з описом на notational.net для більш красномовною резюме. Хочете великий підручник з з використанням nvALT? См Майкла Шехтера в nvALT 101 . Варіант для горизонтального розташування з багаторядковими превью в списку заміток Слова між [[подвійні квадратні дужки]] буде посилання на інші замітки Теги синхронізуються з Dropbox і обшукують уваги, за допомогою OpenMeta Теги авто-завершення при введенні в поле Метка входу TaskPaper-сумісний закреслення форматування за допомогою done тег Повністю звичайного тексту на основі форматування автоматичний список-куля Зверніть увагу, в назвах всередині подвійних дужок (опціонально) авто-завершення Команда Показати в Finder для виявлення вибраний запис-файли на диску Підсвічування пошукових термінів може бути відключена Перетягнувши роздільник до початку або зліва від вікна буде приховувати поле пошуку і більше http://notational.net/releasenotes/release2/ Відкрити в зовнішньому текстовому редакторі NEW: Auto-спаровування і вибір упаковки для дужок і лапок ([], (), , ) NEW: Pin записка до попереднього перегляду при редагуванні інші ноти NEW: Shortcut (CMD-Shift-L) для вставки [[Посилання]] NEW: 3 краще підтримувати MultiMarkdown (якщо встановлений локально) NEW: справа наліво підтримки NEW: підтримка зовнішнього редактора покращився NEW: Simplenote Tag синхронізації 1 Текстиль та (Multi) уцінки підтримка з вікна попереднього перегляду (натисніть і утримуйте управління для перегляду тимчасово) HTML вихідний код у вікні попереднього перегляду для швидкого копіювання Вкладка / вставити в блогах і т.д. Унікальні конструктивні зміни інтерфейсу",
"keywords": ["applications","chrome","david","divinedominion","dropbox","english","enter","finder","firefox","french","github","harchenko","instapaper","javascript","library","markdown","menubar","multi","multimarkdown","openmeta","peggd","powerpc","safari","schneirov","screenshot","serbian","shift","shortcut","simplenote","support","taskpaper","terpstra","tiger","translations","ukranian","velocity","abyss","bettermess","bookmarklet","brettterpstra","chrome","class","contact","custom","darrylhthomas","designheresy","elasticthreads","extensions","files","fnref","github","highlighter","https","iphostmonitor","issues","language","ldquo","mypopescu","notational","notes","nvalt","nvalt","plaintext","primer","prise","project","projects","public","rdquo","release","releasenotes","rouge","rsquo","safari","science","scrod","strong","support","tagsync","template","tiger","title","translation","ttscoff","tumblr","uploads","velocity","webhostinggeeks"]
},
{
"title": "Subscribe to the Newsletter",
"url": "/subscribe/",
"tags": [],
"date": "page",
"ts": "",
"summary": "Want to stay up to date on the latest from BrettTerpstra.com? Sign up to get the first dibs on new scripts, new apps, product discounts, and answers to subscriber questions. This list is mine. I will never sell it. I will never let anyone else use it. You will only ever hear from me. Marketing permission: I give my consent to BrettTerpstra.com to be in touch with me via email using the information I have provided in this form for the purpose of news, updates and marketing.",
"keywords": ["brettterpstra","email","marketing","answers","anyone","consent","discounts","email","first","information","latest","marketing","permission","product","questions","scripts","subscriber","touch","updates","using"]
},
{
"title": "BrettTerpstra.com Sponsorship",
"url": "/sponsorship/",
"tags": [],
"date": "page",
"ts": "",
"summary": "BrettTerpstra.com is read by thousands (over 50k/week) of professionals and creatives who embrace new technologies and are invested in developing efficient working environments. If you have an app, product or service that helps people work smarter, my readers want to hear from you. I only accept sponsorships from advertisers I can personally endorse. Reader trust is very important to me, and I would rather pass on an advertiser than pitch my readers a product I wouldn t use. As a result, your sponsorship of this site gets backed by a decade of the trust I ve built with my readers. A sponsorship is exclusive for one week. A sponsored post goes up on Thursday, with content written by you and a personal endorsement from me, as well as a large image. For the week the spot runs, there s also a text link on every page (and a text banner on some of the highest-traffic pages) with your tagline and tracking link. Your post remains in the archive for the lifetime of this site. I offer discounts for purchases of three or more spots within a 12-month period, as well as a discount for indie devs and small shops. Qualification is at my discretion, but feel free to ask. Your sponsorship helps me keep writing, developing, and sharing tools here. Contact me directly for pricing and scheduling.",
"keywords": ["brettterpstra","contact","qualification","reader","thursday","accept","advertiser","advertisers","archive","backed","banner","built","content","creatives","decade","developing","directly","discount","discounts","efficient","embrace","endorse","endorsement","environments","exclusive","helps","highest","image","important","indie","invested","lifetime","offer","pages","people","personal","personally","pitch","pricing","product","professionals","purchases","rather","readers","remains","scheduling","service","sharing","shops","small","smarter","sponsored","sponsorship","sponsorships","spots","tagline","technologies","thousands","tools","tracking","traffic","within","working","wouldn","writing","written"]
},
{
"title": "Message sent!",
"url": "/contact-thanks/",
"tags": [],
"date": "page",
"ts": "",
"summary": "Your email has been sent, I try to respond within 24 hours whenever possible.",
"keywords": ["brett","thanks","email","hours","possible","respond","whenever","within"]
},
{
"title": "thank you for donating",
"url": "/thank-you-for-donating/",
"tags": [],
"date": "page",
"ts": "",
"summary": "BrettTerpstra.com",
"keywords": ["support"]
},
{
"title": "How to support Brett",
"url": "/support/",
"tags": [],
"date": "page",
"ts": "",
"summary": "Sign up to give a small amount every month to keep Brett well-nourished while he makes you more great stuff. Your support is greatly appreciated! I keep a special mailing list for paying members. For the time being, this is manually curated 1 , so please let me know when you ve subscribed and I ll make sure you re included! BrettTerpstra.com Subscription ($3/mo) BrettTerpstra.com Gold Subscription ($6/mo) BrettTerpstra.com Platinum Super Plus VIP ($12/mo) Choose an option I like you : $3.00 USD - monthly I love you : $6.00 USD - monthly I need you : $9.00 USD - monthly You complete me : $12.00 USD - monthly It's ok, everyone hates subscriptions Or me on GitHub! PayPal doesn t make it easy to pull a mailing list, and I can t easily integrate Memberful with my newsletter software. So dropping me a quick email is the safest way to ensure you get the most out of your membership!",
"keywords": ["brett","brettterpstra","bronze","choose","click","github","golden","memberful","paypal","platinum","subscription","super","yearly","years","account","amount","appreciated","billing","cancel","contribution","curated","doesn","donate","donation","dropping","easily","email","everyone","great","greatly","hates","included","integrate","mailing","makes","manually","members","membership","monthly","newsletter","nourished","options","paying","quick","rather","recurring","safest","small","software","special","stuff","subscribed","subscriptions","support","using","while"]
},
{
"title": "Joining the BrettTerpstra.com giveaways",
"url": "/giveaways/joining/",
"tags": [],
"date": "page",
"ts": "",
"summary": "Hey, do you have an app or service you d like to offer free copies of/subscriptions to to BrettTerpstra.com readers? That s about 50k people who would love to hear about it. The average giveaway on BrettTerpstra.com gets 2-300 entries, and at the end of a giveaway I can provide a discount coupon to encourage entrants who didn t win to go ahead and make a purchase. I have final editorial say on whether I m going to promote your app. I m open to all kinds of apps and services, and if I believe you re offering a high quality option, there s no limitation on what type of app/service or what platform it s available on. If I don t think your giveaway will garner enough interest, I may pass, but that s been a rarity. If I do pass on your app/service for a giveaway, I ll still link it from a Web Excursions post, which drives a fair amount of traffic on its own. You ll get an announcement post, which includes a blurb from me about why people should be interested, as well as a 1-paragraph blurb from you. I can pull this from your website, or you can provide your own statement. During the giveaway there will be an announcement email sent to my mailing lists, a followup still time to enter email the Thursday before the giveaway ends, as well as publicity on X (Twitter), Mastodon, Threads, and Facebook. At the end of the giveaway there s an announcement of the winners, which can also include any discount or incentive you want to offer to any dissapointed entrants. If you would like to offer any extra verbiage, just let me know. I maintain editorial control, but I m open to anything that helps you promote/sell your product. 1-10 licenses or 1-year subscriptions (lifetime subscriptions are amazing, but you re more likely to get a paying customer out of the deal if it s only for a year). Most giveaways are for 2-3 licenses, which gets a fair response. If there are more licenses, people are more likely to believe they have a good chance of winning, so more enter to win. But even 1 license/subscription is enough to generate interest, especially if your price point is high. Your choice of fulfillment options. I can send out App Store codes, license codes, or coupons directly to winners, or I can contact you with the full name and email address of the winners, and leave license generation up to you. Just let me know which option you want, and if providing codes, be sure to time them so that they don t expire before your giveaway is scheduled. Giveaway are",
"keywords": ["brettterpstra","contact","email","excursions","facebook","feedback","giveaway","mastodon","store","threads","thursday","twitter","address","ahead","amazing","amount","announcement","audit","available","average","awareness","before","believe","blurb","booked","chance","choice","closer","codes","contact","control","copies","coupon","coupons","customer","department","direct","directly","discount","dissapointed","drives","editorial","email","encourage","encouraged","enough","enter","entrants","entries","especially","everyone","extra","feedback","followup","fulfillment","garner","generation","giveaway","giveaways","gives","going","helps","hopefully","impact","important","incentive","included","includes","interest","interested","involved","kinds","leave","license","licenses","lifetime","likely","limitation","lists","mailing","maintain","marketing","needed","notifications","offer","offering","options","paragraph","paying","people","platform","point","price","product","promote","providing","publicity","quality","rarity","readers","response","sales","scheduled","search","service","services","spark","statement","subscription","subscriptions","think","timing","traffic","trail","verbiage","website","winner","winners","winning"]
},
{
"title": "Privacy Policy",
"url": "/legal/privacy/",
"tags": [],
"date": "page",
"ts": "",
"summary": "BrettTerpstra.com respects your privacy to the fullest extent possible. Analytics are recorded by Fathom , which stores no personally identifiable information about your visit. See their data policy and privacy policy for further information. I keep track of total visit numbers to use when setting ad prices, and referrer traffic for my own information. I do not need to know who you are or where else you ve been, and neither do my website logs or site analytics. BrettTerpstra.com does not use Facebook, Twitter, or other social buttons that track your movement and interaction. Links to Twitter are one-way, and Amazon links are internally generated without any connection to Amazon. Advertising on BrettTerpstra.com is provided by Carbon, who does not track across websites and collects minimal, anonymous statistics. I have carefully reviewed their take on data collection and their privacy policy . This site uses cookies only to store user preferences including Dark Mode, TLDR Mode, and SuperReadable Mode. No other user details are stored or read.",
"keywords": ["advertising","amazon","analytics","brettterpstra","carbon","facebook","fathom","links","superreadable","twitter","across","analytics","anonymous","buttons","carefully","collection","collects","cookies","details","fullest","generated","identifiable","including","information","interaction","internally","links","minimal","movement","neither","numbers","personally","policy","possible","preferences","prices","privacy","private","recorded","referrer","respects","reviewed","setting","social","statistics","store","stored","stores","track","traffic","visit","website","websites","where"]
},
{
"title": null,
"url": "/include/sponsor/",
"tags": [],
"date": "page",
"ts": "",
"summary": "BrettTerpstra.com",
"keywords": ["sponsortext"]
},
{
"title": "Upcoming Giveaways",
"url": "/giveaways/upcoming/",
"tags": [],
"date": "page",
"ts": "",
"summary": "Here are the giveaways currently scheduled (subject to change). Subscribe to the newsletter or RSS feed to be notified when your dream app is up for a giveaway!",
"keywords": ["acorn","apptamer","archive","audio","bbedit","backblaze","bartender","black","cleanshot","converter","curio","devonthink","default","defaultfolderx","drawing","dropzone","eaglefiler","fastscripts","flexibits","folder","hazel","hijack","hookmark","houdahgeo","houdahspot","kaleidoscope","keyboard","macupdater","maestro","marked","marsedit","menus","morpho","noteplan","obsidian","omnifocus","omnigraffle","omnioutliner","omniplan","photos","popclip","premium","retrobatch","screens","scrivener","soulver","soundsource","spamsieve","subscribe","tableflip","tamer","taskpaper","textbuddy","textexpander","timing","tower","unite","wordcounter","workbench","acorn","aptonic","archive","audiohijack","backblaze","barebones","bbedit","bjango","blackink","brett","brettterpstra","bzgapps","change","cleanshot","command","corecode","culturedcode","curio","devontechnologies","devonthink","dream","eaglefiler","edovia","fastscripts","flexibits","flyingmeat","giveaway","giveaways","hogbaysoftware","hookproductivity","houdah","houdahgeo","houdahspot","https","istat","ithoughtsx","index","istatmenus","ithoughts","kaleidoscope","keepit","keyboardmaestro","literatureandlatte","macbartender","macupdater","marked","marsedit","newsletter","noodlesoft","noteplan","notified","obsidian","omnifocus","omnigraffle","omnigroup","omnioutliner","omniplan","overview","photosworkbench","popclip","pricing","products","redsweater","reinventedsoftware","retina","retrobatch","rogueamoeba","scheduled","screens","scrivener","soulver","soundsource","spamsieve","stclairsoft","studio","subscribe","tableflipapp","taskpaper","terpstra","textbuddy","textexpander","thinktapwork","timingapp","toketaware","tower","trpstra","unite","wordcounterapp","zengobi","zettelkasten"]
},
{
"title": "60 Mac Tips: Vol 2",
"url": "/projects/60-tips-2/",
"tags": ["commercial","macos","productivity","screencast","tutorial"],
"date": "project",
"ts": "",
"summary": "The second volume of my series of Mac Tips published with David Sparks. Check it out at 60Tips.com .",
"keywords": ["check","david","sparks","published","second","series","volume"]
},
{
"title": "60 Mac Tips: Vol 1",
"url": "/projects/60-tips/",
"tags": ["commercial","macos","productivity","screencast","tutorial"],
"date": "project",
"ts": "",
"summary": "The first volume of my series of Mac Tips published with David Sparks. Check it out at 60Tips.com .",
"keywords": ["check","david","sparks","first","published","series","volume"]
},
{
"title": "Amazon Shop",
"url": "/projects/amazon/",
"tags": ["commercial","shopping"],
"date": "project",
"ts": "",
"summary": "An Amazon shop for things Brett reviews on the blog or podcasts. Or just stuff he thinks is awesome.",
"keywords": ["amazon","brett","awesome","podcasts","reviews","stuff","thinks"]
},
{
"title": "Answered",
"url": "/projects/answered/",
"tags": ["bookmarklet","markdown"],
"date": "project",
"ts": "",
"summary": "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 d have a mess of links. The solution for me is to keep nvALT notes in Markdown with the solution (see QuickQuestion ). Answered will work on any StackExchange page. You 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. Hold down shift when clicking to combine multiple answers, and use Command-Return to submit them for Markdown conversion. If you re using the overlay results, you ll also see options for sending to Marked or nvALT. I 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. Just drag the link below to your bookmarks bar. Answered works in Chrome, Safari, and Firefox.",
"keywords": ["answered","chrome","command","firefox","hovering","install","markdown","marked","quickquestion","return","safari","stackexchange","stackoverflow","using","action","again","allows","answer","answers","before","below","bookmarked","bookmarks","browser","click","clicking","coding","comments","conversion","converted","decide","especially","found","including","inline","later","links","loaded","multiple","myself","notes","nvalt","options","orange","output","overlay","problem","questions","results","returned","saving","searching","sending","shift","shows","single","solution","source","straight","using","video","where","window","works"]
},
{
"title": "AutoTag 2",
"url": "/projects/autotag-2/",
"tags": ["blogging","extension","textmate","wordpress"],
"date": "project",
"ts": "",
"summary": "If you use TextMate to blog on a WordPress site , you ll want to see this. There are two parts to this: a WordPress plugin that adds an XML-RPC call for getting all of the tags in use on the blog, and a small TextMate bundle for making good use of it. The TextMate bundle cribs off of my previous AutoTag project, and borrows most of the remote functionality from the original TextMate blogging bundle. Why reinvent the wheel? I m bundling both together in the download, so if you want to use the WordPress plugin to port the functionality elsewhere (say, Vim?), you can just pull out the parts you need. What the bundle does (short version) is find the most appropriate tags for your content based on tags you ve already used before. This helps you easily keep your tag collection trim and useful. No disparate tags because of inconsistent capitalization, plurals or conjugation. Things that are related stay related. This can be especially difficult blogging from TextMate because you can t quickly see all tags the way you can from the WordPress editor. This solves the problem. Upload the gettags-rpc folder from the zip download to your folder on your server. Open your admin page and go to the Plugins panel. Activate the GetTags-RPC plugin in the plugin list. If the plugin activates without error, you should be ready to go. It s a very simple plugin without a lot of error checking, so let me know if you have any trouble with it. To install AutoTag in TextMate, double click on the bundle in the download zip file. It should open TextMate, pop up the Bundle Editor and show you the installed bundle and its commands. Done. Assuming you have AutoTag installed in TextMate and the GetTags-RPC plugin installed in WordPress, you re ready to go. Well, you ll need to have your blog set up (Bundles Blogging Setup Blogs) in TextMate, but we ll assume you ve done that by now. The AutoTag commands can be triggered in two ways. First, you can just put your cursor one space after the colon in the Keywords: line of the template headers. If you don t have that line in your template, you can just type Keywords: on a line before the end of the headers, or add it permanently by editing the template in the Bundle Editor. Hit tab from there and you ll get a menu of the three commands in the bundle. You can trigger that from the same point even if you already have tags on the line it will add appropriate commas automatically. Second, you can use Control-Option-T to get",
"keywords": ["activate","again","assuming","autotag","autotagging","blogging","blogs","bundle","bundles","changelog","commands","common","compares","control","donate","download","editor","finish","first","gettags","github","install","keywords","measures","plugins","porter","published","second","setup","standard","stemming","strips","textmate","updated","upload","using","wordpress","words","activates","adding","adjective","admin","adverb","algorithm","although","anywhere","appreciated","array","assume","automatically","available","based","because","before","blank","blogging","borrows","build","bundle","bundling","capitalization","casing","challenge","check","checking","click","collection","colon","combination","command","commands","commas","common","compare","conjugation","content","creates","cribs","curious","cursor","dialog","difficult","disparate","doesn","double","download","easily","editing","editor","elsewhere","entire","error","especially","eventually","favorite","figure","finding","folder","forms","frequency","functionality","gettags","getting","gives","going","greatly","headers","helps","ignores","inconsistent","install","installed","keeping","makes","making","manually","match","matches","original","panel","parts","permanently","plugin","plurals","point","ported","primary","problem","processing","project","punctuation","quickly","ranked","ready","reinvent","related","relevance","remote","resulting","results","return","returned","right","satisfactory","selection","server","short","similar","simple","simply","small","solves","sorts","space","stemmed","stems","support","template","together","trigger","triggered","trouble","useful","version","wheel","words","worth","write","writers","written"]
},
{
"title": "Brett's PopClip Extensions",
"url": "/projects/bretts-popclip-extensions/",
"tags": ["extension"],
"date": "project",
"ts": "",
"summary": "This is a collection of my own extensions for the Mac app PopClip . It gives you a popup when you select text, a la iOS, and lets you perform various operations on/with it. Many of my extensions are Markdown-related, but there are a few other goodies in there, too. To install from the download package, just unzip and double-click the extensions you want to use. To install from the source code, just make sure the extension of a folder is and double click it in Finder. If an extension is already installed, double clicking the downloaded one will just update the existing extension. There s no need to uninstall before moving on to the latest fun. Current release version: 1.45.2 ( source code ) Many of these extensions have alternate behaviors when holding modifier keys. Recent versions of PopClip override these variations and provide specific actions when holding modifiers, such as Shift to copy result and Option to display the result in the bar. This means that the variations in the plugins no longer function. A better system may be available in the future, but for now, to restore the modifier key functionality, you need to disable the global interpretation of them. Open Terminal and run this command: The extensions currently included in the bundle. Some are available elsewhere as well, but this collection will always be the most up-to-date versions. When adding quote levels, multiple line breaks between lines creates separate block quotes (by design). If there s a single blank line between to paragraphs, they ll be joined together as paragraphs within a blockquote. More than one starts a new quote. PopClip extension to turn lines of text into Markdown bullet items. Indentation is handled as nested lists and existing markers are overwritten (numbered list becomes bullet list). Holding Option (⌥) while clicking the button for the extension in the PopClip bar will create/update a numbered list instead. When the list is already a numbered list, it will be re-numbered to fix any gaps or out-of-order numbering within nest levels. When you install this extension, you ll get an options page where you can select the type of bullet you prefer for unordered lists. This can be accessed again later by clicking the pencil button at the bottom of the list, then clicking the gear button next to the BulletList extension. PopClip extension to show a popup preview for each URL in selected text. Used for confirming the output of scripts like SearchLink",
"keywords": ["abramowitz","added","allow","allows","analytics","append","apply","arrays","because","blockquote","brett's","brettspopclipextensions","bullet","bulletlist","center","change","changelog","checkurls","clear","click","clicking","command","comment","control","convert","copycleanlinks","copyplus","copyplus","copyurls","copyurls","credits","criticmarkup","decimal","default","defineabbr","deletion","delimiter","detect","detects","disablealternateactions","donate","download","duplicate","extensions","editor","example","extension","extensions","finder","fixpoorlyobscuredemails","fixes","fully","gather","github","google","handle","hardwrap","hello","highlight","holding","improved","increment","ignore","including","increment","indentation","insertion","installation","leaves","linkcleaner","links","markdown","markdownify","mindmanager","mindmeister","mindnode","mindmap","moore","numbered","numberedlist","openurls","openurls","optionally","originally","outdent","output","paypal","pilot","placeholders","poortext","popclip","popclipicon","previewurl","published","python","quick","readme","readmes","recent","remove","removed","replace","searchlink","separator","shift","skype","skypecall","slash","specify","sponsor","string","strips","support","swift","tuvbv'","takes","templated","terminal","think","twitterify","urlencode","updated","using","webmd","webmarkdown","wrappers","yields","absolute","accessed","action","actions","adding","address","addresses","again","align","allow","allowed","alternate","alternately","appear","append","appreciated","array","arrays","aside","available","avoiding","backticks","based","basic","because","becomes","before","beginning","behaviors","between","blank","block","blockquote","blockquotes","border","bottom","break","breaking","breaks","bretts","brettterpstra","broke","broken","brother","browser","build","bullet","bulletlist","bullets","bundle","button","capability","cause","causing","center","change","changed","changelog","characters","checkurls","class","clean","clear","click","clicking","clipboard","close","collection","column","command","comment","comments","commits"]
},
{
"title": "Bunch",
"url": "/projects/bunch/",
"tags": ["macos","utilities"],
"date": "project",
"ts": "",
"summary": "All of the Bunch downloads and documentation have moved to a new site: visit bunchapp.co !",
"keywords": ["bunch","bunchapp","downloads","moved","visit"]
},
{
"title": "Bytes",
"url": "/projects/bytes/",
"tags": ["automator","blogging","productivity","service","utilities"],
"date": "project",
"ts": "",
"summary": "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 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 s (24mb in kb) in Kilobytes). The file had a size of 25165824, which converted to 24.00MB (that s 24576.00KB in Kilobytes). I don t know how many people will ever have a use for this, but I liked the regex enough that I figured I should share it 1 . 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 More info You know, for all the things I do on the side. Or me on GitHub! 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 (it s 88.82 petabytes)",
"keywords": ["bytes","changelog","convert","donate","download","example","first","github","human","kilobytes","piped","published","random","stdin","searchlink","service","system","updated","usage","yottabytes","argument","arguments","becomes","below","between","block","bytes","capacity","click","command","containing","conversion","converted","curious","double","enough","executable","figured","formats","former","genesis","human","input","install","larger","liked","machine","making","memory","multiplier","parentheses","people","petabytes","pipes","prepping","quadrillion","ranging","readable","recongized","recording","regex","representation","representing","return","right","script","share","sizes","specify","surrounded","syntax","syntaxes","translated","unzip","where","works"]
},
{
"title": "Cheaters",
"url": "/projects/cheaters/",
"tags": ["automator","utilities"],
"date": "project",
"ts": "",
"summary": "First and foremost, this is a total ripoff of an idea by Gabe Weatherhead over at Macdrifter . I just expanded on the idea a little bit. Cheaters is a collection of HTML-based cheat sheets meant for display in an Automator-based popup browser which can float on your screen while you work in other apps ( demo the web version ). Most of the time I create TextExpander snippets for commonly-forgotten formats, but having an overall reference can be handy. I ve included a collection of hastily made sheets as examples for you to create your own. Sheets are easy to create with minimal markup and are, for the most part, automatically styled and made to fit in with Cheaters overall aesthetic. Be sure to check out the built-in Markdown conversion for easy cheatsheet creation, and check here for info on the fast switcher, deep linking and a JavaScript API. For Cheaters to work, you need to be serving the files on a local server. This can be done with something like MAMP, or using the built in Apache server in macOS. If you don t know how to work with either of these, the best bet might be to run the script found in the folder. That will launch Python s simpleHTTPServer in that directory with an address of (which you can then plug into Fluid or Automator). You can use the instructions below if you re a cheapskate, but for $5 you can use Fluid and create a menu bar app that s much more full-featured and usable than the Automator action. Seriously. Do it. Under images/fluid/CheatersIcon.png you can find a nice Icon to use for Cheaters. Download the Zip file above and put it anywhere on your computer (I keep mine in Dropbox so that my cheat sheets are available on other machines). Open Automator in your Applications folder. Create a new project with the type Application. You can also use a Workflow, which can be launched easily from the command line, but I m using an Application for now because it s easiest to launch with a hotkey program. Drag two actions from the library on the left into the blank area on the right: Get Specified URLs and Website Popup, in that order. You can find them quickly by selecting Library on the left and using the filter to locate them. Double click the default URL in the Get Specified URLs action and set it to the file path to your Cheaters folder. This will be in the format . Set a size in the Website Popup action. I m using a custom size of 700x800, which works well on my setup with two large monitors. The popup is",
"keywords": ["'git'","'jquery'","adding","advanced","alfred","allow","animation","apache","applescript","applications","apptivator","automator","available","brett's","changelog","cheat","cheaters","cheatersicon","command","create","custom","customizable","donate","double","download","dropbox","dropping","duckduckgo","escape","first","fluid","github","google","header","image","images","including","javascript","keyboard","launchbar","library","macdrifter","maestro","markdown","metadata","narrow","overflow","paypal","permalink","popup","published","python","right","search","selectors","seriously","sheets","shift","specifies","sponsor","stack","support","tuvbv'","textexpander","under","updated","users","using","weatherhead","website","whitelist","workflow","above","action","actions","active","activeitem","added","adding","address","advanced","aesthetic","align","allowing","allows","alter","alters","another","anywhere","appearance","applied","archive","aside","automatically","automator","available","avoid","based","because","becomes","before","behavior","below","between","blank","block","border","bottom","brettterpstra","bring","brings","browser","browsing","build","building","built","button","captions","center","change","changelog","changes","cheapskate","cheat","cheaters","cheating","cheatsheet","cheatsheets","check","choices","class","click","clipped","collection","colors","column","comes","comma","command","commands","comment","commonly","complex","computer","configurable","contact","container","containing","contrast","control","conversion","convert","correlate","couple","create","created","creation","credits","critical","cssanim","cssanimation","custom","customizable","default","description","design","detailed","development","difference","difficult","digit","directly","directory","dismiss","display","dlbox","document","documents","donate","donating","download","dropdown","duckduckgo","dynamically","easier","easiest","easily","editing","either","elements","ending","enough","example","examples","expanded","externally","extra","faster","fathom","feature"]
},
{
"title": "CodeReminder",
"url": "/projects/codereminder/",
"tags": ["productivity"],
"date": "project",
"ts": "",
"summary": "CodeReminder is a CLI to add a Reminders.app reminder and/or OmniFocus task so you don t forget about that repo you cloned to play with later. Both and options can be provided, if neither is given it will default to the option (see Configuration). If an existing path is provided at the end of the command, it will be used, otherwise, cremind will default to the current working directory. The title of the task or reminder will always be the basename of the path, and the full path will be the first line of the attached note. If an additional (-n NOTE ) flag is provided, NOTE will be appended. The name of OmniFocus project to add tasks to. Project can be nested in folders. If a project with the specified name doesn t exist, it will be created in the root of the OmniFocus document. The name of the Reminders.app list to use. If it doesn t exist, it will be created. If neither -r or -t options are provided, default to this type. The value should be a quoted string, either reminder or task .",
"keywords": ["coderemind","codereminder","configuration","default","download","github","installation","omnifocus","project","reminders","support","usage","appended","attached","basename","cloned","command","configuration","created","cremind","default","development","directory","document","doesn","either","executable","exist","first","folders","forget","forks","later","location","neither","nested","options","project","quoted","reminder","reminders","script","source","string","tasks","title","value","working"]
},
{
"title": "CoughButton",
"url": "/projects/coughbutton/",
"tags": ["podcasting","utilities","webapps"],
"date": "project",
"ts": "",
"summary": "CoughButton used to press opt-F5 on your Mac to toggle MuteMyMic , but toggling without being able to poll for state is just too unreliable, plus it was really only Skype I needed to mute. CoughButton uses jQuery and the Hammer.js jQuery plugin to provide a tap-and-hold feature so that your iPhone functions like a real cough button. Press and hold the screen and your mic will be muted, when you let up it will unmute. You need a local web server running PHP and a way to load it on your iPhone. This can be done by turning on the apache web server with PHP enabled and setting up a virtual host. If you don t know how to do that, I recommend using MAMP . Download the project as a zip file from GitHub (or clone/fork it ). Unzip the download into a folder in Sites in your home directory. Point your virtual host to it and you re ready to go. Open your virtual host address/port in Mobile Safari on your iPhone. Use the send button at the bottom of the mobile Safari window to Add to Homescreen. Leave Safari and launch the new icon it creates. Skype can only mute the mic while a call is active. Once you have a call started, tap and hold your iPhone screen and you should see the Skype notification that the mic is muted, unmuting when you release. To toggle, just tap lightly once. This will hard switch between muted and unmuted. If you re barefoot and don t mind touching your iPhone with your feet, it makes a decent foot pedal, too. Your support is greatly appreciated! Or me on GitHub!",
"keywords": ["coughbutton","download","github","hammer","homescreen","installation","leave","mobile","mutemymic","point","press","safari","sites","skype","support","unzip","usage","active","address","apache","appreciated","barefoot","between","bottom","button","clone","cough","creates","decent","directory","download","enabled","feature","folder","friendly","functions","greatly","iphone","interface","jquery","launch","lightly","local","makes","mobile","muted","needed","notification","pedal","plugin","press","project","ready","recommend","release","running","screen","script","server","setting","simple","small","started","support","switch","toggle","toggling","touching","turning","unmute","unmuted","unmuting","unreliable","using","virtual","while","window"]
},
{
"title": "CurlyQ",
"url": "/projects/curlyq/",
"tags": ["productivity","utilities"],
"date": "project",
"ts": "",
"summary": "curl https://coffee.please Or me on GitHub! The current version of is 0.0.11. CurlyQ is a utility that provides a simple interface for curl, with additional features for things like extracting images and links, finding elements by CSS selector or XPath, getting detailed header info, and more. It s designed to be part of a scripting pipeline, outputting everything as structured data (JSON or YAML). It also has rudimentary support for making calls to JSON endpoints easier, but it s expected that you ll use something like jq to parse the output. Assuming you have Ruby and RubyGems installed, you can just run . If you run into errors, try , or use . If you don t have Ruby/RubyGems, you can install them pretty easily with Homebrew , rvm , or asdf . Run for a list of subcommands. Run for details on a particular subcommand and its options. A search uses either CSS or XPath syntax to locate elements. For example, if you wanted to locate all of the elements with a class of inside of the div with an id of , you would run . Searches can target tags, ids, and classes, and can accept to target direct descendents. You can also use XPaths, but I hate those so I m not going to document them. I ve tried to make the query function useful, but if you want to do any kind of advanced shaping, you re better off piping the JSON output to jq or yq . Queries are specifically for shaping CurlyQ output. If you re using the command, it returns a key called , so you can target just the images in the response with . The queries accept array syntax, so to get the first image, you would use . Ranges are accepted as well, so will return the 2nd through 5th images found on the page. You can also do comparisons, e.g. to target only images with a attribute of . Comparisons can be numeric or string comparisons. A numeric comparison like would return all of the images on the page with a width attribute greater than 500. You can also use dot syntax inside of comparisons, e.g. to target the links object ( command), and return only the links with a attribute. If the comparison is to an array object (like or ), it will match if any of the elements of the array match your comparison. If you end the query with a specific key, only that key will be output, but it will be in an array. If there s only one match, it will be output as a raw string as a single element in an array. curlyq makes use of subcommands, e.g. or . Each subcommand takes its own options, but I ve made an",
"keywords": ["allow","arrays","assuming","attributes","breaking","changed","changelog","chrome","click","commands","comparisons","curlyq","example","extension","fixed","firefox","github","homebrew","improved","installation","loads","opengraph","piping","queries","query","ranges","refactor","response","return","returns","revert","rubygems","scrape","screenshot","search","searches","support","usage","xpath","xpaths","above","accept","accepted","advanced","affects","aliased","allow","allowing","ampersand","array","attribute","attributes","attrs","automatically","available","based","basics","before","between","bracket","breakdown","browser","called","calls","capabilities","certain","change","character","child","choices","chrome","class","classes","clean","cleaning","coffee","comma","command","commands","comparison","comparisons","consistent","containing","contains","content","contents","creation","curls","curlyq","defaults","depends","descendents","description","designed","detailed","details","determined","direct","directly","document","dynamically","easier","easily","effort","either","element","elements","empty","endpoints","entire","error","errors","everything","example","expand","expected","extract","extracting","features","fetching","filters","finding","finds","firefox","first","flexible","found","function","functions","getting","going","gracefully","greater","handling","having","header","headers","headlinks","height","helper","hierarchy","https","hyphens","image","images","includes","including","information","inside","install","installed","interface","keyed","library","limit","links","loaded","local","makes","making","malformed","mastodon","match","matched","matches","modified","narrows","needed","nothing","numeric","object","objects","offering","options","origin","output","outputting","pages","pairs","parse","parsing","particular","pipeline","piping","pixels","populated","possible","print","proper","provides","pulls","queried","queries","query","redirects","remove","required","requiring","response","results"]
},
{
"title": "Dimspirations Merch",
"url": "/projects/dimspirations-merch/",
"tags": ["clothing","commercial"],
"date": "project",
"ts": "",
"summary": "A selection of mugs, t-shirts, and calendars based on Brett s Dimspirations . Available on the Dimspirations Store .",
"keywords": ["available","brett","dimspirations","store","based","calendars","selection","shirts"]
},
{
"title": "Dimspirations",
"url": "/projects/dimspirations/",
"tags": ["humor"],
"date": "project",
"ts": "",
"summary": "BrettTerpstra.com",
"keywords": ["collection","daily","inspirations","nihilist","regularly","updated"]
},
{
"title": "doing",
"url": "/projects/doing/",
"tags": ["productivity","utilities"],
"date": "project",
"ts": "",
"summary": "doing now sending coffee money to Brett. Or me on GitHub! For a summary of all commands and options, see Doing - All Commands . The current version of is 2.1.84. See what s new in Doing 2.0 . is a basic CLI for adding and listing what was I doing reminders in a TaskPaper-formatted text file. It allows for multiple sections/categories and flexible output formatting. While I m working, I have hourly reminders to record what I m working on, and I try to remember to punch in quick notes if I m unexpectedly called away from a project. I can do this just by typing . If there s something I want to look at later but doesn t need to be added to a task list or tracker, I can type . When I get back to my computer or just need a refresher after a distraction I can type to see what the last thing on my plate was. I can also type (or just ) to get a list of the last few entries. gives me everything since midnight for the current day, making it easy to see what I ve accomplished over a sleepless night. Doing has over 30 commands for tracking your status, recording your time, and analyzing the results. The LaunchBar action requires that be available in . If it s not (because you re using RVM or similar), you ll need to symlink it there. Running the action with Return will show the latest 9 items from Currently, along with any time intervals recorded, and includes a submenu of Timers for each tag. Pressing Spacebar and typing allows you to add a new entry to currently. You an also trigger a custom show command by typing show [section/tag] and hitting return. Include any command line flags at the end of the string, and if you add text in parenthesis, it will be processed as a note on the entry. Point of interest, the LaunchBar Action makes use of the flag for outputting JSON to the action s script for parsing. Doing for LaunchBar v2.2 Download Doing for LaunchBar v2.2 A LaunchBar action for use with doing Published 02/07/20. Updated 07/01/21. Changelog Donate More info If you create a plugin , custom command, or hook you can share, please let me know . If I get a few plugin contributions, I ll set up a second repository for them. Feel free to fork the repository on GitHub and make pull requests with changes. Please target the branch with pull requests. 2.1.84 2.1.83 2.1.82 2.1.81 2.1.80 2.1.79 2.1.78 Add plugins.byday.item_width config for byday plugin 2.1.77 2.1.76 2.1.75 2.1.69 Add since as alias for back on again, done,",
"keywords": ["ability","action","added","adding","affects","alfred","allow","append","apply","array","arrays","assume","autotag","breaking","backward","basic","batch","because","breaking","brett","bugfix","bugfixes","build","buying","change","changed","config","count","calendar","change","changelog","check","clean","cleaned","clear","click","clock","colors","commands","common","comparison","config","contributing","convenience","convert","creating","custom","debug","doing","darwin","default","deleting","deprecation","disable","display","doing","donate","download","editor","entries","error","escape","example","ffffff","fixed","failed","falseclass","filter","finish","fixed","fixes","flagging","formatting","frozen","fuzzy","geektool","gemfile","generating","github","global","handling","hidden","highlight","hooks","improved","ignore","import","improved","improvements","initial","interactive","intervals","items","level","launchbar","launchbar","logger","logging","looks","loosened","lovely","maintenance","major","markdown","matching","minor","mostly","moved","moves","multi","multiple","needs","notification","numeric","output","pager","pattern","plugins","point","pressing","prevent","printf","published","quiet","queries","recognize","recongnition","redirect","refine","regex","remove","repaired","resolves","return","reverse","revert","rewrite","rotate","running","stderr","stdin","stdout","string","search","section","sections","security","separated","shortdate","skipped","slightly","smarter","spacebar","specifying","store","support","synonym","synonyms","system","table","taskpaper","template","timeline","timers","timing","today","totals","touch","trigger","updated","using","views","warning","while","wildcard","wildcards","windows","works","ability","accept","accepting","accepts","access","accessed","accomplished","action","added","adding","additions","advantage","affecting","again","agnostic","ahead","algorithm","alias","aliases","align","alignment","allow"]
},
{
"title": "ExtraInfo",
"url": "/projects/extrainfo/",
"tags": ["automator","service","utilities"],
"date": "project",
"ts": "",
"summary": "The ExtraInfo service brings the features of the TaskPaper script ExtraInfo to any app you re editing text in. It runs as a macOS Service that you can run with a shortcut key on highlighted text containing an info link and a note will be opened (and created if needed). You can expand on ideas inside mind map nodes, link notes to tasks in OmniFocus, link notes in nvALT to MindNode maps, and so on. It functions like a big multi-app wiki. Anywhere you can type text, you can link additional information in any format you need. You can define different types for notes, so you can store your info in an OmniOutliner outline, an nvALT note, or even an iThoughts or MindNode mind map, and have different types of notes for different scenarios. Almost any application that stores its documents on your disk can be a note hub. ExtraInfo recognizes the original TaskPaper tag syntax, so will open your configured note app with a document called ExtraInfo documentation. In my setup (and the default configuration), this creates or opens an nvALT document. And using opens an iThoughtsX mind map called, you guessed it, ExtraInfo documentation. Created notes can also have backlinks to the place where you linked to them. So typing @map(ExtraInfo Documentation) in MultiMarkdown composer while I m writing this creates a mind map for brainstorming and outlining, or I can add @tree(ExtraInfo Documentation) and have an additional Tree 2 outline, and then easily jump back and forth between all of them. It also handles . Surrounding any text with double brackets will cause it to open using the first app in the configuration file. You can specify a type, though, using a pipe at the end: . Download and unzip the project and open the resulting folder. Inside, you ll see a config file, a folder of templates, and ExtraInfo.workflow. Copy ExtraInfo.workflow to ~/Library/Services (the is your home folder, see the how-to for more detail) Create a folder in your home directory called config (if it doesn t exist), and a folder inside that called extrainfo Copy the template folder and all of its contents into (all of the templates should now reside in ) By default, ExtraInfo looks for its configuration and templates in . If this folder doesn t exist, it will be created the first time ExtraInfo runs, and a default config file will be placed in there. You still need to copy the templates from the download in manually. The config.yaml file in is where you ll edit all of the",
"keywords": ["almost","anywhere","changelog","configuration","contents","create","created","creating","donate","download","examples","extrainfo","extracting","filepath","finder","github","inside","installation","introduction","library","limitations","mindnode","multi","multimarkdown","notes","omnifocus","omnioutliner","plist","package","published","service","services","support","surrounding","taskpaper","template","templates","terminal","updated","variables","above","absolute","access","across","adding","anywhere","assign","associated","attaching","available","backlinks","between","binary","blank","brackets","brainstorming","brings","bundle","bundles","called","cause","click","coming","command","composer","compressed","compression","config","configuration","configurations","configured","containing","contents","convert","create","created","creates","creating","default","define","defined","definition","detail","details","development","different","digging","directly","directory","disable","document","documents","doesn","double","download","easiest","easily","editing","empty","example","exist","exists","expand","extension","extra","extrainfo","false","features","figure","filename","files","filled","first","folder","folders","format","formats","forth","functions","general","generated","guessed","handles","happens","highlighted","ithoughts","ithoughtsx","ideas","individual","information","inserted","inside","keyword","leave","level","linked","location","locations","looks","macos","magic","manually","match","mindnode","missing","modify","multi","multiple","needed","nodes","notes","nvalt","opened","opens","original","originating","outline","outlining","parts","paste","paths","placed","placeholders","plist","possible","project","recognizes","remove","resulting","right","runtime","sample","saving","scenarios","scheme","script","service","setup","shortcut","single","source","special","specify","store","stored","stores","subdirectory","syntax","system","taking","tasks","template","templates","treated","tricky","trigger","triggers","types","typing","unzip"]
},
{
"title": "Gather CLI",
"url": "/projects/gather-cli/",
"tags": ["markdown"],
"date": "project",
"ts": "",
"summary": "Current version: 2.1.6 This project is the successor to read2text, which was a Python based tool that used Arc90 Readability and html2text to convert web URLs to Markdown documents, ready to store in your notes. It takes its name from another of my similar projects that I ve since retired. It was this, but with a GUI, and this is infinitely more scriptable and is designed to nestle into your favorite tools and projects. This version is Swift-based and compiled as a binary that doesn t require Python or any other processor to run. It has more options, better parsing, and should be an all-around useful tool, easy to incorporate into almost any project. The code is available on GitHub . It s built as a Swift Package and can be compiled using the command line tool. I m just learning Swift, so I guarantee there s a lot of stupidity in the code. If you dig in, feel free to kindly point out my errors. The easiest way to install Gather is with Homebrew . Building gather from source via Homebrew requires installing Xcode, so if you d rather not deal with the hassle, see the download option below. If you use a lot of command line utilities or want a package manager for all your non-MAS apps, I highly recommend getting Homebrew set up . If you get errors, the most common solution is to run . Seems to fix just about every issue I ve had reported. The gather binary will be located in . Copy it wherever you keep your binaries in your PATH. Or just run , which will build the release version and copy it to . Gather CLI v2.1.6 Download Gather CLI v2.1.6 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 09/18/23. Changelog Donate More info Double click to run the installer. This will install gather to /usr/local/bin with root permissions. In its simplest form, Gather expects a URL. Just to perform a readability extraction of the main content and a conversion to Markdown, output to STDOUT. In addition to passing a URL as an argument, you can use to pass the URL via a pipe, e.g. . You can have the URL pulled from your clipboard automatically with . Just copy the URL from your browser and run . This is ideal for use in macOS Services or Shortcuts. You can also pass raw HTML to Gather and have it perform its magic on the source code. Just add to the command and it will parse it directly rather than trying to",
"keywords": ["'make'","'webclip","arguments","ascii","accepts","added","anderson","applications","askdifferent","attempting","brett's","building","changed","changelog","changelog","click","comments","contents","crash","create","define","depending","developer","display","donate","double","download","downloading","exchange","expect","fixed","fallback","filtering","formatting","frankenstinian","gather","github","homebrew","howzit","improved","images","improved","incorrect","initial","input","install","installation","javascript","lastly","launchbar","manual","markdown","missing","moved","multimarkdown","notational","options","obsidian","options","output","popclip","package","paypal","popclip","published","python","readme","readability","revamping","stdin","stdout","sanitize","seems","services","shortcut","shortcuts","source","special","specify","sponsor","stack","stackexchange","stackoverflow","support","swift","title","tuvbv'","thanks","today","troubleshooting","usage","unicode","updated","usage","using","variable","velocity","versioning","xcode","absolute","accepted","accepts","action","added","align","almost","another","answer","answers","append","appreciated","argument","ascii","aside","automatically","automation","available","avoid","banner","based","because","below","binaries","binary","block","border","bracket","brettterpstra","browser","build","built","bunch","button","canonical","capture","captured","cause","center","changed","changelog","characters","check","chooses","class","cleaned","click","clipboard","clipped","clipper","clipping","clone","close","codesign","collect","combination","command","comments","commit","common","compilation","compiled","compiler","config","console","contain","content","contents","control","conversion","convert","copied","copies","couple","create","created","curated","dashes","date'","datetime","decoration","default","defaults","deploy","description","designed","desirable","details","detected","detection","determined","directly","disable","disabled","dlbox","document","documents","doesn","donate","donating","download"]
},
{
"title": "WordPress GitHub Stars Widget",
"url": "/projects/github-stars/",
"tags": ["extension","wordpress"],
"date": "project",
"ts": "",
"summary": "The Widget refreshes its content once every hour. You can force an update by re-saving the widget s preferences in Appearance- Widgets. Download the archive and unzip Upload the github-stars-widget folder to the directory Activate the plugin through the Plugins menu in WordPress In Appearances- Widgets, add the GitHub Stars widget to the section of your theme you want to display them in. Input your username and number of stars to display in the widget settings. Stars are displayed in a definition list (). Each star has a term () with the linked title, and a definition () with the project description. 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 More info 1.0.1 Just some spelling fixes",
"keywords": ["activate","appearance","appearances","changelog","donate","download","github","input","installation","plugins","published","stars","styling","updated","upload","widget","widgets","wordpress","above","archive","based","colors","content","definition","description","directory","display","displayed","example","fixes","folder","footer","force","github","linked","little","looks","output","palette","plugin","preferences","project","pulling","refreshes","saving","section","settings","sidebar","spelling","stars","theme","through","title","unzip","username","widget"]
},
{
"title": "GrabLinks",
"url": "/projects/grablinks/",
"tags": ["bookmarklet","markdown","utilities"],
"date": "project",
"ts": "",
"summary": "GrabLinks lets you hover over any section of a web page and grab all of the links contained in that portion of the page, handing them back to you as a nicely-formatted Markdown list. It s a great way to get bunches of links into nvALT or any plain text situation. If the link has a title attribute, it becomes the title of the Markdown link. If not, it uses the text of the link (with whitespace stripped). It avoids duplicates and resolves relative urls to the current host, so you don’t get broken links to the blog you were reading. It even avoids Twitter and Facebook share links. The resulting Markdown is automatically highlighted for copying. You can open them all in tabs with the SystemUIServer Service Open URL, which should show up when you right click on the selection. You can also use some of my tricks for opening batch urls with Dropzone , PopClip , or maybe bitly . Or, you can just stick them away in text files, Evernote, Together or any notes app with their full titles for easy searching later. Here s the bookmarklet. Just drag it into your bookmarks bar and click it on a page with some interesting links. As you move the cursor over the page, the areas under it will highlight. The innermost highlighted area is what links will be grabbed from when you click. You can often target smaller areas by moving the cursor into the pixels-wide margin/padding areas around the group of links you want. GrabLinks is auto-updating. It actually loads the script from the source and will therefore always load the latest stable version. It pops up a small Loading indicator until the script loads and if needed injects jQuery. If it s a fast load, you may just see a brief flash of white in the upper left corner. Do not be panic. Stay in your homes.",
"keywords": ["dropzone","evernote","facebook","grablinks","loading","markdown","popclip","screenshot","service","systemuiserver","together","twitter","appendchild","areas","attribute","automatically","avoids","background","batch","becomes","bitly","bookmarklet","bookmarklets","bookmarks","brettterpstra","brief","broken","bunches","bundler","class","click","contained","copying","corner","createelement","cursor","destination","document","dropzone","duplicates","elwrapper","extension","files","fixed","flash","formatted","function","github","grabbed","grablinks","great","group","handing","height","hellip","highlight","highlighted","homes","hover","https","image","indicator","injects","innerhtml","innermost","interesting","jquery","javascript","later","latest","ldquo","links","loading","loadingp","loads","margin","maybe","mdash","media","moving","needed","nicely","noscript","notes","nvalt","often","opacity","opening","openurls","original","padding","panic","picture","pixels","popclip","portion","position","random","rdquo","reading","relative","resolves","resulting","right","rsquo","screenshot","script","searching","section","selection","service","share","situation","small","smaller","source","srcset","stable","stick","stripped","strong","style","target","therefore","title","titles","tricks","ttscoff","under","updating","uploads","upper","version","white","whitespace","width","zindex"]
},
{
"title": "Hook CLI",
"url": "/projects/hook-cli/",
"tags": ["terminal","utilities"],
"date": "project",
"ts": "",
"summary": "A command line tool for Hook.app on macOS. Hook is a great productivity tool for macOS that allows you to create links between your files, emails, websites, and everything in your digital life, no matter where each item exists. For people who spend a lot of time in Terminal, it only makes sense we should have access to Hook s power from the command line. For full documentation, visit the GitHub repository . To install, just run . If you re on a stock Ruby install (i.e. have never installed or ), use . If you run into errors, you may need sudo and your system password: . The command always creates bidirectional hooks. Give it two or more files or urls and it will create links between them. By default it links all files to the last file in the list. Add the flag to link all files to every other file in the list. This can be abbreviated as . Similar to the way you would use the GUI, you can use to copy a Hook URL to the clipboard, and then use to create a link from the clipboard to . You can also clone all of the links on one file to another, great for adding a new file to a group that s fully crosslinked. Just use . Use the (aliased as ) command to list all attached hooks for a file. With no output format specified, will show the paths to all hooks, or the hook url if the hook doesn t have a file path (e.g. a URL). You can specify an output format using (abbreviated as ) with one of markdown , hooks , paths , or verbose . Formats can be abbreviated to their first letter, so to display a Markdown list of all hooked files, use . Use to remove the bidirectional link between and . Add the flag (abbr. ) with one or more files to remove ALL the hooks on them. This option requires confirmation. The option (abbr. ) combined with the flag (abbr. ) will list just the paths and only include hooks that have file paths (i.e. exclude web, email, and other URLs). This can be combined with to output the list using a NULL separator, perfect for use with or other command line tools. You can open a hooked file or URL by running . This will display a menu of all the hooks on , and entering the number of a selection will open that file in its default application. 2.0.16 2.0.10 2.0.9 2.0.8 2.0.3 Incorporate for selecting and filtering hooks Improve documentation Add command to output completion scripts for various shells7 If no search is provided to , list all hooks If no file is provided to , list all hooks 2.0.0 0.0.6 0.",
"keywords": ["acting","added","applescript","basics","brett's","change","changelog","click","create","creating","formats","general","github","improve","incorporate","installation","listing","markdown","removing","revamped","similar","super","support","terminal","usage","abbreviated","access","across","adding","alias","aliased","allows","another","attached","between","bidirectional","bookmarks","cleanup","clipboard","clone","command","commands","confirmation","conversion","create","creates","crosslinked","default","details","digital","display","doesn","email","emails","entering","error","errors","everything","exists","expand","files","filtering","first","fixes","format","fully","functions","great","group","handle","heart","hooked","hooks","install","installed","integration","issues","letter","links","listing","macos","makes","markdown","missing","nerdy","output","password","paths","people","permissions","platforms","preview","productivity","remove","repository","requires","running","scripting","scripts","search","selecting","selection","sense","separator","shells","specify","spend","stock","string","syntax","system","tests","tools","trick","types","usage","using","variable","various","verbose","visit","wallet","websites","where"]
},
{
"title": "howzit",
"url": "/projects/howzit/",
"tags": ["markdown","terminal"],
"date": "project",
"ts": "",
"summary": "Howzit is a tool that allows you to keep Markdown-formatted notes about a project s tools and procedures. It functions as an easy lookup for notes about a particular task, as well as a task runner to automatically execute appropriate commands. Match topic titles with any portion of title Automatic pagination of output, with optional Markdown highlighting Use , , and to perform actions within a build notes file Use to import another topic s tasks Use fenced code blocks to include/run embedded scripts Sets iTerm 2 marks on topic titles for navigation when paging is disabled Inside of git repositories, howzit will work from subdirectories, assuming build notes are in top level of repo Templates for easily including repeat tasks Grep topics for pattern and choose from matches Use positional and named variables when executing tasks Ruby 2.4+ (It probably works on older Rubys, but is untested prior to 2.4.1.) Optional: if is available, it will be used for handling multiple choice selections Optional: if is available it will page with that Optional: or for formatting output If you run into permission errors using the above command, you ll need to use . If that fails, either use () or if you re using Homebrew, you have the option to install via brew-gem : This project is licensed under the MIT License - see the LICENSE.txt file for details. 2.1.9 2.1.8 2.1.7 2.1.6 2.1.5 2.1.4 A theme file is automatically created where you can change the default output of any color that Howzit outputs. They can be 2-3 digit ANSI escape codes, or ‘#XXXXXX’ RGB hex codes 2.1.3 2.1.2 2.1.1 2.1.0 Use TOPIC_TITLE (var1, var2) to have access to ${var1} ${var2} in text and scripts, populated with positional variables on the command line Add a default (fallback) value to any variable placeholder with ${var_name:default value} 2.0.34 2.0.33 2.0.32 2.0.31 2.0.30 2.0.29 2.0.28 2.0.27 2.0.26 2.0.25 2.0.24 2.0.23 2.0.22 2.0.21 2.0.20 2.0.19 2.0.18 2.0.17 2.0.16 2.0.15 2.0.14 2.0.13 2.0.12 2.0.11 2.0.10 2.0.9 2.0.8 2.0.7 2.0.6 2.0.5 Make any task optional when running by adding a ? (@open?(…)) Optional tasks default to yes when you hit enter, invert by using a ! (@open?!(…)) to make default “no” 2.0.4 2.0.3 2.0.2 2.0.1 2.0.0 1.2.19 1.2.18 1.2.17 1.2.16 1.2.15 1.2.14 Config option and flag to determine how to handle multiple",
"keywords": ["allow","annoying","author","automatic","avoid","banner","brett","brett's","bugfixes","changelog","clean","click","color","colors","config","confirm","console","docker","download","editor","encoding","error","filename","fixed","features","formatting","frozen","general","getting","github","globbing","handle","headline","homebrew","howzit","improved","iterm","inside","installing","invalid","keeping","license","license","linux","markdown","match","merge","missing","modify","multiple","offer","optional","paginate","paypal","positional","prerequisites","readme","refactor","remove","rename","reorganize","replace","rubys","sponsor","started","support","title","topic","template","templates","terpstra","topic","topics","travis","unwritable","usage","variables","windows","xxxxxx","above","absolute","accepting","access","action","actions","adding","agnostic","align","allow","allows","alphanumeric","alternate","ambigous","another","answer","appearance","argument","arguments","aside","assuming","attempting","author","automatically","available","avoid","before","beginning","beginswith","bindings","block","blocks","border","brettterpstra","build","buildnote","buildnotes","button","center","change","changelog","characters","choice","choose","chooser","class","cleanup","clear","clipboard","close","codes","colons","color","coloring","command","commands","common","compatibility","compatible","completions","config","confirmation","contain","contained","containing","content","contents","continue","control","create","created","creating","creation","debug","default","defined","degradation","delta","descriptive","deselect","details","development","dialogs","digit","directive","directives","directories","disable","disabled","display","displaying","displays","doesn","donate","donating","easily","editing","editor","either","embedded","empty","enter","error","errors","escape","escaped","exact","executable","execute","executing","execution","exists","exiting","expand","external","extra","fails","fallback","false","feature","features"]
},
{
"title": "iTextEditors",
"url": "/projects/itexteditors/",
"tags": ["markdown"],
"date": "project",
"ts": "",
"summary": "BrettTerpstra.com",
"keywords": ["chart","comparison","editor","features"]
},
{
"title": "iTunesIcon",
"url": "/projects/itunesicon/",
"tags": ["automator","utilities"],
"date": "project",
"ts": "",
"summary": "This app has been deprecated as, well, things have changed. There s a new script that handles all of this functionality and more. See this post for details. It will offer a dialog where you can type in the name of the app or search terms and return the icon of the app as a PNG file on your desktop. For example, run it and type Ulysses and it will save Ulysses_icon.png to your desktop. The can be replaced by , which is useful for some command line usage. To choose a small (64px), medium (100px) or large (512px) 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: For iOS icons (which are square in the source), iTunesIcon can add rounded edges automatically. This requires that ImageMagick be installed and the convert utility is available in . If it s not there, it just won t do anything. This gist contains the Ruby source code used within the Automator application. It will run as a CLI, accepting the search string as an argument, or can be integrated into an Alfred or LaunchBar action. 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 More info",
"keywords": ["alfred","automator","changelog","deprecation","description","donate","download","github","homebrew","imagemagick","itunesicon","launchbar","omnifocus","options","published","rounded","search","source","store","support","syntax","ulysses","updated","above","accepting","action","argument","automatically","available","changed","character","choose","command","contains","convert","corners","default","define","deprecated","desktop","details","development","dialog","easily","edges","example","expand","extending","first","followed","functionality","handles","iphone","itunes","itunesicon","icons","included","installed","integrated","keyword","largest","medium","offer","prefix","quickly","replaced","requires","retrieving","return","rounded","saves","script","search","searches","small","source","specifically","specify","square","string","terms","through","tilde","usage","useful","using","utility","version","where","within"]
},
{
"title": "Journal",
"url": "/projects/journal-cli/",
"tags": ["markdown"],
"date": "project",
"ts": "",
"summary": "A CLI for journaling to structured data, Markdown, and Day One The command reads a journal definition and provides command line prompts to fill it out. The results are stored in a JSON database for each journal, and can optionally output to Markdown (individual files per entry, daily digest, or one large file for the journal). If Gum is installed, it will be used for prettier input prompts and editing. The easiest way is with Homebrew : If you want to use Day One with Journal, you ll need to install the Day One CLI . It s just one command: This file contains a YAML definition of your journal. Each journal gets a top-level key, which is what you ll specify it with on the command line. It gets a few settings, and then you define sections containing questions. You can include weather data automatically by setting a question type to weather . In order for this to work, you ll need to define and keys. is just your zip code, and is a key from WeatherAPI.com. Sign up here for a free plan, and then visit the profile page to see your API key at the top. If a question type is set to , only the predicted condition, high, and low will be included in the JSON data for the question. A full printout of hourly temps will be included in the Markdown/Day One output. If the question type is , only the current condition and temperature will be recorded to the JSON, and a string containing [TEMP] and [CONDITION] (e.g. 64 and Sunny ) will be recorded to Markdown/Day One for the question. If the question type is , only the moon phase will be output. Moon phase is also included in JSON and Markdown output. Keys must be alphanumeric characters and (underscore) only. Titles and questions can be anything, but if they contain a colon (:), you ll need to quote the string. The key can be set to save JSON and Markdown files to a custom, non-default location. The default is . This key can also be used within a journal definition to offer custom save locations on a per-journal basis. A journal must contain a key, and each section must contain a key with an array of questions. Each question must (at minimum) have a , , and . If a question has a key , the prompt will be repeated with the secondary question until it s returned empty, answers will be joined together. or will request a single-line string, submitted on return for multiline strings (opens a readline editor, use ctrl-d to save) will just insert current weather data with no prompt will insert",
"keywords": ["'journal","'forecast'","'journal'","'weather'","allow","answering","answers","applications","available","child","changelog","click","coloring","colorize","conditional","conditions","config","configuration","contents","daily","description","desktop","display","enter","fixed","feeling","forecast","github","health","homebrew","improved","initial","installation","journal","journal","language","markdown","messed","missing","multiple","natural","naming","numeric","obsidian","optional","parent","pressing","questions","readme","refactoring","remove","removed","required","resources","rubygems","section","store","sunny","support","title","titles","types","updated","usage","weather","weatherapi","where","write","xxxxxxxxxxxx","absolute","advanced","allow","allowing","allows","alphanumeric","answer","answering","answers","anywhere","appended","applied","argument","array","assigned","attempting","automatically","available","backdated","based","basis","before","begin","binaries","binary","blacksmithgu","blank","blockquote","called","chain","changelog","characters","charmbracelet","checkin","choice","class","close","collected","colon","color","command","comparisons","complex","conditional","conditions","config","configuration","configured","confirmation","contain","containing","contains","continue","control","convert","create","created","creating","custom","daily","database","dataset","dataview","dayone","dayoneapp","debug","decimal","deeper","default","defaults","define","defined","definition","definitions","depending","description","details","detection","dictionary","digest","disable","displayed","documentatioh","doesn","doubling","easiest","editing","editor","either","empty","enough","entire","entries","entry","error","errors","example","exist","existence","expand","expected","exporting","extract","failing","false","feeling","fewer","field","files","first","fixed","float","floats","folder","forecast","format","formats","friendly","front","function","general","getting","github","groggy","guides","header","health","height","hidden","highlight","highlighter"]
},
{
"title": "jTag",
"url": "/projects/jtag/",
"tags": ["blogging","jekyll","utilities"],
"date": "project",
"ts": "",
"summary": "jTag is a command line application for manipulating Jekyll tags in the YAML headers. It can perform mass operations such as tag addition, removal, merging and sorting. It can also suggest relevant tags based on the content of the post matched against your existing tag set (requires a plugin/template in your Jekyll install). Configuration includes a persistent blacklist and synonym definitions. Tags manually added to posts are automatically whitelisted for the auto-tagger. The auto-tagger can update your posts directly, or be used to provide suggestions for a working post that you can manually insert in the post. NOTE: jTag works by modifying the YAML headers of your posts directly. There s no undo. Back up your posts (which is a good idea anyway). The best way to this is with git 1 . The jTag tool is at 0.1.18 at the time of this writing. It s been tested, but never used by anyone but me until today. I ll be adding features and updating as I go, so please let me know about bugs . First, though, let s cover the plugin side, which hasn t needed to change since I first wrote it. Set it up and forget it. Generating a tag index Plugin: autotag_gen.rb Template: tags_json.html jTag Installation/Configuration Usage Commands Bash completion To use jtag, we need to generate an index of all the tags on a Jekyll/OctoPress blog in JSON format. I chose JSON because it could be used in JavaScript apps easily and would make the data useful for more than just jTag. The code for both the template and the plugin can be found in the Jekyll folder of the GitHub repository . This plugin is a Page generator which creates , which is a list of all the tags on your blog, as well as a list of the top 50 tags with a count of how many times they appear across your blog. You can download the plugin here . The plugin looks for the template in your _layouts folder. See the example provided. It provides the following, which can be used in the liquid template: array of tags to exclude from all listings alternate folder for the file. Set to blank for root, defaults to data Side note: if you re also using tags.json with JavaScript on your site, be sure you have the proper headers defined in : jTag is currently at version 0.1.6 It will be a work in progress for a while as I make it more efficient and figure out the best ways to integrate it into my blogging workflow.It grabs all of the tags on your blog (the file) and compares them",
"keywords": ["because","commands","configuration","first","gemfile","generating","generational","github","hopefully","installation","javascript","jekyll","keywords","markdown","mountain","multiple","octopress","plugin","stdout","suggested","support","template","usage","weatherhead","across","added","adding","against","almost","alphabetize","alternate","anyone","anyway","appear","applications","argument","arise","array","attached","automatic","automatically","autotag","avoiding","based","because","before","below","blacklist","blacklisted","blank","block","blocked","blogging","boolean","build","built","capitalization","certain","change","chose","command","commands","commit","commits","common","compares","config","configuration","confirming","conjugations","consistency","contain","content","convenience","converted","count","cover","create","created","creates","culprit","default","defaults","defined","defines","definitions","dependency","deploy","deploying","destination","differ","different","directly","directory","download","duplicates","easiest","easily","edited","efficient","either","enter","entire","exact","example","exist","exists","expressions","extra","fashion","features","figure","filename","files","filtering","finish","first","folder","forget","format","found","generated","generational","generator","generi","generic","global","going","grabs","handles","handy","header","headers","hosted","includes","index","individual","infrequent","inspection","install","integrate","integration","interested","keyword","keywords","layouts","likely","liquid","listed","listings","little","loaded","local","location","looks","lowercase","makes","manager","manipulating","manually","markdown","match","matched","matching","merge","merged","merging","method","missing","mixed","modifying","mountainlion","multiple","myself","needed","offers","operations","optionally","options","output","outputs","overwritten","parameters","parent","particular","parts","paste","pattern","peace","persistent","plugin","pluralization","plurals","possible","possibly","posts","predefined","processed","proper","protocol"]
},
{
"title": "KeyBindings",
"url": "/projects/keybindings/",
"tags": ["utilities"],
"date": "project",
"ts": "",
"summary": "DefaultKeyBinding.dict file () for Mac OS X, created by Brett Terpstra and based heavily on work done by Lauri Ranta. Please note that these bindings won t work in all applications: TextWrangler and TextMate, for example, override these with their own settings. Copy the DefaultKeyBinding.dict file to the directory (create if it doesn t already exist). Any open applications will need to be re-started before the key bindings will take effect or log out and log back in. The repository includes a script to generate a Dash docset from your customized version of the file. See here for details. Grouped items begin with the groups shortcut (if exists), followed by a subgroup (if exists) followed by the keys specified. ⌃ Make selected text into paired HTML tag. Allows attributes, only dupes first word into closing tag (caveat: overwrites your pasteboard) ⌃⌘e i t Insert image tag, any selected text is alt text, leave cursor in src attribute ⌃⌘e i c Insert image tag, clipboard as src, any selected text as alt, leave cursor at beginning of alt attribute This documentation is generated automatically from the comments and commands in the DefaultKeyBinding.dict file. The script is free for use, but it s specifically designed for use with my formatting in the bindings plist (i.e. it s a little finicky). If you use Dash , you may be interested in the script for Cheatset that can create a custom Dash cheat sheet from your keybindings file, assuming proper comment formatting.",
"keywords": ["allows","alphanumeric","amazon","apple","backtick","basic","blank","bookmark","break","brett","brett's","brettterpstra","cheatset","command","commands","comment","commenting","continue","control","convert","create","decrease","defaultkeybinding","deletes","droplr","entity","fence","force","function","general","github","google","grouped","headlines","https","hyphenate","image","increase","indent","installation","italicize","jekyll","keybindings","lauri","library","links","liquid","lowercase","markdown","modify","multi","nstextkillringsize","numeric","options","outdent","paste","paypal","projects","pullquote","ranta","regular","remove","repeat","replace","requires","return","right","searchlink","shift","shortcuts","snake","software","space","sponsor","store","support","surround","syntax","taskpaper","terpstra","textmate","textwrangler","titlecase","twitter","unordered","uppercase","above","action","align","alphanumeric","applications","arrow","aside","assuming","attribute","attributes","automatically","backticks","backward","based","before","begin","beginning","below","between","bindings","blank","blockquote","bookmark","border","bound","break","brettterpstra","bullet","button","camelcase","capitalize","carriage","casing","caveat","center","character","cheat","class","click","clipboard","clipboards","closing","colgroup","colspan","command","commands","comment","commenting","comments","contents","create","created","cursor","custom","customized","defaults","defined","delimiter","designed","details","directory","docset","document","doesn","donate","donating","double","dupes","entire","example","exist","exists","field","finicky","first","followed","footnote","formatting","generated","github","goodnes","groups","handles","hashmarks","header","heavily","height","hidden","highlighter","honest","https","iframe","image","includes","indentation","inline","input","inserting","installation","interested","issues","items","kapeli","keybindings","label","language","leading","leave","level","linkblock","links","little","macos","maintain"]
},
{
"title": "logr",
"url": "/projects/logr/",
"tags": ["utilities"],
"date": "project",
"ts": "",
"summary": "Logr is a Bash logging utility simplifying debugging and error messages in your Bash scripts. There s probably a great utility already out there for this, but I didn t find any that fit my needs. You can source Logr at the beginning of any bash script and enable logging with a simple command. Logr uses command to write custom messages to your own log, optionally to STDERR, and , , and messages to both of those as well as the system log (), which can be viewed in Console (on Mac). Logr has no built-in log rotation capabilities, so that needs to be handled via the Apache (), , or any of the available log management tools . Because console output from logr goes to STDERR, it can be used in scripts where STDOUT is piped without affecting results. You can change the location of the custom log files with . The default is , but it can be set to anything you want. E.g. in use to change it, or define the variables before calling directly in the script. You can define the name of a custom log when starting logging, or just let it default to . You can change the name of the log with . E.g. . By default, logr uses the user logging facility . If you need to change this, you can set , either in the script itself or in a global init file (i.e. or ). You can source the script in a login file (e.g. ) and use it in functions added to the main scope by your shell login. Otherwise, source it in a single script and it will stay out of the main scope. Note that sourcing it in a login file does not make it available to scripts run from the shell. Start the logger A call to begins logging to You can override the default log name with Call logr in your script where you want log messages If no level is given, it defaults to the user.info facility for easy logging If you set the logging mode to quiet (which is default), you can use to see the results of your script as it runs. Debug and info messages can go to your custom log file without polluting . Must be called first, initializes logging, sets global log file If the first paramater is verbose or quiet , it toggles STDERR output (defaults to quiet). If the first parameter (or second, if called in combination with verbose/quiet) is clean it will clear the log before writing. This is ignored if a custom log name is not specified, won t overwrite the default scripts.log file. The last parameter is a custom name of log source. If not specified, it defaults to scripts (.log will be",
"keywords": ["apache","because","clears","commands","configuration","console","debug","enables","example","github","hopefully","introduction","message","stderr","stdout","source","usage","added","affecting","affects","alias","another","appended","assumes","available","backtrace","before","beginning","begins","broadcasts","built","called","calling","capabilities","change","clean","clear","combination","command","commands","console","custom","debugging","default","defaults","define","directly","disables","either","error","facility","files","first","function","functions","global","great","handled","ideas","ignored","improvements","indicator","initializes","inside","issues","itself","level","levels","location","logged","logger","logging","login","management","message","messages","needs","optionally","output","override","overwrite","paramater","parameter","piped","point","polluting","quiet","results","rotation","scope","script","scripts","second","separated","shell","shorthand","shows","simple","simpler","simplifying","single","source","sourcing","stack","starting","system","toggles","tools","useful","users","using","utility","variables","verbose","viewed","where","write","writing"]
},
{
"title": "Make A Date for Keyboard Maestro",
"url": "/projects/makeadate-km/",
"tags": ["keyboard","maestro","utilities"],
"date": "project",
"ts": "",
"summary": "Unzip the archive and open the folder in Finder Move the file to a location on your hard drive where it can be referenced Install the file in Keyboard Maestro Modify the Execute JavaScript for Automation action, selecting the location of Optionally, modify the default date and time format variables (dateFormat, timeFormat) For the record, this script includes the entire Sugar.js library for handling the natural language. It was too much script to put into the KM editor, so placing it in an external file was the easiest solution. To start converting a date (with the macro enabled), type , then an optional format shortcut and modifiers, and the natural language version of the date and/or time. Type at the end of the string and Keyboard Maestro will run the script, replacing the entire string (including and ) with the result. If the string isn t parseable, the original is returned. You can type dates in many basic formats. Whether it s absolute (e.g. Nov 5 3pm ) or relative (e.g. in 20 minutes ), most phrasings will work as long as the language doesn t get too complex. To create a relative date type (or just ), or . Add a time to it using or (or any permutation). Create an absolute date by using a month and day, optionally a year and time: , or to get Wednesday, July 19th at 6:00 AM. When using relative times, you can increment and decrement by typing in 3 days or 3 days ago, but you can abbreviate these with m, h, d, y, days, months, years, and min(utes). A number followed by one of these will increment the current time by that amount, and preceding with a minus symbol () will decrement. Note that is three minutes not months. To perform relative date calculation using months, you have to type the word out, e.g. . : full Saturday, November 12, 2016 12:00 AM : long November 12, 2016 12:00 AM : medium November 12, 2016 : nice (ordinal date, at for time) Saturday, November 12th at 3:00 PM : nice with year Sunday, November 13th, 2016 at 3:00 PM : short 11/12/2016 Saturday, September 25, 1965 12:00 AM Nice format with time: The format string uses strftime parameters and LDML tokens, which can be combined. See https://sugarjs.com/dates/#/Formatting for more information. By default, if no time is specified in natural language, the output date in most formats will not include it. If an input string includes a time, the format specified in the variable will be appended to the date format. This doesn t apply to",
"keywords": ["absolute","automation","because","changelog","common","create","donate","download","examples","execute","finder","formats","formatting","github","increments","inserts","install","javascript","keyboard","maestro","modify","natural","optionally","published","relative","rounding","saturday","setup","special","sugar","sunday","today","tomorrow","unzip","updated","usage","wednesday","abbreviate","abbreviation","absolute","action","allow","amount","appended","apply","appreciated","archive","assume","automatically","basic","beginning","calculation","change","complex","contains","converting","create","created","dateformat","dates","decrement","deemed","default","doesn","drive","easiest","editor","enabled","entire","expanded","expands","external","folder","followed","force","forced","forcing","format","formats","greatly","handling","hours","https","hyphenated","includes","including","increment","information","input","language","letter","library","localized","location","macro","medium","milliseconds","minus","minute","minutes","modifier","modifiers","modify","natural","nearest","optional","optionally","ordinal","original","output","parameters","parseable","permutation","phrasings","placing","preceding","recent","record","referenced","relative","replacing","return","returned","round","rounds","script","selecting","short","shortcut","shortcuts","skips","solution","space","strftime","string","sugarjs","support","symbol","thursday","timeformat","times","timestamp","tokens","typed","typing","using","variable","variables","version","wanted","weekday","where","words","write","years"]
},
{
"title": "Markdown QuickTags",
"url": "/projects/markdown-quicktags/",
"tags": ["blogging","extension","markdown","webapps","wordpress"],
"date": "project",
"ts": "",
"summary": "Markdown QuickTags is a plugin for WordPress which replaces the HTML editor with a Markdown -enabled set of buttons and features. It can edit Markdown for saving, or render the finished Markdown to HTML, if you prefer. You can preview the rendered HTML at any time, and there s even a full-screen editing mode. Options can be set in the Settings- Markdown QuickTags panel of your wp-admin section. Your support is greatly appreciated! Or me on GitHub! Just download and unzip the file, upload the resulting folder to your wp-content/plugins directory and enable the plugin from the Plugins page. You can also upload the plugin using the Upload feature within the Plugins page. Once activated, your HTML editor is automatically replaced. This is currently very beta, and has only been tested on Wordpress 3.0+, and only on Mac. It works in Firefox 4, Safari 5 and Chrome. I doubt it will work in any older browsers, and I really don t plan to fix that. If you try it in a browser you really think it should work in, get me the details and help me debug it! The editor looks a little different, just so you know it s running. There are some familiar buttons, but they insert Markdown instead of HTML, plus a few new buttons. Also note the Full Screen and Preview links in the upper right, and the Revert, Render and Markdownify links in the lower left. Here s the main part of the toolbar. The b (bold) and i (italics) buttons do what you d expect, but with Markdown styling. If you use them without selected text, they ll open the tag, and after you type you can click the same button to put the end of the tag in place. Using the two buttons, you can easily insert references by filling in the popup dialogs or running the commands on selected text. The ref button will look at any selected text and determine if its a url or a title, and will use it as such. The button just inserts a at the beginning of the current line or selection, which is Markdown syntax for a blockquote. Blockquotes can be nested by indenting, and the editor will respect current indentation when using this button. del and ins insert HTML tags, as there s no equivalent in Markdown, but they re handy to have. The (unordered list) and 1. (ordered list) buttons are greatly improved from the default QuickTags. They ll remove blank lines in your selection, and will apply the list formatting to every line. If you have an unordered list and you run the ordered list button on it, it will replace the",
"keywords": ["blockquotes","bound","brett's","chrome","click","clicking","command","control","dictionary","dismiss","download","enter","escape","extra","firefox","github","indentation","installation","lists","markdown","markdownify","nothing","options","overriding","overview","pasting","paypal","plugin","plugins","pressing","preview","quicktags","quotes","return","revert","safari","screen","settings","shift","since","single","smartypants","snapshots","sponsor","support","think","toolbar","typing","upload","using","wysiwyg","wordpress","wordpress","accept","action","activated","added","admin","again","align","allow","allows","apply","appreciate","appreciated","arrow","aside","autocomplete","automatically","based","beginning","blank","block","blockquote","blocks","border","brackets","breaking","breaks","breeze","brettterpstra","browser","browsers","button","buttons","called","cause","center","change","changes","character","check","choice","choose","class","clean","click","closest","command","commands","complex","contact","contains","content","continuation","continue","continued","create","created","creating","cursor","debug","declarations","dedicated","default","delimiter","details","dialog","dialogs","different","digit","directory","disable","displayed","document","doesn","domain","donate","donating","double","doubling","doubt","download","dynamic","easily","editing","editor","edits","either","empty","enabled","enter","expect","extend","external","extract","familiar","fancy","fashion","feature","features","field","figure","filling","filters","finished","first","flash","folder","formatting","found","frustration","fully","functional","generally","github","gives","glitches","greatly","green","handle","handling","handy","happens","height","hidden","highlight","highlighter","horizontal","https","iframe","important","improved","including","indent","indentation","indented","indenting","indicators","inline","input","inserted","inserts","inside","installation","italics","keeping","label","labeled","language"]
},
{
"title": "Markdown Service Tools",
"url": "/projects/markdown-service-tools/",
"tags": ["automator","markdown","utilities"],
"date": "project",
"ts": "",
"summary": "The Markdown Service Tools are a collection of OS X Services designed to make writing Markdown text that much easier. Services (also known as Quick Actions) work in any Cocoa-based application (which is most of the apps on your Mac). The Services are prefixed with md to keep them grouped in the Services menu that shows up when you right click in a text field or editor. You can assign your own keyboard shortcuts (see the last section of this document) to make accessing them more convenient. Note: some Services are only available when text is selected, and some only when no text is selected but a text field is focused. The suggested key bindings in each description are just what work for me, personally there s no consequence for using something completely different. Just be aware that an application s default keyboard commands will override any in the Services menu, so a command s shortcut may become unavailable if it s already in use by the current application. Convert - Clean Up Smart Punctuation This service will take selected text and straighten any smart (curly) quotes, replace guillemets with straight double quotes, convert em and en-dashes to and respectively, and convert ellipsis ( ) characters to three periods. It will also fix non-breaking spaces that can otherwise break markdown rendering. Convert - HTML to Clipboard This service does the same thing as MultiMarkdown to HTML, but leaves the selection alone and copies the resulting HTML directly to the clipboard. Suggested key bindings: Command-Shift-Option-C Convert - HTML to Markdown This Service Markdownifies HTML source, creating readable Markdown from it. It does not work directly on Rich Text, but if you use it on the source of a web page it will do its best to recreate the document in clean Markdown. Convert - MultiMarkdown to HTML Processes the selected text through Markdown and SmartyPants to generate clean, typographically correct HTML. The selected text is replaced with the final HTML, but if you want both you can select it again, copy it (Command-C) and then Undo (Command-Z) to get the original text back. Markdown and SmartyPants are bundled in this Service, so no external installation is required. Convert - MultiMarkdown to RTF This Service does an in-place conversion to styled text in any field that handles Rich Text. It s ideal for writing an email in Markdown and converting it directly in the field before sending. See this post for more information",
"keywords": ["accepts","accessibility","actions","added","allows","analytics","angle","applescript","automator","backticks","based","because","block","blockquote","blogsmith","brackets","brave","breaks","brett's","bullet","bundle","caveats","changelog","chrome","clean","cleanup","click","clipboard","cocoa","command","compress","compresses","control","conversion","convert","coreservices","customizing","descriptions","donate","double","download","emphasis","empty","events","fenced","finder","firefox","fixed","fletcher","footnote","footnotes","format","francisco","german","github","google","improved","indent","indentation","indents","inline","installation","italics","keyboard","leary","leopard","levels","library","linking","links","lists","markdown","markdownservicetools","markdownifier","markdownifies","markdownify","marky","microsoft","minor","multimarkdown","numbered","outdent","paragraphs","parenthesis","paypal","penney","preferences","privacy","processes","published","punctuation","quick","quote","quotes","readability","references","removed","removes","rendering","repeat","restore","safari","screenshot","security","service","services","shift","shortcut","shortcuts","simply","smart","smartypants","sometimes","special","sponsor","square","standalone","style","suggested","summary","support","surrounds","system","tuvbv'","tables","textmate","thisservice","tobias","tools","unique","unwrap","updated","useful","using","workman","works","absolute","accept","accessing","action","actions","activate","added","adding","again","align","almos","alone","angle","another","anyway","applications","arrow","article","aside","assign","assigned","associated","assume","attempts","authorize","automatically","available","avoid","aware","backtick","backticks","based","before","beginning","believe","between","binary","bindings","blank","block","blocks","blogsmith","border","brackets","break","breaking","breaks","brettterpstra","bulleted","bundle","bundled","button","cause","center","change","changelog","character","characters","check","checkboxes","choose","class","clean","cleaning"]
},
{
"title": "Markdown Video",
"url": "/projects/markdown-video/",
"tags": ["commercial","markdown","productivity","screencast","tutorial","video"],
"date": "project",
"ts": "",
"summary": "BrettTerpstra.com",
"keywords": ["learn","markdown","peachpit","video","series","video"]
},
{
"title": "MarkdownEditing",
"url": "/projects/markdownediting/",
"tags": ["extension","markdown","sublimetext","windows"],
"date": "project",
"ts": "",
"summary": "This package has been moved into the SublimeText-Markdown organization on GitHub and is now a community project. Please see the project page on GitHub for more information. Your support is greatly appreciated! Or me on GitHub!",
"keywords": ["editing","github","markdown","markdownediting","sublime","sublimetext","support","appreciated","community","features","greatly","information","moved","organization","package","project","support"]
},
{
"title": "Marked 2",
"url": "/projects/marked/",
"tags": ["commercial","markdown"],
"date": "project",
"ts": "",
"summary": "My primary commercial application, a Markdown previewer that updates live while you edit in your favorite text editor. Check it out at marked2app.com .",
"keywords": ["check","markdown","commercial","editor","favorite","marked","previewer","primary","updates","while"]
},
{
"title": "Marky the Markdownifier",
"url": "/projects/marky/",
"tags": ["markdown","utilities","webapps"],
"date": "project",
"ts": "",
"summary": "Marky turns your web pages into readable Markdown, stripping cruft and Markdownifying the html. Check it out at markdownrules.com .",
"keywords": ["check","markdown","markdownifying","marky","cruft","markdownrules","pages","readable","stripping","turns"]
},
{
"title": "mdless",
"url": "/projects/mdless/",
"tags": ["markdown","utility"],
"date": "project",
"ts": "",
"summary": "I often use iTerm2 in visor mode, so is annoying. I still wanted a way to view Markdown files quickly and without cruft. Built in pager functionality with pipe capability, replacement for Markdown files Format tables Colorize Markdown syntax for most elements Normalize spacing and link formatting Display footnotes after each paragraph Inline image display (local, optionally remote) (with compatible tools like imgcat or chafa) Syntax highlighting of code blocks when Pygments is installed List headlines in document Display single section of the document based on headlines Configurable Markdown options Customizable colors Add iTerm marks for h1-3 navigation when pager is disabled TaskPaper syntax detection and highlighting If you run into errors, try , or (in that order). To render images, you need or installed (). For syntax highlighting, the command must be available, part of the Pygments package (). The first time mdless is run, a config file will be written to , based on the command line options used on the first run. Update that file to make any options permanent (config options will always be overridden by command line flags). The setting determines whether @tags will be highlighted. If this is enabled, colors will be pulled from the settings in the theme. will determine whether bare urls are turned into urls. will enable or disable all coloring. will determine the placement of footnotes. If true, footnotes will be added directly after the element that refers to them. will determine whether words containing underscores are rendered as italics or not. determines whether a blank line is required around HTML elements. can be , , or . Paragraph puts reference links directly after the graf that refers to them. determines whether local images are processed using or (whichever is available). does the same for images referenced with web urls. If is true, then is automatically enabled. turns on or off pagination using or closest available substitute. determines whether hard breaks within paragraphs are preserved. When converting to HTML, most Markdown processors will cause consecutive lines to be merged together, which is the default behavior for . Turning this option on will cause lines to remain hard wrapped. will turn on/off syntax highlighting of code blocks (requires Pygments) determines whether a file is rendered as a TaskPaper document. This can be set to to have TaskPaper detected",
"keywords": ["'mdless","allow","black","brett's","built","columns","catch","changelog","click","colorize","colors","column","comments","config","configurable","configuration","convert","customizable","customization","customizeable","dedup","default","defaults","dependencies","disable","display","editor","emphasis","errant","error","errors","extra","format","false","features","force","format","formatted","fresh","frogmouth","gather","general","github","handle","highlight","homebrew","image","improved","indentation","infinite","inline","installation","integrations","level","level","markdown","metadata","missing","multimarkdown","nested","normalize","onehalfdark","options","output","pager","project","paragraph","parse","paypal","project","projects","pygments","readme","ranger","redcarpet","remove","reset","roadmap","setex","setext","similar","spaces","specify","spinner","sponsor","strip","support","syntax","theme","tables","taskpaper","taskpaper","terminal","textualize","thanks","transclude","turning","unneccessarily","usage","validate","above","absolute","accept","accurate","action","added","adding","adjusting","again","against","align","alignment","allow","allowed","allows","alone","alternate","animated","annoying","argument","argument'","arguments","aside","assuming","autolink","automatically","available","avoid","background","backgrounds","backslash","backtick","based","basic","because","before","behavior","below","black","blank","block","blocks","border","borders","bracket","break","breaking","breaks","brett","brettterpstra","bright","brighter","browser","built","button","calculating","capability","caption","catch","cause","caused","causing","cells","center","certain","chafa","change","changelog","changes","character","characters","charmbracelet","check","checks","chunk","class","cleanup","close","closest","codes","colon","color","coloring","colorization","colorize","colors","column","columns","command","compatible","config","configurable","configuration","configured","consecutive","consumed","containing","contains","content","contributing"]
},
{
"title": "na",
"url": "/projects/na/",
"tags": ["productivity","utilities"],
"date": "project",
"ts": "",
"summary": "Installation Optional Dependencies Features Easy matching Recursion Adding todos Updating todos Terminology Usage Commands add Adding notes edit find init, create next, show projects saved tagged todos update Marking a task as complete Moving between projects Adding notes changelog complete archive tag undo Configuration Working with a single global file Add tasks at the end of a project Prompt Hooks Changelog If you re one of the rare people like me who find this useful, feel free to buy me some coffee . The current version of is 1.2.63. ( next action ) is a command line tool designed to make it easy to see what your next actions are for any project, right from the command line. It works with TaskPaper-formatted files (but any plain text format will do), looking for tags (or whatever you specify) in todo files in your current folder. Used with Taskpaper files, it can add new action items quickly from the command line, automatically tagging them as next actions. It can also mark actions as completed, delete them, archive them, and move them between projects. It can also auto-display next actions when you enter a project directory, automatically locating any todo files and listing their next actions when you to the project (optionally recursive). See the Prompt Hooks section for details. Assuming you have Ruby and RubyGems installed, you can just run . If you run into errors, try , or use . If you don t have Ruby/RubyGems, you can install them pretty easily with Homebrew, rvm, or asdf. I can t swear this tool is worth the time, but there are a lot of great gems available If you have gum installed, na will use it for command line input when adding tasks and notes. If you have fzf installed, it will be used for menus, falling back to gum if available. You can list next actions in files in the current directory by typing . By default, looks for files and extracts items tagged and not . This can be modified to work with a single global file, and all of these options can be changed in the configuration. features intelligent project matching. Every time it locates a todo file, it adds the project to the database. Once a project is recorded, you can list its actions by using any portion of the parent directories or file names. If your project is in , you could quickly list its next actions by typing . Creat paths by separating with / or :, separate",
"keywords": ["action","action","actions","added","adding","alias","allow","allows","alternate","archive","arguments","assuming","backup","backwards","brett's","changed","command","commands","change","changelog","click","colorize","commands","configuration","confirm","creat","create","depth","description","debug","default","defaults","dependencies","detailed","disable","display","doing","editor","example","examples","empty","enables","error","escape","example","examples","execute","expand","fixed","failing","features","filter","force","format","frozen","fuzzier","global","github","global","guard","highlight","homebrew","hooks","improved","ignore","improved","inbox","initial","initialize","input","inserting","installation","interactively","interpret","invalid","linux","marked","marking","match","middle","missing","moving","multi","multiple","natural","notes","options","offer","omnifocus","optional","output","overwrite","pattern","position","priority","project","pagination","parsing","partial","paypal","prefer","press","project","projects","prompt","provides","query","readme","recurse","recursion","refactor","refactoring","refers","refined","remove","repeating","restore","return","reverting","rubygems","running","saved","search","stdin","stdout","string","subproject","synopsis","saved","search","separate","setting","shows","sites","special","specify","split","sponsor","strings","support","tagname","title","taskpaper","taskpaper","templating","terminology","unable","undoes","updated","updating","usage","value","version","variable","warning","wildcards","working","write","above","absolute","accepts","across","action","actions","added","adding","additionally","adjusted","affected","affecting","again","against","agnostic","aliased","aliases","align","allow","allowed","allows","alphanumeric","alter","another","anywhere","appear","appearing","append","appended","appending","applied","apply","archive","archiving","argument","arguments","aside","asked","assigned","assignment","assuming","asterisk"]
},
{
"title": "NiftyMenu",
"url": "/projects/niftymenu/",
"tags": ["macos","screenshot"],
"date": "project",
"ts": "",
"summary": "Why did you do this. Why. The Problems With Menu Bar Screenshots Requirements Getting Started Using the Playground Features (Nearly) Perfect recreations Click any item to freeze the menu Add Callouts Zoomable Light and Dark mode Expos Custom Wallpaper Customizable colors and Desktop images Fully functioning menu search Built-in Screenshots NiftyAPI Automating Customizing Shortcomings Credits Changelog NiftyMenu copies the entire menu hierarchy from any Mac application, turning it into an HTML playground. It s designed to make taking screenshots of menus for software documentation easier. And it does that. If that s what you need right now, that s amazing, this will be super useful. If you don t fall into that microscopic niche, it s just a neat trick that might be worth seeing Check out the demo to see what s up. Find the latest release in the repository . Why did you do this. Why. I got annoyed for five minutes while taking a screenshot one time. So I m obviously going to spend a couple hours finding a workaround. Menus disappear as soon as you move your mouse away. Assuming best case scenario and your screenshot app has a hotkey, you can hover over it and grab the image, but if anything is wrong you have to relocate and hover the item again. Not a huge deal, but the time adds up. It s a difficult process to automate. Dealing with System Events and accessibility scripting alone is exceedingly painful, but for people writing documentation you can be sure that menu items will move and even change names over time, rendering careful menu scripting moot. You can only shoot image sizes up to the resolution of your screen, and the images won t zoom without pixelation. If you want to add callouts you need to do it in post with an image editor. Which is also impossible to automate if you can t guarantee the item s location in the shot with 100% accuracy. Tasks like setting up the right Desktop image and Dark Mode settings are more time consuming than I d like. The only requirement is the MultiMarkdown CLI. You can install this with Homebrew () or download a package from the MultiMarkdown releases . You can clone the repository if you think you ll want updates, or you can just download the latest release . You need the entire package, and the script runs inside of the root folder. If this were a more useful project I d bundle it up as a gem, but for now, just clone or download",
"keywords": ["'file","apple","applescript","assuming","automating","because","built","callouts","changelog","check","chrome","click","clicking","codekit","command","compass","credits","custom","customizable","customizing","dealing","desktop","downloads","editing","escape","events","expos","features","focusing","fully","function","garvey","getting","github","hazel","homebrew","hovering","improved","initial","issues","javascript","keyboard","light","lioih","livereload","macscripter","markdown","menus","multimarkdown","namely","nearly","nifty","niftyapi","niftymenu","niftymenus","nigel","occasionally","onscreen","pages","paste","playground","position","pressing","problems","readme","refactored","retrobatch","rewritten","safari","screenshot","screenshots","search","shift","shortcomings","started","support","system","tasks","terminal","toggle","unsplash","using","ventura","video","wallpaper","whenever","youtube","zoomable","ability","above","absolute","accessibility","accuracy","adapted","again","allow","alone","amazing","anchor","annoyed","anywhere","appearance","applescript","argument","arrow","arrowstyle","attempts","automate","automated","automatically","automating","automation","available","background","based","behavior","bgimage","bottom","breaking","brettterpstra","browser","build","built","bunch","bundle","button","callout","callouts","cancel","canvas","capabilities","capability","capture","careful","chain","chainable","chaining","change","changelog","changes","checkmark","choose","circle","class","cleanup","clear","click","clicking","clicks","clone","close","color","colors","command","compass","compatibility","config","configured","consuming","container","containing","contrasting","control","controls","conversion","convert","copies","corrections","couple","creates","credited","credits","cropped","custom","customizable","customizeable","customizing","darkmode","dependent","designed","desired","desktop","details","development","difficult","disabled","disappear","display","double","download","downloads","dozen","duplicate","eacute","easier","easily","editor","elaborate","element","emendelson"]
},
{
"title": "nvALT",
"url": "/projects/nvalt/",
"tags": ["markdown","productivity","utilities"],
"date": "project",
"ts": "",
"summary": "A new app is coming to replace nvALT: nvUltra . Sign up here for updates here. . nvALT 2 is a fork of the original Notational Velocity with some additional features and interface modifications, including MultiMarkdown functionality. It has been developed by Elastic Threads (David Halter) and Brett Terpstra , and made available for free (donations accepted). 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. Enjoying nvALT? Or me on GitHub! Notational Velocity is a way to take notes quickly and effortlessly using just your keyboard. You press a shortcut to bring up the window and just start typing. It will begin searching existing notes, filtering them as you type. You can use J and K to move through the list. Enter selects and begins editing. If you re creating a new note, you just type a unique title and press enter to move the cursor into a blank edit area. Check out the descriptions at notational.net for a more eloquent synopsis. Want a great primer on using nvALT? See Michael Schechter s nvALT 101 . Option for horizontal layout with multi-line previews in notes list Words between [[double-brackets]] will become links to other notes Tags are synced to Dropbox and searched by Spotlight, via OpenMeta Tags are auto-completed while typing in the tag-entry field TaskPaper-compatible strikethrough formatting using the @done tag Fully plain-text-based automatic list-bullet formatting Note-titles inside double-brackets are (optionally) auto-completed Show in Finder command for revealing selected note-files on disk Highlighting of search terms can be disabled Dragging the divider to the top or left of the window will hide search field and more http://notational.net/releasenotes/release2/ Open in external text editor NEW: Auto-pairing and selection wrapping for brackets and quotes ([],(), , ) NEW: Pin a note to the preview while editing other notes NEW: Shortcut (CMD-Shift-L) for inserting [[Links]] NEW: Better MultiMarkdown 3 support (if installed locally) NEW: Right to Left support NEW: External editor support improved NEW: Simplenote Tag sync 1 Textile and (Multi)Markdown support with Preview window (hold down Control to view temporarily) HTML source code tab in the Preview",
"keywords": ["apparently","applications","black","bleeding","brett","brett's","browser","changelog","check","chrome","collapse","color","command","control","convert","count","credits","customizable","customization","darryl","david","divinedominion","donate","download","dragging","dropbox","elastic","enjoying","enter","expand","extensions","external","features","finder","firefox","french","fully","german","github","halter","highlighting","improved","installation","instapaper","javascript","lcqcpids","library","links","markdown","michael","mobilizer","multi","multimarkdown","notational","openmeta","optional","paypal","peggd","popescu","portuguese","powerpc","preview","published","readability","right","safari","schechter","schneirov","screenshot","shift","shortcut","simplenote","since","social","source","sponsor","spotlight","support","tuvbv'","taskpaper","terpstra","textile","thomas","thread","threads","tiger","twitter","unique","updated","updates","users","velocity","white","words","working","zachary","abyss","accepted","action","advanced","again","align","alongside","announcement","another","answer","aside","autocompletion","automatic","automatically","available","avoids","backlink","based","before","begin","begins","bettermess","between","blank","blockquote","blogs","bookmarklet","border","brackets","branches","brettterpstra","bring","brings","browser","buggy","build","bullet","bundled","button","cmcdiww","capabilities","center","changelog","changes","chrome","class","click","clipping","collections","color","comes","coming","command","compatibility","compatible","completed","content","contrast","creating","credits","creek","cursor","custom","customizable","customizations","customize","darrylhthomas","database","default","description","descriptions","design","designheresy","details","developed","development","different","difficult","directly","disabled","divider","dlbox","donate","donating","donations","double","download","editing","editor","effortlessly","elasticthreads","eloquent","email","endnote","endnotes","enter","entire","entry","everyone","everything","experimentally","extensions","external","fathom"]
},
{
"title": "nvremind",
"url": "/projects/nvremind/",
"tags": ["productivity"],
"date": "project",
"ts": "",
"summary": "A scheduled background task to scan nvALT notes for @reminder() tags and trigger notifications based on dates. It s grown to work with any folder of text or Markdown files, TaskPaper files and Day One entries. Yes, it s pronounced never mind. nvremind searches .md , .txt , .ft , .taskpaper and Day One entry files Remind tags are placed in the document in the format for a reminder on May 6th, 2013 at 8am Remind tags can use any prefix (not just @ ), as long as there is a character before remind Tags on their own line will cause the entire document to become a reminder, with the filename as the title and the content as the note (if the notification method supports notes) Tags on a line with other text will use that text as the reminder. The title can always be overwritten with the format Where is the location of your nvALT notes or other collection of text files. This command will output the results to the Terminal without other notifications, and will not modify the tags (-z argument). Set this up to run at intervals with your notification method of choice. I prefer launchd for this (via LaunchControl ), but you can schedule it any way you like. Sending HTML emails (including special Taskpaper processing) requires that MultiMarkdown be installed at . Download an installer package here . nvremind expects an ISO 8601 format date (2013-05-01) with optional 24-hour time (2013-05-01 15:30). Put anywhere in a note to have a reminder go off on the first run following that time. A quick TextExpander snippet can make adding them a breeze. By default the script will replace found @remind tags with @reminded tags containing the date the reminder was sent. Use the option to prevent any changes from being made to your file, although this can result in reminders being sent multiple times. You d need to manually update the files after handling the reminder. A document can contain multiple reminders with different dates. The script will check all of them and only modify the ones that are triggered. Future reminders in the same document will still be active after the run. Reminders on their own line with no other text will send the entire note as the reminder with the filename being the subject line. If a @reminder tag is on a line with other text, only that line will be used as the title and the content. If you include a double-quoted string at the end of the remind tag value, it will override the default reminder title. would create",
"keywords": ["'terminal","address","added","allow","apple","author","basic","brett","center","changelog","click","clicking","copyright","doctype","dependencies","details","display","displays","donate","download","dropbox","email","example","email","examples","folder","fixed","foldingtext","handle","ifttt","install","journal","label","launchagents","launchcontrol","library","license","licensed","lingon","links","markdown","mountain","multimarkdown","notification","notifications","options","output","override","plist","public","programarguments","propertylist","public","published","quick","remind","reminders","remove","runatload","sending","separate","specify","startinterval","tuvbv'","taskpaper","taskpaper","terminal","terpstra","testing","textexpander","updated","usage","verbose","where","works","absolute","actions","active","adding","address","allow","allows","alloy","alternate","although","anywhere","apple","archive","argument","array","assumes","author","available","background","based","because","before","brackets","breaks","breeze","brettterpstra","called","canceled","cancelled","captured","cause","center","changelog","changes","character","characters","check","choice","choose","class","clicked","close","collection","command","commas","contain","containing","contains","content","contents","control","converted","copyright","create","dates","dayoneapp","debugging","default","dependencies","description","details","devices","different","directory","dlbox","document","donate","double","download","email","emailaddress","emailed","emails","enables","encoding","entire","entries","entry","example","examples","exists","expand","expects","extension","fathom","filename","filenames","files","first","fletcherpenney","folder","format","formatted","formatting","found","github","gmail","grown","handling","height","hellip","hidden","highlight","highlighter","https","icloud","ifttt","ignoring","image","images","included","including","information","inside","install","installed","installer","integer","integration","intervals","issues","language","launchd","ldquo","leading"]
},
{
"title": "oTask",
"url": "/projects/otask/",
"tags": ["productivity"],
"date": "project",
"ts": "",
"summary": "This is a CLI for OmniFocus. I had an AppleScript/Ruby monstrosity that actually worked with TaskPaper, The Hit List, Things and OmniFocus, but that one got out of hand. I took the good parts of it, concentrated on OmniFocus and converted it to appscript . The result is OTask. I don t know how long appscript is going to work for us, and it s now a dead project. I make no promises. This version of oTask has been tested on Ruby 2.0 (Yosemite) and with OmniFocus and OmniFocus 2. Note: If you use Xcode 5.1 and have trouble installing the gem, see this post for a fix. OTask uses a custom syntax to allow entry of the various elements of an action in one line of text. The following formats can be used anywhere in the line, with the exception of the flag (!) which must be the last character on the line, preceded by a space. @context (fragment, no spaces) #project (fragment, no spaces) due(due date) (can be shortened as d(date)) create(creation date) (can be shortened as c(date)) (notes) ! (sets task as flagged) Contexts and project specifiers should not include spaces. The algorithm that is used will find the best match for the string you give it, so you only need to include enough of it to distinguish it from other contexts or projects. For example, if I were going to put an action directly into my Markdown QuickTags folder, I could just use #mdqt and it will find it. @corr will get me the correspondence context. Dates are entered in natural language format. You can type tomorrow, in 3 days, next tuesday, etc. You can also use +3 to set a date 3 days from the current day, +7 for a week, and so on. This will put a task into your inbox with the name Write a letter to mom. Nothing else will be set, it will wait there for you to pick it up. This creates a new task in a project called Single Tasks, with a context of errands , a due date of 3pm on the current day, and flags the task. The task will go to your inbox by default, and if provided project and context will be set. Your settings for automatic cleanup will determine what happens after that. Task elements not specified are left unset. The parameter gives us our feedback via Growl, which is handy if you re calling it from a background script or application launcher like Quicksilver or LaunchBar. This will create a task with a note. Everything in parenthesis is removed from the task name and placed into the notes of the action, sans parenthesis. Note that the due date prefix",
"keywords": ["action","applescript","author","below","brett","calling","command","contexts","copyright","create","dates","donate","editor","everything","example","github","growl","improved","inbox","installation","launchbar","license","licensed","markdown","maybe","notes","nothing","otask","omnifocus","quicktags","quicksilver","single","support","taskpaper","tasks","terpstra","write","xcode","yosemite","above","action","algorithm","allow","anywhere","applications","appscript","argument","attached","automated","automatic","available","background","called","calling","character","cleanup","clipboard","command","concentrated","containing","contents","context","contexts","converted","correspondence","create","creates","creation","custom","default","directly","distinguish","either","elements","email","enough","entered","entry","errands","example","exception","feedback","fetching","flagged","flags","folder","format","formats","fragment","function","fuzzy","gives","going","handy","happens","ignore","inbox","indexes","input","installed","installing","language","launcher","leave","letter","license","licenses","listing","lists","looks","match","meeting","methods","monstrosity","morning","natural","notes","otask","opensource","optional","options","otask","output","parameter","parameters","parenthesis","parts","paste","piped","placed","point","preceded","prefix","press","project","projects","promises","receive","removed","results","return","right","script","scripts","separated","settings","shell","shortened","shown","shows","space","spaces","specifiers","specifying","string","support","switch","syntax","tasks","tested","think","tomorrow","trouble","tuesday","unavailable","under","unset","usage","various","version","wanted","wherever","worked","write"]
},
{
"title": "Overtired",
"url": "/projects/overtired/",
"tags": ["podcasting"],
"date": "project",
"ts": "",
"summary": "My podcast with Christina Warren. Two ADHD nerds with lots to talk about. Check it out at overtiredpod.com .",
"keywords": ["check","christina","warren","nerds","overtiredpod","podcast"]
},
{
"title": "Pinboard to OpenMeta",
"url": "/projects/pinboard-openmeta/",
"tags": ["utilities"],
"date": "project",
"ts": "",
"summary": "This script is for people who want to take advantage of Pinboard while still being able to search their bookmarks in local Spotlight searches. It has the option to save bookmarks with a certain tag as search-friendly PDF files, but it doesn t attempt to replicate the full spectrum of Pinboard features. It s just a way to make your remote bookmarks locally searchable, available system-wide, and OpenMeta-compatible. I toyed around for a long time with using Safari bookmark files instead of webloc files. They let you store a larger preview image, and you can include full text from websites within the XML of the file. Lots of possibilities there. For many reasons, I decided to stick with these little webloc files. If I want fancier images and web text, I ll use Webbla , and if I want comprehensive full text search I ll use HistoryHound , both excellent programs in their own right. I want OpenMeta and simplicity, though. If I know I m looking for a bookmark from Pinboard, I can just go to Delibar and do some searching. The goal is to be able to include my web discoveries in larger searches on my Mac. First, put the script somewhere you can leave it, preferably somewhere in your system path. That s not a huge deal, though, because you ll be supplying an absolute path in most automation cases anyway. Once you have it situated, open Terminal and run . Now you can run the script from the command line to configure and test. When you run the script the first time (do it from the command line with ), it puts a configuration file at . It will let you know exactly where it is, and will automatically open it in your text editor. You must edit the configuration settings before you re ready to run it again. The configuration has options for all of the main features of the script, so these instructions are also going to be the tour. You can edit any of these options at any time. Note that the next time you run the script it will pull in up to 500 of your bookmarks, starting with the oldest. If you decide you didn t like a setting, you may want to trash those files and the database and start over. Try not to let that happen. user and password (string) Set these to your Pinboard credentials dateformat (string) Leave this as US if your local date format is . Set it to UK if your date format is . target (absolute path) This is where the webloc files will be collected. It works great with a Dropbox folder, but put it anywhere you like. On my system, I have",
"keywords": ["anyway","applescript","changelog","choosy","chrome","cocoa","comments","configuration","coverflow","delibar","delicious","donate","download","dropbox","features","firefox","first","github","growl","hazel","historyhound","instructions","introduction","leave","leopard","library","lingon","notes","openmeta","optional","paparazzi","pinboard","preferences","published","python","running","sqlite","stdout","safari","setting","setup","spotlight","store","target","terminal","uninstalling","updated","webbla","above","absolute","activity","additions","address","advantage","adventurous","again","agile","allow","annotated","another","anyway","anywhere","applied","appreciated","automatically","automating","automation","available","average","background","backup","because","before","below","blank","block","bookmark","bookmarking","bookmarks","boolean","bothers","bottom","browser","bucks","bugfixes","certain","change","changes","channels","check","choice","collected","collection","comes","command","comment","compares","compatible","comprehensive","computers","config","configuration","configure","convenience","couple","covered","create","created","creating","credentials","cross","custom","database","dateformat","debug","debugging","decide","decided","dedicated","default","defaults","defined","deletions","description","descriptions","determines","disable","discoveries","display","distracted","doesn","doing","download","downloading","easiest","easily","editor","either","enabled","enough","entire","error","essentially","everything","excellent","exist","expects","external","false","fancier","favicon","favorite","feature","features","field","filename","files","first","fixed","folder","force","format","found","friendly","fully","functionality","generally","generates","going","great","greatly","grouping","handier","handling","happen","haven","highly","hours","icons","image","images","imagine","import","imported","included","insertions","install","installed","instantly","instructions","integer","integration","interface","intervals","keeps","larger","latest","leave","level","links"]
},
{
"title": "Planter",
"url": "/projects/planter/",
"tags": ["extension","launchbar","productivity"],
"date": "project",
"ts": "",
"summary": "Planter takes in simple, indented text files to define the structure of the directory tree it s going to create. You pass it something like: Pipe indented (tabs or 2 spaces) text to the script e.g. `cat mytemplate | plant Create template.tpl files in ~/.planter and call them by their base name e.g. Create a text file in ~/.planter/site.tpl Call plant without input and it will open your $EDITOR to create the tree on the fly You can nest directories as deeply as you like. You can pass the indented list to it on STDIN (piping from another command), or run alone and it will open up your default editor and let you define the list on the fly. You can also use templates Create and add text files named [template].tpl , where [template] is the short name you ll call it with. Say I have ~/.planter/client.tpl , I can just run and it will read that template in and create the directory structure in whatever directory I m in when I run it. If there are non-template files in , you can reference them in templates and a copy of the file will be created at that point in the directory tree. For example, if you had an index.html, a style.css and a jquery.js file in your template folder, you could make a template like this: You can also use a very basic template variable system to add variable content. In your template, use where X is an integer. The number corresponds to the arguments passed on the command line after the template name, so is replaced with the first argument: If you want to specify variables for just some positions, use - or . for arguments in the command to force the default for that position. Set tags on created folder and copied items items by adding @TAGs at the end of the line in the template. To make a variable placeholder function as a tag, put the @ between the % and the replacement number at the beginning (e.g. or ). Unless the no-tagify option is used, variables identified as tags will have spaces removed and be lowercased. Tags set on a folder or file will replace existing tags. Running a plant after the folder already exists will not overwrite any folders, but will update/replace tags. The @ symbol is removed by default. To add a character prefix to ALL tags, use tag-prefix @ on the command line. Otherwise, just include any symbols or characters needed on a one-off basis in the arguments passed to a template, or include them in the template. Add comments in templates with // . This can be anywhere in a",
"keywords": ["changelog","create","creates","donate","download","editor","entirely","example","github","instantly","launchbar","planter","published","running","stdin","separate","tagging","templates","updated","variables","adding","alone","announcement","another","anywhere","appreciated","argument","arguments","assign","available","basic","basis","beginning","between","character","characters","client","command","comments","content","copied","corresponds","create","created","creates","customize","deeply","default","define","details","directories","directory","editor","example","execute","executed","exists","files","first","folder","folders","force","function","functionality","going","greatly","hashbang","identified","included","indented","index","ingored","input","integer","items","jquery","languages","lowercased","mytemplate","named","necessary","needed","nested","notifications","older","operations","optional","optionally","options","overwrite","passed","piping","placeholder","placeholders","plant","planter","planting","point","position","positions","prefix","processing","removed","replace","replaced","replacement","script","scripts","second","short","simple","spaces","specify","structure","structures","style","support","symbol","symbols","system","tagify","takes","template","templates","values","variable","variables","version","whatever","where"]
},
{
"title": "PodTagger",
"url": "/projects/podtagger/",
"tags": ["podcast","tagging","utilities"],
"date": "project",
"ts": "",
"summary": "PodTagger requires mid3v2 from the Python mutagen package. You can install it with pip . If you don t already have pip installed, use before running . The application version ( download below ) includes mutagen, so it will run without any additional requirements. PodTagger reads a YAML config file with defaults, and YAML headers on podcast show notes. Start by creating a default configuration file in called . If you run it without creating this file first, it will automatically create an empty config for you. Adding additional top-level keys with podcast names allows you to override settings on a per-podcast basis. If you only ever tag one podcast, you can just use the key/values. If you have additional podcast configurations, they extend the default, meaning that keys that aren t defined in that podcast section fall back to whatever is defined in . Thus, you only have to add keys for settings you want to override. As an example, here s my for Overtired and Systematic. As you can see, the Systematic values only override the title formats (see Format strings below) and add a logo. The Overtired values override the host tag, the logo, and the episode title format (the one used on the MP3, not in the show notes). The keys and use variables delineated by 2 percent symbols on either side: . The variable name can correspond to any keys defined, such as or . You can also include custom keys in your headers (see below) which are then available as variables. For example, my Systematic show notes include a key for , which I can then use in the format string: . PodTagger reads a YAML header from a file called in the same directory as the mp3 file you re tagging. 1 After PodTagger finishes, it will write out the show notes with the YAML removed to a file called . The rest of the file after the YAML headers can be any information you want. I use it for description, sponsor info, and show links, but it s for whatever you d post on a show landing page. Note that you can include a meta key, or just make an h1 or h2 ( or line) in the show note body. Either will generate the title and format it based on format strings in the configuration. Use the following command (along with optional flags) to run podtagger. The file must exist in the same directory as . 1.1.0 Add metadata at top of shownotes for title, duration, and filesize Various fixes and improvements 1.0.1 added command line options (debug, verbose, color, help) added",
"keywords": ["adding","automated","changelog","click","configuration","donate","download","either","format","github","markdown","notes","overtired","platypus","podtagger","published","python","support","systematic","updated","usage","various","added","allows","applies","automatically","available","based","basis","before","below","called","change","color","colorized","command","config","configuration","configurations","configured","contains","copied","create","creating","custom","debug","default","defaults","defined","delineated","description","directory","doesn","download","either","empty","episode","episodes","example","exist","expand","extend","filesize","finishes","first","fixes","flags","format","formats","header","headers","improvements","includes","information","install","installed","landing","level","links","meaning","metadata","moved","mutagen","names","notes","optional","options","output","overridden","override","overwritten","package","percent","podcast","podcasts","podtagger","reads","removed","requires","running","script","section","settings","shownotes","simple","sponsor","string","strings","symbols","tagging","target","templates","title","using","values","variable","variables","verbose","version","whatever","write"]
},
{
"title": "PopMaker",
"url": "/projects/popmaker/",
"tags": ["popclip","utilities"],
"date": "project",
"ts": "",
"summary": "PopMaker is an OS X app for generating PopClip extensions. It 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). It occurred to me after a couple dozen request for can you make a PopClip extension for this? that I could probably put the power in the hands of people who aren t necessarily comfortable editing PLIST files. 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. There s also an optional description field. This isn t really useful unless you re sharing the extension. 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 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. PopMaker creates two kinds of extensions right now. If I decide to push the project further, this will expand and ultimately include the ability to include custom scripts. 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 d think: surround selected text on either side with whatever characters you specify when generating the extension. You can use it to create Markdown extensions ( or ), CriticMarkup shortcuts, comment syntax, etc. It s simplistic, but a handy tool when you already have your hands off the keyboard to make a selection or you re working in a text field without handy things like auto-pairing. Create a Surround extension in",
"keywords": ["applications","author","changelog","contents","create","criticmarkup","donate","download","evernote","extension","extensions","finder","icons","install","installing","markdown","messages","plist","package","palette","popclip","popmaker","popclip","published","saving","search","surround","title","updated","abbreviation","ability","added","anywhere","areas","automatically","background","basic","basics","before","believe","below","black","bottom","button","certain","change","characters","checkbox","checked","choosing","click","collection","comfortable","comment","completed","compressed","configuration","consist","couple","create","creates","custom","customizable","decide","default","description","displayed","distributable","distribution","dozen","dropdown","edges","editing","either","escaped","example","expand","extension","extensions","field","fields","figure","files","filling","flexible","folder","generated","generating","handlers","hands","handy","helpful","icons","implicitly","import","inserted","install","keyboard","kinds","knowledge","launch","limited","local","necessarily","nvalt","occurred","opening","optional","optionally","package","pairing","palette","people","pixels","point","prefix","prevents","primarily","project","replaces","required","resulting","results","right","saving","scheme","scope","scripting","scripts","search","searches","seconds","selected","selection","sharing","short","shortcuts","shown","simplistic","simply","solid","space","specify","square","string","style","substituting","suffix","surround","surrounding","switch","syntax","texting","textingabbreviations","think","title","transparent","tweak","types","under","unzip","usage","useful","variable","verbatim","version","whatever","white","whitespace","working","zipped"]
},
{
"title": "QuickQuestion",
"url": "/projects/quickquestion/",
"tags": ["productivity"],
"date": "project",
"ts": "",
"summary": "The script and related extensions are designed to keep an archive of files with questions as the filename and answers as the content. It works well with Notational Velocity and nvALT, but can function as an archive of knowledge with nothing but a Mac and a command line. Scripts are included for Quicksilver, LaunchBar and Alfred, as well as a command line tool. The story behind the script is: I forget everything. I forget what I was working on last night. I forget where I left important things. I forget how I solved a major problem and have to work it out again next time it comes up. I forget where I saved the perfect settings I found for h.264 compression. You get the picture. So I ve started building an archive of plain text files with questions and answers, and a system which makes it easy to add new knowledge at any time. The question format makes it easy to query, even when I don t remember the answer at all. The system is very simple. A bunch of plain text files, each titled with one question and containing one answer. Searching and sorting is handled my the Spotlight interface with scripts and extensions that focus the search to a narrow scope with predefined options. The knowledgebase that s built is bulletproof and portable, scriptable and easily searchable. Plus, it works the same way as Notational Velocity, so they make a great pair. I use it with nvALT and sync to Simplenote and Dropbox, which means I can enter new questions and their answers from any mobile device or remote computer, in addition to being able to use the command line tool, Quicksilver actions, LaunchBar actions and Alfred extensions. It keeps me sane. Command line Put the script into a folder in your path and make it executable with . Edit the script to set the location of your notes folder and the extension you use. You may want to set a different preferred question prefix if you already have one (or don t want filenames that need constant escaping). Quicksilver Move the two .scpt files into . These scripts require that the above command line script is in place and need to be edited with the proper full path to the script. LaunchBar Move the two .scpt files into . These scripts require that the above command line script is in place and need to be edited with the proper full path to the script. Alfred The Alfred extensions are standalone and do note require the script to be installed. Simply import the extensions into Alfred and the and commands will be",
"keywords": ["actions","alfred","allow","annoying","answer","avoid","brett's","bugfixes","configuration","changelog","clean","click","color","colors","command","composing","config","configuration","confirm","console","docker","dropbox","editor","encoding","enter","error","example","extension","filename","fixed","formatting","frozen","general","github","github","globbing","handle","headline","howzit","improved","iterm","installation","invalid","launchbar","library","linux","markdown","merge","missing","modify","multiple","notes","notational","notes","offer","optional","paginate","paypal","positional","prefix","press","querying","quick","quickquestion","quicksilver","readme","redacting","refactor","remove","rename","reorganize","replace","running","stdin","scripts","searching","simplenote","simply","space","sponsor","spotlight","support","title","topic","template","think","topic","topics","travis","unwritable","usage","users","variables","velocity","where","windows","xxxxxx","above","absolute","accepting","access","accessible","action","actions","activate","adding","additionalmeta","again","agnostic","align","allow","alphanumeric","alternate","ambigous","another","answer","answered","answers","anybody","appearance","appreciated","archive","argument","arguments","aside","assumed","attempting","automatically","available","avoid","background","because","before","began","beginning","beginswith","behind","bindings","block","border","brand","broad","build","building","buildnote","buildnotes","built","bulletproof","bunch","button","center","change","changelog","characters","chmod","choice","choose","chooser","class","clean","cleaner","cleaning","cleanup","clear","clipboard","close","cluttering","codes","colons","color","coloring","comes","command","commands","common","compatibility","compatible","completions","composing","compression","computer","config","configuration","confined","confirmation","constant","contain","contained","containing","content","contents","continue","contractions","control","copied","couldn","create","created","creating","creation"]
},
{
"title": "RegExRX2MD",
"url": "/projects/regexrx2md/",
"tags": ["markdown"],
"date": "project",
"ts": "",
"summary": "If the argument is a directory, all files in the directory will be processed and output to the destination (which defaults to ). If the argument is a single file, only that file will be processed. Markdown filenames will be based on the title of the RegExRX file, either from the built-in name field, or from the filename if it s untitled. You can specify a prefix for filenames using the option. For example, using would cause to create as the Markdown output file. The default template outputs notes as block quotes and snippets as Ruby fenced code blocks. You can adjust this by using a custom ERB template. Just output the default template using , save it to a new file and edit as needed, then pass the new file using . The template file must be named with an extension. 1.0.0",
"keywords": ["change","changelog","click","converts","description","github","installation","markdown","options","regexrx","semantic","snibbets","support","unreleased","usage","versioning","adheres","adjust","argument","based","block","blocks","built","cause","changes","containing","create","custom","default","defaults","destination","directory","documented","documents","either","errors","example","expand","extension","fenced","field","filename","filenames","files","format","matching","named","native","needed","notable","notes","output","outputs","prefix","processed","project","quotes","single","snippets","specify","subdirectory","template","title","untitled","using","viewer"]
},
{
"title": "reiki",
"url": "/projects/reiki/",
"tags": [],
"date": "project",
"ts": "",
"summary": "Reiki ( GitHub ) a bash function you can call with the command is a shortcut for running rake tasks with arguments. No brackets, just spaces and commas (and colons to separate serial tasks). This is currently working wonderfully for me, but I m open to pull requests and the project will develop further if my needs expand. I get a little crazy with my Rakefiles in cases where it s my command central, such as my Jekyll blog or my app Marked 2 where I need to perform a wide variety of tasks with various arguments and sequences. Typing out task names with arguments in Rake s command line syntax can be tedious with square brackets, commas, quoted arguments, etc. I build Reiki for my own sanity. I get that most people don t abuse Rakefiles to the extent that I do. You probably don t need this if you ve never made a TextExpander shortcut to fill in tedious task names. Reiki is called with followed by the task or fragment of a task (fuzzy matched), followed by task arguments, commas separated, and optionally more tasks, separated by colons. If the first argument to fully matches a rake task and there are no other potential matches, it runs it with any following arguments as arguments for that task (e.g. becomes ). If there is more than one possible match, it checks to see if the second argument makes sense as . If that s the case, it runs that with additional arguments. If only the first letter(s) of a task are provided, it guesses and checks before running (e.g. becomes ). Additional arguments are assumed to be a quoted string unless there are commas, in which case it combines them and automatically quotes only resulting arguments with spaces in them (e.g. runs on my blog, and the task takes an argument and a git commit message). You can separate multiple (serial) tasks with a colon (:). Arguments after a task and before a colon are treated as arguments to each task. Multiple tasks are run by rake as a series. Reiki can automatically run the first match, or it can be set to verify with a question on the command line if there are multiple matches (or forced to always verify with the quiet option). A timeout can be set on the verification to automatically run if no response is provided. If your Terminal supports color, output will be highlighted. If not, you ll get clean output with no escape sequences. When loaded, it will define the command. Helpers are defined with prefixes as a namespace. If you use Bash-it, you can just drop it",
"keywords": ["arguments","configuration","convoluted","defaults","download","environment","github","helpers","installation","jekyll","marked","multiple","options","rakefile","rakefiles","reiki","support","terminal","textexpander","typing","usage","abuse","anyway","argument","arguments","assumed","automatically","available","becomes","before","brackets","build","called","central","change","checks","clean","colon","colons","color","combines","command","commas","commit","configuration","configure","crazy","default","defaults","define","defined","develop","development","disable","download","environment","escape","example","expand","experimental","figure","first","folder","followed","force","forced","found","fragment","fully","function","fuzzy","guesses","guessing","highlighted","issues","letter","little","loaded","login","makes","match","matched","matches","matching","message","modifying","mostly","multiple","names","namespace","necessary","needed","needs","optionally","options","original","output","override","overriden","people","possible","potential","prefixes","profile","project","quiet","quoted","quotes","reiki","reporting","requests","response","resulting","running","sanity","script","second","seconds","section","sense","separate","separated","sequences","serial","series","setup","setups","shortcut","shortcuts","silent","simplified","source","spaces","square","starting","string","supports","switches","syntax","takes","tasks","tedious","terribly","timeout","treated","using","variables","variety","various","verbose","verification","verify","where","wonderfully","working","works"]
},
{
"title": "SearchLink",
"url": "/projects/searchlink/",
"tags": ["automator","blogging","markdown","productivity","service","utilities"],
"date": "project",
"ts": "",
"summary": "SearchLink is a System Service (Quick Action) for macOS which searches multiple web sources and automatically generates Markdown links for text. It allows you to write without leaving your editor to run web searches for the items you want to link to. It s great for blogging, and excellent for creating podcast show notes, among other things. Run a quick search on a single selection, and have the selection replaced with the resulting url (and optional title) as a Markdown inline link, a Markdown reference, or just a plain url. Run a single search and have the results put on your clipboard, perfect for using from scripts and launchers (e.g. LaunchBar or Alfred). The bracket format, which allows you to just write, marking things to link as you go. When you re done, you can run it on the full document and if your queries were good have your links generated automatically without ever opening a browser. This has replaced the Auto-link web search service in the Markdown Service Tools . The difference is that you can now mark links and specify how they should be searched, as well as provide alternate query terms for linked text. More from "SearchLink Tips" SearchLink Basics 2019/12/16 SearchLink: Next Steps 2019/12/23 SearchLink: Checking your work 2020/01/08 SearchLink -- browser history, bookmarks, and Pinboard 2023/01/16 SearchLink -- better searches, better results 2023/01/16 Browser history, bookmarks, and Pinboard search: There will likely be updates to this as I solve more problems, so keep an eye on this page for new versions. The current source code is available on GitHub . SearchLink v2.3.65 Download SearchLink v2.3.65 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 01/16/24. Changelog Donate More info If you re interested in installing SearchLink as a command line tool, see the wiki . All of SearchLink s searches are defined using a plugin architecture . You can see more examples and fodder for building your own in the SearchLink Plugins repository . With the AppleScript below saved to , you can use SearchLink as a launcher for the web. Load the action in LaunchBar, type Space and enter a SearchLink simple query (just text with optional !arg at the beginning). When you hit Enter it will grab the first link and load it in the Open URL action. Enter again will open it in your browser, ⌘C will copy it to your clipboard. Note that you don t need the normal !! at the end of the",
"keywords": ["aaron","abstract","accomodate","accurate","action","actions","added","alfred","allow","amazon","answers","apple","applescript","array","attempting","authenticate","automatically","avoid","barrel","basics","bonus","brave","brett","browser","changed","cache","changelog","check","checking","chromium","click","command","config","convert","count","crafts","creating","custom","database","decor","detect","donate","download","duckduckgo","enter","errant","error","fixed","facebook","fallback","feature","firefox","genius","github","google","htmlcurl","headers","homebrew","hotfix","improved","ignore","including","instagram","instant","introduction","jsoncurl","latest","launchbar","library","linkedin","lyrics","markdown","martha","mastodon","method","microsoft","movie","multiple","music","output","overly","pbifzh","parsing","partial","pinboard","plist","plugins","point","published","query","quick","readme","recipes","refactor","refactoring","refine","remove","removing","rename","replaced","requires","restore","restored","running","search","silent","spotlight","stdout","safari","seachlink","search","searchlink","searches","searhlink","service","services","shortcuts","shotgun","sierra","simpler","single","skipped","social","space","spotlight","stackoverflow","steps","stewart","store","support","surround","switch","switched","system","tuvbv'","templating","terpstra","testing","tomben","tombener","tools","twitter","unable","unprintable","updated","using","video","wikipedia","wordnik","youtube","aawerg","absolute","accepted","accepts","access","accurate","across","action","active","added","adding","adjusted","advanced","afari","affiliate","again","allow","allowing","allows","alone","alternate","amazon","among","angle","annotations","answer","appearance","appended","apple","applescript","applications","architecture","argument","array","aspell","attribute","authentication","automatically","automation","automator","available","avoid","backup","backward","basics","becomes","before","beginning","below","binary"]
},
{
"title": "Shortly",
"url": "/projects/shortly/",
"tags": ["mysql"],
"date": "project",
"ts": "",
"summary": "This is a fork of Shorty by Mike Cao, a simple URL shortener for PHP. Shortened URLs are 301 redirects which will still display open graph previews when shared on social media. It s like bit.ly but you own it and it costs nothing but a domain registration. Download and extract the files to your web directory. Use the included file to create a table to hold your URLs. Configure your webserver. For Apache, edit your file with the following (rename ht.access to .htaccess): Set to the base url of your shortener. Include protocol but no trailing slash. By default urls from any domain can be shortened. To limit shortening to a specific domain, set in and add a domain for (domain only, no protocol or trailing slash). If a path is passed that contains hyphens or is otherwise not found, Shortly will forward to the url specified in , with the path appended to the base url. For example, if is and somebody tries to access , the request will be forwarded to . If you would like a query string (such as Google UTM parameters) appended to urls before shortening, set . If you re using this as a general shortener and expect to pass it urls that already contain query strings, leave this empty ( ) to avoid double query strings. Set mySQL database name, host, user, and password in the setting. By default, Shortly will output a plain text version of the shortened URL. This is ideal for calling from scripts and command line applications. If you d like to have a full HTML link tag output, add to your call. To generate a QR code for a shortened URL, use . By default this will generate a 200x200px PNG file. You can use to set a size between 100 and 500 pixels if desired. The possible formats are , , , , and . XML and JSON responses will contain keys for and . The mySQL database of shortened urls will contain basic analytics such as hit counts and access dates. There is currently no interface for displaying this information. Note that when you share a shortened URL to social media, the preview generators for those sites will repeatedly make hits on the URL. Shortly makes no distinction between those and actual visits, so these numbers can t be used for sales analytics or anything like that, other than to see how widely your shortened url may have spread. By default anyone is allowed to enter a new URL for shortening. To restrict the saving of URLs to certain IP addresses, use the function: 1.0.0 Your support is greatly appreciated! Or",
"keywords": ["accept","allow","analytics","apache","changelog","changes","click","config","configure","download","generating","github","google","installation","license","nginx","shortened","shortly","shorty","support","whitelist","access","addresses","allowed","analytics","anyone","appended","appending","applications","appreciated","avoid","basic","before","between","calling","certain","character","codes","command","comments","contain","containing","contains","counts","create","database","dates","declaration","default","desired","directory","display","displaying","distinction","domain","double","empty","enter","example","expand","expect","extension","extract","files","formats","forwarded","forwarding","found","function","general","generators","graph","greatly","guessable","htaccess","hyphens","ideal","included","information","installation","interface","leave","license","licensed","limit","limiting","location","longurl","makes","media","mysql","nothing","numbers","opens","options","output","parameter","parameters","passed","password","paths","pixels","possible","preview","previews","project","protocol","query","randomizing","redirected","redirects","registration","rename","repeatedly","repository","responses","restrict","return","sales","saving","scripts","server","setting","share","shared","short","shortened","shortener","shortening","simple","simply","sites","slash","social","somebody","specific","spread","string","strings","support","table","trailing","tries","under","using","version","visits","webserver","widely"]
},
{
"title": "Sideshow",
"url": "/projects/sideshow/",
"tags": ["extension","music"],
"date": "project",
"ts": "",
"summary": "Sideshow (previously Sidecar) is a minimalist-yet-oversized jacket for Simplify . Feel free to hack around with it, the source is available on GitHub . Sideshow calculates screen size to provide a full-height jacket on any display. The width of the player, font sizes, etc. will all adjust to provide a fairly uniform experience across display sizes and types. It calculates the length of the text for the artist and title displays, adapting the placements to show as much of possible of both. Click anywhere on the jacket to toggle play/pause Shift-click to skip to the next track Command-click anywhere along the progress meter to set the play position When hovering over the jacket, controls appear for previous track, play/pause, and next track Here s a slightly older video of (previous version, Sidecar) in action. Sideshow 3.0+ requires Simplify 3.4+. Sideshow v3 Download Sideshow v3 An adaptive full-screen jacket for Simplify 3.0+. Published 06/17/13. Updated 08/29/17. Changelog Donate More info Version 2.0+ only works with Simplify 2.7+. An even older version of the download is available here if for some reason you re not updating Simplify. Sidecar v2.1 Download Sidecar v2.1 A jacket for Simplify 2.7+ and 27-inch (2560x1440) monitors. More sizes coming soon. Published 06/17/13. Updated 06/17/13. Changelog Donate More info 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 More info You know, for all the things I do on the side. Or me on GitHub!",
"keywords": ["changelog","click","command","donate","download","features","github","published","shift","sidecar","sideshow","simplify","updated","version","across","action","adapting","adaptive","adjust","anywhere","appear","artist","available","calculates","click","coming","controls","display","displays","download","experience","fairly","height","hovering","jacket","length","meter","minimalist","monitors","older","oversized","pause","placements","player","position","possible","previously","requires","screen","sizes","slightly","source","title","toggle","track","types","updating","version","versions","video","width","works"]
},
{
"title": "Slogger",
"url": "/projects/slogger/",
"tags": ["extension","social"],
"date": "project",
"ts": "",
"summary": "If you are upgrading from a version prior to 2.0.12, please remove the RSSLogger section from and regenerate it by running slogger again. A new section will be added in addition to RSSLogger called Bloglogger. RSSLogger now logs all entries for the timespan as a single digest entry, whereas Bloglogger loads each item found as an individual post. Slogger indexes various public social services and creates Day One ( http://dayoneapp.com/ ) journal entries or plain text Markdown files for them. It allows you to keep a personal journal that collects your online social life automatically, all in one place. Slogger 2.x uses a plugin architecture to allow easy extension Default plugins: Github new plugin, supercedes Gist logger. Logs push, watch and gist activity Flickr images uploaded in the last 24 hours, each as an individual post Can handle multiple accounts Last.fm Scrobbled songs for the current day updated to grab more songs Blog entries designed to pull in your blog posts with leading image and excerpt (optionally markdownified). Handles multiple feeds RSS Feeds logs any feed entries for the given timespan as a digest entry handles multiple feeds Twitter Tweets and Favorites for the day as digest entries handles multiple Twitter accounts Instapaper Unread and/or individual folders Foursquare Checkins for the day Pinboard Daily digest with descriptions optionally include bookmark tags in entry Pocket Digest list of links read and unread posted to Pocket Goodreads books marked read for the day, one entry each with book cover image, ratings and your review. Inserted at the date marked finished. App.net App.net posts for the current day OmniFocus complete tasks for the day There are additional plugins in the default plugins_disabled folder. They can be enabled by copying them to your plugins folder. These are typically disabled by default because they require advanced setup or have limited use for most users. Read the headers in each plugin file for additional details. Some of the additional plugins available: GetGlue Google Analytics (advanced setup) Gist SoundCloud Strava Slogger can be called with a single argument that is a path to a local image or text file, and an entry will be created containing its contents. You can use this with a folder action or launchd task to add files from",
"keywords": ["analytics","attribution","bloglogger","brett","check","checkins","command","commons","create","creative","daily","dayone","default","description","digest","download","dropbox","favorites","features","feeds","flickr","foursquare","getglue","github","gittip","github","goodreads","google","handles","ifttt","inserted","install","instapaper","journal","launchcontrol","license","lingon","markdown","noncommercial","omnifocus","pinboard","plugin","plugins","pocket","rsslogger","scrobbled","sharealike","slogger","soundcloud","strava","support","terpstra","tweets","twitter","unported","unread","updating","upgrade","usage","users","accounts","action","actively","activity","added","adding","advanced","affects","again","allow","allows","anymore","anywhere","architecture","argument","authorization","automate","automatically","available","avoid","based","because","bookmark","books","brackets","break","called","calls","capture","certain","change","changes","checking","clone","coffee","collects","coming","command","commands","completes","config","configuration","configured","conform","connected","constant","containing","contains","contents","contributing","copying","cover","create","created","creates","credentials","dashes","dayone","dayoneapp","default","defaults","defined","deleting","descriptions","designed","details","develop","developing","development","digest","directly","directory","disable","disabled","doesn","double","download","drive","easier","editing","enabled","enough","enter","entries","entry","errors","example","excerpt","executable","execute","extension","false","features","feeds","filename","files","filled","finished","first","fixes","folder","folders","format","formatted","formatter","formatting","found","function","generally","global","handle","handles","handy","hashtags","headers","history","hours","icloud","ignored","image","images","import","imported","indexes","individual","individually","initial","install","installation","iterate","journal","latest","launchd","leading","licensed","limited","links","loads","local","logger"]
},
{
"title": "Snibbets",
"url": "/projects/snibbets/",
"tags": ["markdown"],
"date": "project",
"ts": "",
"summary": "Snibbets allows me to keep code snippets in raw files, not relying on a dedicated code snippet app. I can collect and edit my snippets using a text editor, nvALT (nvUltra), or simply by saving snippets from my clipboard to a text file using *NIX redirection on the command line. I can add descriptive names and extended descriptions/notes to code snippets using standard Markdown. What Snibbets does is simply allow a quick search for a specific snippet that I can either output to the terminal, pipe to my clipboard, or access via LaunchBar (via the included LaunchBar Action). It s basically a wrapper for and with the ability to separate code blocks from other text in my Markdown files. Snibbets is designed to work with a folder containing Markdown files. Each Markdown file can have somewhat flexible formatting, as long as there s at least one code block (either indented by 4 spaces/1 tab or fenced with backticks). I recommend using filenames with multiple extensions (ending with your markdown extension), primarily to define the syntax for a snippet. For example, a css snippet would be , a ruby snippet would be . This can aid in searching and makes it easy to script things like adding language tags automatically. The name of the file should be the description of the snippet, at least in the case where there s only one snippet in the document. Call it javascript url parser.js.md or similar. If I got the snippet from StackOverflow, I give it a name based on the question I searched to find it. Be descriptive. You can combine multiple snippets in a file, though. For example, I have a file called Ruby hash snippets.rb.md . That file contains an array of useful snippets, and each one has a descriptive title in an h3 header above it. Those (ATX) headers are used to split the file, and when you search from the command line, you ll get a menu of all of the snippets in the selected file. (And if you have fzf or gum installed, you can quickly filter through with fuzzy searching and find exactly what you need.) If a file contains multiple snippets, they should be separated by ATX-style headers (one or more ) describing the snippets. Additional descriptions and notes can be included outside of the code block. Notes are not output on the console, only the code is displayed. If you want a note to be included in console output, make it a blockquote by preceding it with . You can include MultiMarkdown metadata in your snippets, either in a YAML block or just at",
"keywords": ["action","apple","changelog","click","collecting","command","configuration","configure","creating","default","dependencies","github","highlighter","highlighting","homebrew","however","install","installation","installing","launchbar","linux","location","markdown","multimarkdown","notes","optionally","options","pygments","readline","running","stdout","saving","selected","setting","settings","skylighting","snibbet","snibbets","snippet","snippets","stackoverflow","support","sylighting","syntax","tools","usage","windows","ability","above","access","accessing","across","action","added","adding","adjust","affects","ahead","allow","allowing","allows","angle","another","array","asking","automated","automatically","available","backticks","banging","based","basic","before","below","block","blockquote","blockquotes","blocks","bracket","bundle","called","chance","choice","choose","clipboard","collect","color","command","commmand","config","configuration","configure","configuring","console","contain","contained","containing","contains","content","contents","copied","copyable","creating","dedicated","default","defaults","define","defined","defining","definitely","describe","describing","description","descriptions","descriptive","designed","determined","determines","development","different","directory","disabled","display","displayed","displaying","displays","document","doesn","editing","editor","either","enabled","ending","everything","examining","example","expand","extended","extension","extensions","extra","false","feature","feels","fence","fenced","figure","filename","filenames","files","filter","filtering","first","flags","flexible","folder","force","formatting","found","function","fuzzy","generally","generated","great","handles","header","headers","highlighted","highlighter","highlighting","identifier","implementation","included","incorporated","indented","input","install","installed","interactive","javascript","labels","lacks","language","languages","later","lexer","lexers","limited","looking","macos","makes","making","managers","manually","markdown","match","matches","menus","metadata","method"]
},
{
"title": "Brett's Soundtrack",
"url": "/projects/soundtrack/",
"tags": ["music"],
"date": "project",
"ts": "",
"summary": "Just some toying around with APIs from Spotify, Apple Music, and Last.fm. Check it out at /soundtrack .",
"keywords": ["apple","check","music","spotify","soundtrack","toying"]
},
{
"title": "Systematic",
"url": "/projects/systematic/",
"tags": ["podcasting"],
"date": "project",
"ts": "",
"summary": "My main podcast , interviewing people from all walks of life about what makes them tick.",
"keywords": ["interviewing","makes","people","podcast","walks"]
},
{
"title": "T-shirts",
"url": "/projects/t-shirts/",
"tags": ["clothing","commercial"],
"date": "project",
"ts": "",
"summary": "A selection of T-shirts designed by Brett, available through TeeSpring .",
"keywords": ["brett","teespring","available","designed","selection","shirts","through"]
},
{
"title": "TabLinks",
"url": "/projects/tablinks/",
"tags": ["extension","markdown","productivity","safari"],
"date": "project",
"ts": "",
"summary": "TabLinks is a quick experiment, designed to meet my own needs. It copies the link information for every tab open in Safari, and outputs them as a list based on a user-defined template. You can use the following variables to define your link style in the template: Default template presets are included, accessible through the Presets button. Clicking the links once will select the whole block, as will the Select All button. Double-clicking the links will make them editable, and changes are saved when you click or tab out of the box. 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 More info Your support is greatly appreciated! Or me on GitHub! 3.0.0",
"keywords": ["changelog","clicking","contextual","default","donate","double","download","extension","fewer","github","google","links","markdown","presets","producthunt","published","redesigned","removes","safari","tablinks","updated","accessible","appreciated","based","block","break","button","buttons","changes","chrome","click","clicking","copies","copying","define","defined","designed","editable","experiment","gathers","greatly","icons","included","index","information","interface","links","needs","nvalt","outputs","parameters","presents","preset","presets","query","quick","saved","style","support","template","through","title","variables","whole","window","within"]
},
{
"title": "TagBak",
"url": "/projects/tagbak/",
"tags": ["tagging"],
"date": "project",
"ts": "",
"summary": "TagBak can store tags for all files in the current folder and all subfolders. It can then restore the tags to the state they were in at the last run. Files which had existing tags will have any current tags replaced. Files that didn t have tags at the time of the run but have since been tagged will be left with their new tags. TagBak is intended for use with services that do not currently preserve tag data. If you run a remote backup, for instance, and the service strips tags, you can run TagBak prior to a backup and have the metadata for the backed-up files stored with them. Upon restore, TagBak can read the metadata file and restore the state of the tags as they were at the time of backup. 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. Put the script in a folder in your PATH, such as . Make it executable by running . Optionally install the utility (see below). will create a file in the current directory (or one specified with an argument, e.g. ). Unless the switch is given, a progress readout will show the current status of the storage task. On my MacBook Air, it takes about 10 seconds per 100 files and the resulting file is about 10k per 100 files. will find the nearest file, looking up the folder tree if necessary, and restore the tags from the current folder down the tree. will give you a file list, total bookmarks, and file size for the neartest file. If the bookmark utility is installed in , TagBak will store bookmark information with the metadata. This makes it possible to restore tags on files that have moved or been renamed, but only within the local drive and only if their file data hasn t changed. Restoring from a backup service or an external drive will destroy this data, so it s only a valid precaution in a few cases. Storing this data doesn t cause any major slowdown and the resulting stash sizes are still of a very manageable size, so it doesn t really hurt to include it. None. Any data loss or failure to perform is not my responsibility. Run at your own risk. That being said, the storage process only affects the file and if it s aborted, a backup of that file is restored. The restore process only changes the tag attribute of the affected files, so at worst, you might fail to restore your tags, which in most cases doesn t leave you",
"keywords": ["author","brett","copyright","download","files","github","guarantee","installation","license","licensed","macbook","michael","optionally","restoring","simons","storing","support","tagbak","terpstra","usage","aborted","affected","affects","another","appreciated","argument","attribute","backed","backup","before","below","bookmark","bookmarks","cause","changed","changes","click","command","commit","create","destroy","directory","doesn","double","drive","endpoint","executable","external","files","folder","greatly","hooks","information","inspired","install","installed","instance","intended","leave","license","licenses","local","looking","major","makes","manageable","metadata","moved","nearest","neartest","necessary","needed","opensource","options","position","possible","precaution","process","pulling","pushing","readout","receive","remote","renamed","replaced","repositories","repository","responsibility","restore","restored","resulting","running","script","seconds","service","services","since","sizes","slowdown","stash","status","storage","store","stored","strips","subfolders","support","switch","tagged","takes","under","unzip","utility","valid","within","worse","worst"]
},
{
"title": "TextExpander Tools",
"url": "/projects/te-tools/",
"tags": ["markdown","productivity","textexpander","utilities","webapps"],
"date": "project",
"ts": "",
"summary": "The TextExpander groups below now use a custom prefix system which allows you to define your own prefix for the snippet abbreviations. Click the link next to a group to get a download or Add from URL link with your chosen prefix. Use the URL by clicking the plus symbol under the Groups panel in TextExpander and choose Add group from URL. Paste your custom URL in the dialog that pops up. Set your update settings for the group as desired. You can also download the .textexpander file directly and install it by double clicking (note that you won t get automatic updates using this method). A set of snippets for working in AppleScript editor. Following a trigger with a space assumes it s on one line, a dash creates a block Markdown workflow enhancement snippets, especially handy in TextExpander touch on the iPhone and iPad. [ More info ] Just a few characters such as ⌘, ⌥, ⇧, etc. To be expanded. Additional characters courtesy of Thomas Borowski . Modify the abbreviations in this group to create words that automatically censor (%$ !*#¡C6;ø). Lorem ipsum snippets generated using various online and local services While some of these will work with no additional requirements, there are a few in here that uses a similar method to Dr. Drang s solution , and requires a text file located at (and another at ~/words/alice.txt, if you feel like it). It also requires the ruby gems raingrams (random text generation) and maruku (for HTML output), see here for more information . [ More info ] Some miscellaneous tools for clipboard actions, Markdown tools, etc. [ More info ] CSS3 shortcuts for transitions, shadows, rounded corners, etc. Some common folders that I use in support emails. They also work in Go To Folder mode in Finder (Command-Shift-G). [ More info ] Help fight the growing epidemic of developer caffeine withdrawal: You can make a difference for just pennies a day. Or me on GitHub!",
"keywords": ["applescript","borowski","brett's","characters","click","command","cursed","drang","editor","filesystem","finder","folder","github","greeking","groups","ipsum","lipsum","lipsums","lorem","markdown","modify","movie","paste","paypal","random","randomized","shift","snippet","sponsor","support","textexpander","thomas","tools","users","while","abbreviations","action","actions","again","alice","align","allows","another","applescript","aside","assumes","automatic","automatically","below","block","border","button","caffeine","censor","center","change","characters","choose","chosen","class","clicking","clipboard","common","corners","courtesy","create","creates","cursed","custom","dammit","darwin","define","desired","developer","dialog","difference","directly","dissociated","donate","donating","double","download","editor","emails","enhancement","epidemic","especially","expanded","experiments","favorite","fight","filesystem","filler","flavors","folders","gathered","generated","generation","generator","github","greeking","group","groups","growing","handy","height","hidden","highlighter","https","iosmarkdown","iphone","iframe","index","information","input","inputtext","install","ipsum","label","language","ldquo","leancrew","light","lipsum","lipsums","local","located","lorem","markdown","maruku","method","miscellaneous","movie","navigation","occurrence","online","output","panel","paypalbutton","paypalform","pennies","plaintext","position","prefix","quote","quotes","radius","raingrams","random","randomized","rdquo","recent","relative","requires","rouge","rounded","rsquo","services","settings","shadows","share","shortcuts","similar","smilesoftware","snippet","snippets","solution","space","sponsor","sponsors","strong","style","support","symbol","system","textexpander","thomasborowski","title","titles","tools","topic","touch","transitions","trigger","trunc","ttscoff","twitter","under","updates","using","value","various","weekday","width","withdrawal","words","workflow","working"]
},
{
"title": "TitleCase",
"url": "/projects/titlecase/",
"tags": ["writing"],
"date": "project",
"ts": "",
"summary": "This is 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 title 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": ["'http","example","fixes","ignores","notes","omnifocus","preserves","readme","brettterpstra","called","casing","class","comments","common","containing","convert","converted","decoding","expanded","highlight","highlighter","https","integration","intercaps","language","manipulation","needed","nothing","parameter","plaintext","point","requests","response","returns","rouge","rules","services","simple","string","terms","think","title","titlecase","titlecase'","valuable","words","workflows"]
},
{
"title": "Titler Service",
"url": "/projects/titler/",
"tags": ["markdown","service","utilities"],
"date": "project",
"ts": "",
"summary": "This is a System Service called Titler that complements the Markdown Service Tools . It does what it says on the label: finds URLs in selected text and adds titles to them based on the page title. It also adds Amazon and iTunes affiliate tokens, cleans out referrer junk, and has the ability to neatly truncate titles at word breaks and with proper closing punctuation based on a maximum length setting. Download below , unzip, and double click the included Services ( extension) to install. 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 t want affiliate links, just delete the contents of the keys for them. The settings are all documented in the config file. Now just select text and containing some naked urls. Right click, choose a Titler service from the menu, and titles will be added in inline Markdown format. The regular Titler service. It finds all urls in the text. If they 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. Extract Links will gather all the URLS in your selection and output them as a bulleted list with titles in inline Markdown format. URLs are affiliatized as needed and tracking junk is removed. Your selection is left alone and the results are put on your clipboard. It will notify you (on 10.9+) when it s finished. Affiliatize will skip finding titles and just replace any iTunes or Amazon links it finds with versions containing your affiliate tokens. All of the affiliatization removes existing affiliate tokens (yours or other s) as part of the process, unless you have no affiliate tokens configured, in which case it will skip the process entirely. 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 More info",
"keywords": ["affiliatize","amazon","changelog","donate","download","extract","flavors","github","links","markdown","published","right","searchlink","service","services","support","system","titler","tools","updated","ability","added","affiliate","affiliated","affiliatization","affiliatized","alone","appends","based","behavior","below","brackets","breaks","bulleted","called","change","choose","cleaned","cleans","click","clipboard","closing","complements","config","configured","containing","contents","create","default","development","directory","documented","double","entirely","extension","finding","finds","finished","first","format","gather","itunes","identical","included","inline","install","label","leaves","length","links","maximum","naked","neatly","needed","output","parenthesis","process","proper","punctuation","quotes","referrer","regular","removed","removes","replace","results","selected","selection","service","setting","settings","square","title","titled","titles","tokens","tracking","truncate","unzip","updates","versions"]
},
{
"title": "TL;DR",
"url": "/projects/tldr/",
"tags": ["jquery","plugin"],
"date": "project",
"ts": "",
"summary": "A jQuery plugin for generating summary blocks on long posts. Available on GitHub .",
"keywords": ["available","github","blocks","generating","jquery","plugin","posts","summary"]
},
{
"title": "Übersicht Widgets",
"url": "/projects/ubersicht-widgets/",
"tags": ["extension"],
"date": "project",
"ts": "",
"summary": "Reveal your widgets folder from the Übersicht menu in the menu bar. Drop the file you want to use into that folder. Done. There are settings in the file for showing it in color or black and white, inverse, with and without background, and bright or translucent. Adjust and save to see the results in the widget on the desktop. The widget will automatically change width based on the number of bars you request. Note that the animated option is CPU-intensive, especially if you have a lot of bars showing. It works pretty well with 25-50 bars, but it still causes a noticeable spike in CPU load. The load chart currently rescales as minimum and maximum values change. This requires iterating through all the bars on every update. I m planning to add a static setting that bases everything on a fixed minimum/maximum and only has to add and remove bars from either end. This will improve performance in some cases, and could still have a nifty growing animation to bring new bars in gracefully on the right. A widget for Übersicht that displays a large number showing the average system load. The decimal point in the number is animated and color coded based on load (low, normal, high, higher, highest) and pulses faster as load increases. An arrow to the left shows whether the load is increasing or decreasing. A widget for Übersicht that displays a thin bar on the left side of the screen indicating the 5-minute average CPU load. Under normal CPU load it s almost invisible, but changes color and opacity as the load gets higher. Color and height changes are animated. It formats its height based on the screen size, so it should work on any size monitor, stretching the full height of the screen at max load. Based on how many cores you have and what your average load is, you may want to adjust the definitions for the alert levels. In the function, change the values for each level (in descending order): Animations and color coding for loading status, prep procedures, progress, and post procedures. Changing the font size of the h1 will change the size of the widget. It will scale as large or as small as you like. The @keyframe definitions break if placed in the Stylus section, thus must be loaded in the render section as a block. A widget for Übersicht that Displays 10-ping average, packet loss, and chart of results over time. Packet loss turns red when over a defined threshold. Change the server as desired, defaults to google.com. Defaults to 10",
"keywords": ["'high'","'important'","'low'","'normal'","'urgent'","adjust","adjusting","animations","average","based","brett's","change","changelog","changing","color","customization","defaults","displays","donate","download","github","handy","installation","inverter","loadbar","loadchart","machine","notes","packet","paypal","pingo","positioning","published","readme","reveal","sponsor","stylus","support","tuvbv'","timemachine","ubersicht","under","updated","video","widgets","youtube","action","adjust","adjusted","adjusting","adjustments","alert","align","allow","almost","alter","animated","animation","appearance","appreciated","archive","arrow","aside","automatically","average","background","based","bases","bersicht","between","black","block","border","bottom","break","brettterpstra","bright","brighter","brightness","bring","button","causes","center","change","changelog","changes","chart","class","coded","coding","coffee","collection","color","colorclass","colors","command","container","cores","customization","decimal","decreasing","defaults","defined","definitions","descending","description","desired","desktop","different","display","displays","dlbox","donate","donating","download","either","especially","everything","false","faster","fathom","feature","figure","filename","fixed","folder","formats","function","github","google","gracefully","graph","greatly","growing","height","hellip","hidden","higher","highest","highlight","highlighter","https","iframe","image","images","important","improve","increases","increasing","index","indicating","information","input","installation","intensive","inverse","inverted","inverter","invisible","issues","iterating","keyframe","label","language","ldquo","level","levels","light","linkblock","loadbar","loadchart","loaded","loading","machine","markdown","master","maximum","media","meter","method","minute","minutes","modes","monitor","multiple","nifty","normal","noscript","notes","noticeable","onclick","opacity","original","packet","padding","paypalbutton","paypalform","performance","picture","pingo"]
},
{
"title": "URL Preview",
"url": "/projects/url-preview/",
"tags": ["action","extension","macos"],
"date": "project",
"ts": "",
"summary": "This little Action Extension for 10.10+ will let you see a quick popup showing a preview of the destination for a URL in text you re working on. It s a great complement to SearchLink , as it helps verify that it inserted the result you were looking for without switching away from your editor. Download and run the URLPreview application in the zip file. Once it runs, the Action will be installed. Alternatively, just select some text and pull down the action menu from the action icon that appears at the bottom right of the selection when your mouse hovers over it. Select More from the dropdown to go to the System Preferences panel and enable Preview URL. Preview URL will scan the selected text for http and https links. If one is found it will open it in a popup. If no links are found, it won t do anything. You can close the popup by hitting Escape. Only the first URL in the selected text will be previewed. You need to have the full URL within the selection, but it s OK if additional text is included the URL will be extracted automatically. Preview URL Action Extension v1 Download Preview URL Action Extension v1 Preview a URL in a popup in Yosemite Published 06/05/15. Updated 06/05/15. Changelog Donate More info Because of issues running this extension on Catalina, I m also providing a Quick Action version of this concept. Simply install it by double clicking, then select text containing a URL, right click, and select Preview URL . It will preview the first URL found. Preview URL v1.0.0 Download Preview URL v1.0.0 macOS Service (Quick Action) for quickly previewing a URL Published 01/07/20. Updated 01/07/20. Changelog Donate More info My collection of PopClip extensions includes a CheckURLs extension. This incorporates the above Quick Action version but allows multiple URLs, and any navigation that takes place within the preview can update the selected text with the final URL if you click OK.",
"keywords": ["action","because","catalina","changelog","checkurls","donate","download","escape","extension","extensions","github","installation","popclip","preferences","preview","published","quick","searchlink","service","simply","support","system","urlpreview","updated","usage","yosemite","above","action","allows","appears","automatically","bottom","click","clicking","close","collection","complement","concept","containing","destination","development","directly","double","dropdown","editor","extension","extensions","extracted","first","found","going","great","helps","hitting","hovers","https","included","includes","incorporates","inserted","install","installed","issues","links","little","looking","macos","mouse","multiple","navigation","panel","popup","preview","previewed","previewing","providing","quick","quickly","right","running","selected","selection","showing","switching","takes","verify","version","where","within","working"]
},
{
"title": "Vitag",
"url": "/projects/vitag/",
"tags": ["tagging"],
"date": "project",
"ts": "",
"summary": "Vitag is a script for Mac OS X (10.9+) that reads files and folder paths and their current tags into a text document, opens it in an editor, and applies any tag changes when the file is saved and closed. Download the script from GitHub . Copy into a folder in your path and make it executable (). I may make this available as a gem eventually, but it currently has no non-standard dependencies and is pretty damn simple. Trying to keep it that way A list of files, with their current tags in square brackets following the path, will open in your editor. That s it. A little text editor magic with search and replace can make batch file/folder tagging with conditional filters a breeze. leading/trailing whitespace is ignored, so is the same as . Space between words is preserved, no quotes needed for multi-word tags. The tag ends at the next comma or end of the bracket pair. Changes are be mirrored in their entirety. If you remove a tag, it will be removed from the file, change the tag, the file s tag changes, and so on. Tags that are recognized Finder Label colors will additionally have their attribute data for display color changed to that color, clearing existing colors. Deleting a color tag from the list will clear the color in Finder. This currently only works with the default color names, not customized labels. By default it will use, in order of preference, $EDITOR, , or , determined by the first available executable found. Specify an editor directly with /. If no path argument is given, it uses the current working directory. With no depth flag, it will search the current directory for both files and folders. Adding / (where X is an integer) will search nested directories with 1 being the root of folders within the current path. There s currently no error checking on maximum file count, so err on the conservative side. / can be any shell glob pattern, e.g. *.pdf . It defaults to case-insensitivity, but you can use the switch to force it. By the way, if you re tagging on the command line, don t do it without tag (available through homebrew, ). This script would be a lot faster if I used or an Obj-C implementation directly instead of looping through and calls, but I didn t want to add dependencies off the bat. I may add the option if it starts frustrating me. 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 More",
"keywords": ["adding","batch","changelog","changes","deleting","donate","download","editor","examples","finder","github","installation","label","modify","notes","opens","options","published","space","specify","support","tagging","trying","updated","usage","vitag","additionally","applies","argument","attribute","available","batch","between","bracket","brackets","breeze","calls","change","changed","changes","checking","clear","clearing","close","closed","color","colors","comma","command","conditional","conservative","containing","content","count","customized","default","defaults","dependencies","depth","determined","development","directly","directories","directory","display","document","editing","editor","entirety","error","eventually","executable","faster","files","filters","first","folder","folders","force","found","frustrating","homebrew","ignored","implementation","insensitivity","integer","labels","leading","little","looping","magic","maximum","mirrored","multi","names","needed","nested","opens","paths","pattern","preference","preserved","project","quotes","reads","recognized","remove","removed","replace","saved","script","search","separated","shell","simple","square","standard","starts","switch","tagging","through","trailing","using","vitag","where","whitespace","within","words","working","works"]
},
{
"title": "Where?",
"url": "/projects/where/",
"tags": ["utilities"],
"date": "project",
"ts": "",
"summary": "Place both _where.bash and common.bash in the same folder in your $PATH. If you choose this option, see Database refresh throttling below. Source where.sh in your .bashprofile prior to sourcing other files Indexing every file you source can slow down login, so option 2 may be ideal. Once the database is built, you can use the command to find your functions. Running with no arguments will output a list of all registered plugins and aliases. Add an argument to filter for a specific function or alias. By default only exact matches will return. If an exact match is found, just the file path of the originating script will be returned. The -k switch turns on apropos mode, which lets you find any function containing the filter string in its name. The -a switch takes apropos a step further, using the filter argument as a fuzzy search string. It will match any functions/arguments containing the characters in the search string in sequence, but they do not need to be contiguous. If -a is specified, -k is ignored in the arguments. -E causes $EDITOR to be opened with the path to the file containing the searched function. -E does not work with -k or -a. Set an expiration threshold on the database with . The threshold is in seconds, where one hour is 3600, and one day is 86400 (60 * 60 * 24). If is initialized within the threshold since last update, it won t index the files again. You can force a database refresh with on the command line. This will clear your database and set an update marker for the current time. Brett Terpstra 2015, WTF license .",
"keywords": ["aliases","brett","configuration","curated","database","description","download","editor","github","helping","indexing","installation","license","options","remove","running","source","support","terpstra","usage","across","again","alias","aliases","another","apropos","argument","arguments","automatically","before","below","bottom","built","causes","characters","choose","clean","clear","command","commands","common","configuration","containing","contiguous","customize","database","default","defined","development","display","environment","exact","expiration","files","filter","folder","force","forgetfulness","found","function","functions","fuzzy","ideal","ignored","index","indexed","indexing","information","initialized","license","little","location","login","marker","match","matches","multiple","necessary","opened","originating","output","people","plugins","profile","refresh","registered","return","returned","script","scripts","search","searched","seconds","sequence","shell","since","source","sourced","sourcing","specific","spread","string","subfolders","switch","takes","threshold","throttling","track","turns","using","variable","whenenver","where","within"]
},
{
"title": "Brett's Projects",
"url": "/projects/",
"tags": [],
"date": "project",
"ts": "",
"summary": "60 Mac Tips: Vol 1 60 Mac Tips: Vol 1 A multimedia book for iBooks, filled with screencasts to turn Mac users into Power Users 60 Mac Tips: Vol 2 60 Mac Tips: Vol 2 A multimedia book for iBooks, filled with screencasts to turn Mac users into Power Users Amazon Shop Amazon Shop An Amazon shop for things Brett reviews on the blog or podcasts. Or just stuff he thinks is awesome. Dimspirations Merch Dimspirations Merch A selection of T-shirts, mugs, and calendars based on Brett's Dimspirations Markdown Video Markdown Video A video on Markdown produced for Peachpit's Learn By Video series Marked 2 Marked 2 My primary commercial application, a Markdown previewer that updates live while you edit in your favorite text editor. T-shirts T-shirts A selection of T-shirts designed by Brett, available through TeeSpring The things I do when I'm not doing the things I get paid for. I give most of it away for free ( donations accepted ), so dig in and see if any of these projects can help your workflow or inspire some coding mad science of your own. You can find everything else on the Downloads page . You know you want to. This stuff is pretty cool Or me on GitHub! Brett's PopClip Extensions Brett's PopClip Extensions A collection of PopClip extensions for Markdown writing and more Brett's Soundtrack Brett's Soundtrack Experiments with Spotify, Apple Music, and Last.fm Bunch Bunch A batch application launcher for your Dock Bytes Bytes A file size conversion Service. Cheaters Cheaters The groundwork for building your own set of hotkey-triggered popup cheat sheets for use while you work. CurlyQ CurlyQ A command line helper for curl and web scraping. Dimspirations",
"keywords": ["action","alfred","amazon","answered","apple","autotag","automated","automatically","brett","brett's","bunch","bytes","cheaters","christina","codereminder","collect","command","connect","coughbutton","create","curlyq","dimspirations","downloads","experiments","extension","extensions","extrainfo","gather","github","grablinks","jekyll","journal","keybindings","keyboard","launchbar","learn","maestro","markdown","markdownediting","markdownifier","markdownifying","marked","marky","merch","multimarkdown","music","niftymenu","nihilist","notational","octopress","omnifocus","openmeta","overtired","paypal","peachpit's","pinboard","planter","podtagger","popclip","popmaker","preview","products","projects","quickquestion","quicktags","regexrx","reminders","retired","safari","searchlink","service","services","shortly","sideshow","simplify","slogger","snibbets","soundtrack","sponsor","spotify","stackexchange","stars","store","sublime","support","system","systematic","tablinks","tagbak","taskpaper","teespring","terminal","textexpander","textmate","they're","titlecase","titler","tools","users","utility","velocity","video","vitag","warren","where","widget","widgets","wordpress","accepted","accessing","across","action","activities","adding","affiliate","align","amazon","answered","answers","anymore","app's","article","aside","attaching","automatically","automator","automatoricon","autotag","available","awesome","background","barebones","based","batch","beginnings","bersicht","blocks","blogging","blogs","bookmarklet","bookmarks","border","bretts","brettterpstra","broken","browser","build","building","bunch","bunchapp","bundle","button","bytes","calendars","capturing","casing","center","changes","chart","cheat","cheaters","checkins","class","cloned","clothing","codereminder","coding","collecting","collection","coming","command","commercial","commercialprojects","comparison","compatible","complex","contained","content","contexts","conversion","conversions","converting","cough","coughbutton","creates","creating","creator","cruft","curlyq","custom","daily","debugging","designed","dimspirations","dimspire","directly","directory","display","doing","donate"]
},
{
"title": "BrettTerpstra.com",
"url": "https://brettterpstra.com/",
"tags": [],
"date": "homepage",
"ts": "",
"summary": "Welcome to the lab. BrettTerpstra.com is the home of Brett Terpstra and his code experiments.",
"keywords": []
}
]}