Welcome to the lab.

Marked 2.3 on the Mac App Store

[Tweet : ADN : nvALT]

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 com.brettterpstra.marked2, 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.

Here are some of the other new features:

  • Mini Map navigation with magnifier and fast scrolling
  • Bookmark based on proximity to nearest headline
  • Preserve bookmarks across refreshes and style changes
  • Keyword highlight navigation
  • Highlighted word counts
  • Count sentences in selection
  • Accepts a json array in metadata for custom processor arguments
  • Document reading progress bar
  • Improved PDF export stability
  • MathJax improvements
  • GitHub nested checkboxes and styling
  • Print speed improved

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

36 years in this skin

[Tweet : ADN : nvALT]

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 dead2 and that if they could find a way to force me into treatment, they would. They never did.

I eventually checked myself into rehab after watching enough friends decline into “junkiehood,” overdose, and even die.3 It should have been the knowledge of the amount of drugs I required to function normally, but it wasn’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 just feels like coming home at the end of a long day.

The third time, I called my parents from rehab, dumped the story of the prior eight years on them, and asked them to drive up and meet me outside the door of the hospital in St. Paul, MN.

My parents were saints, in the sense that they showed unconditional love and support despite betrayal and in the face of zero reasons to do so. There were tears, and there was concern, resentment, and questioning of everything. They supported me nonetheless, and for that I am forever grateful. As a kid I had developed my own irrational resentments of my parents, but after coming out of the haze and really considering what they’d done for me, I began to truly love them. The thought of the extent to which they supported me is one of the things that helps keep me clean today.

Love is not an emotion that comes easily to me. My innate understanding of love is that it’s a chemically manufactured construct with the sole purpose of manipulation. I consider loyalty, in most instances, to be a braindead decision-making process. Honesty, though, I consider pure and holy, and had always reserved it for only the most sacred conversations, as well as a last-ditch manipulation tactic. Honesty about myself (and with myself), that is. I always found it all too easy to be honest about other people, usually to their faces, and not to the benefit of my social life.

I’ve learned to love over the last decade. I don’t think it’s the kind of love that other people refer to, but I’m able to rationally assess my feelings toward others and decide whether or not I’m willing to sacrifice for them. It’s not always a reciprocal thing, sometimes my detachment outweighs the sacrifices others have made for me. I don’t love them. I appreciate them. But my wife, my family and a select few friends I truly believe I love. I would risk everything for them.

My tendency to risk it all is another thing I’ve come to understand. I’m a gambler with all things, but the rush of gambling isn’t the core of the quirk. It’s a complete lack of fear of consequences. The kind that gets a person into trouble quickly, especially when their judgement is impaired to begin with.

Even now, with a clear head, I’m prone to make rash decisions and try things in a way that a more rational person never would. Whether it’s a split-second decision about shooting for that opening in a line of traffic on the highway, or a larger choice such as whether to quit my job and try to make it as an independent developer and writer, I lack the fear.4 I can logically weigh the pros and cons, but when it comes to gut instinct, I go for anything that looks gratifying. People often laud me for audacity when, in fact, it’s simply a lack of fear.

Courage is different from the absence of fear. You can’t be courageous if you don’t first internalize the consequences. Courage, to me, means overcoming fear, not ignoring it. If I’m courageous about anything, it’s facing life without chemicals, and that still occasionally scares the shit out of me.

So that’s me. I’m a mess. I hope you don’t think less of me for saying all of this. I accept my past and I’m grateful for where it’s inexplicably left me: alive, well, and able to ponder the reasons I’ve made it here. I’ll relish this birthday as I have every birthday since I was 25, and will continue to do so for as long as I can.

Thank you to my parents, my wife, my family and my friends for helping me be here today to write all of this. I’m grateful for all of you.

  1. Experienced addicts will know that the fact that I drink craft beers and fine scotch is not “clean.” I believe I have it under control, but know that it may land me back in “the rooms” someday.

  2. 2g of 85% pure china white really should do that to a person.

  3. This.

  4. Or perhaps the decision about whether or not to bare my soul on a blog.

Web Excursions for July 18, 2014

[Tweet : ADN : nvALT]

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

Systematic 105 and Overtired 5

[Tweet : ADN : nvALT]

Systematic logo Kevin Rothermel works in advertising and digital strategies. He came by to talk about “viral” marketing, Facebook advertising, emotional purchasing decisions, and standing desks, among a variety of other topics. It was a great conversation, and I’d like to offer a big thanks to Kevin for making the time. Check out the episode at 5by5!

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.

Giveaway: Polymo for iPhone

[Tweet : ADN : nvALT]

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.

One entry per person, valid email required to win. Giveaway ends on 07/22/14 at 12:00 PM. I will never sell or misuse your email address.

Review: Dropzone 3

[Tweet : ADN : nvALT]

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 scripting1. You simply drag files to the icon in the menu bar and a palette opens up, allowing you to drop the files on any of your destinations.

The new release includes some pretty huge changes. It starts small, with things like a larger drop target in the menu bar, and ends big with a whole new bundling system and API for the Destinations.

One of the best new features is the Drop Bar, which simply lets you collect files for later actions. You can drag the files back out to Finder for a move or copy operation, or act on them right within Dropzone. Similar to Yoink, but integrated into an app that makes perfect sense for this action.

Adding and organizing Destinations used to require a trip to preferences and was split across multiple screens. Now you can just drag folders and applications straight into the grid, and reorganize it with simple drag-and-drop.

For long running processes, you also get a progress bar right in the grid. The menu bar icon also animates to show the progress of actions, similar to the way Droplr shows upload progress. It’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.

  1. 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 to my clipboard. Just as an example…

Web Excursions for July 14, 2014

[Tweet : ADN : nvALT]

Breach - A browser for the HTML5 era
A web browser written in JavaScript, modular and hackable.
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.
LaunchBar 6 actions for accessing Pinboard bookmarks. Not only handy, a great sample set for learning to build with the new Launchbar extension capabilities.

Making cd in bash a little better

[Tweet : ADN : nvALT]

The Bash command cd is pretty good with tab completion (though not as good as Z shell). I often want to complete a path like ~/Scripts/, though, and get caught up on directories such as ~/ScriptingAdditions, which I never need to get to through Terminal. There’s an easy way to ignore those pesky directories, though, using the $FIGNORE variable.

In my .bash_profile, I just include:

export FIGNORE="Application Scripts:Applications (Parallels):ScrivWatcher:ScriptingAdditions"

The directories listed in $FIGNORE will always be ignored by cd tab completion. Problem solved.