Moving Back to Byword for Markdown Composition

Published on: March 10th, 2015

When I initially purchased Byword for my phone, it was at a time when I had transitioned all of my note-taking from Evernote to plaintext / markdown1. I tried Write and iA Writer and others and settled on Byword for a while. But then my note-taking died down on the whole, and I found myself not needing an app like this. It eventually got uninstalled some day I needed more space for photos.2

Subsequently, a few things have changed:

  • I am now hosting my own static blog, via Octopress and markdown-based source files, hosted on heroku. So I’m writing more in a text editor for blogging than I ever was before.
  • I am regularly journaling in Day One.

My blog posts right now are edited in one text editor or another3, and that mostly works, but I long for richer syntax highlighting and/or syntax-aware styling. I find the workflow of using Marked to preview my files cumbersome since it either requires using an editor which does atomic saves, or constantly pressing CMD-S throughout my drafting. I would prefer some syntax styling – Day One does a great job with that, but it’s impractical to draft every blog post there, copy it out to a text file, etc., and I don’t want my blog drafts cluttering up my personal journal.4

The built-in syntax highlighting of most text editors gets me most of the way, and I appreciate the efforts of the user and development communities for each of Atom and Sublime Text 3. For my workflow, though, I wanted something more exclusive to this process, and an application or workflow that I could use successfully on both my Mac and my ridiculously big iPhone.5

I’ve been enjoying Drafts on my phone for quickly capturing notes, tasks in a conversation, shopping lists, etc., but it’s not a superb text editor or publishing client despite its extensions and other capabilities. It also has no concept of synchronization for its notes.6 I’d need to export manually from the phone each time I knew that I wanted to work on my laptop instead.

I considered going back to iA Writer or Write, and synchronizing through Dropbox. That would leave a gap on my laptop fillable by a few different applications: iA Writer has a desktop version as well7, Byword, Desk and Typed all look like decent options. I’ve previously used Mou and enjoyed it for a time, but it’s a little klunky. I checked out The Sweet Setup, which doesn’t always have opinions that I share, but is full of great detail. They recommend Byword, and though I hadn’t yet enabled iCloud Drive on my devices, this seemed like a good reason.8 I wasn’t convinced, though, that this was going to be worth the $12 purchase. It’s pricey for a Mac app these days, and there is no way to trial purchase applications. The reviews, though, contained this one gem that sealed it for me:

So I am giving Byword another shot, on recommendation from The Sweet Setup and, oddly enough, Neal Stephenson9. Now my icon row on my phone looks like this:

That’s Day One, Drafts and Byword – all Markdown-based text editors – right in a row. I use each one of them daily, and this workflow is pretty seamless, with one annoying nitpick: iCloud Drive just isn’t great yet. When I initially started using this, I was able to pull all of my existing static notes via Finder into iCloud Drive and they uploaded within a minute or so. I could immediately edit them on my phone, which was great. The reverse, though was not so seamless. I started drafting this post on my phone a few nights ago, and found that by 12 hours later it still had not shown up in iCloud Drive on my laptop. I was about to jump ship. It magically appeared later that night, and I figured out why – because I had changed another file in the same folder. This seems to trigger a re-sync of state prior to upload10, and so I have a workaround. It’s not perfect, but I expect it will mature over time.


  1. I could write an entire series of posts about my internal drama regarding note taking, but who would read that drivel?

  2. I always buy the 16GB model. That’s definitely going to change next time around.

  3. And a second series on switching text editors every few months. Back on Sublime Text 3 again now.

  4. If Day One ever comes out with support for multiple journals I might reconsider all of this, and do all of my blogging there natively, and publish out to their hosted platform, but it’s not there, and that’s not now.

  5. I’ve been rocking the 6 Plus for a few months now. It’s massive, but now all other phones just feel too small. I suspect that was part of the idea.

  6. This is actually my only issue with Drafts. So many times I want to take something I quickly drafted and pull it up on my laptop and am frustrated that I have to email it to myself. What is this, 2012?

  7. I used iA’s writing apps for months a long while ago. They were good, but not superb. After following the author on Twitter for a while, I started to have a real problem with how he conducted himself. The applications weren’t compelling enough to keep using anyway, and I felt like anything I asked for functionality-wise would fall on deaf ears.

  8. I could use Dropbox for synchronization here as well, but I wanted to give iCloud Drive a shot. That was both a good and a bad idea, but my experience with moving to that for Day One was not very smooth. That’s worth a separate post.

  9. Neal happens to be one of my favorite authors. If this application is good enough for him to use to write novels, I think it can handle my blog posts.

  10. Always pull before you push…

My Problem With Good Music

Published on: March 6th, 2015
Tags: music

This will not sound sane: I have a problem with good music.

Music is not the problem—I am the problem. When I hear a great song, I put it on repeat for days. I listen to nothing else, soaking in everything that encompasses the song. My freshman year of college, the song Memory Remains by Metallica was my token repeated hard rock song, so many times so that a kid down my hall actually yelled through closed doors and walls to “STOP PLAYING THAT D*MN SONG!!”.

Worse, however, is when what I love is just part of the song, and sometimes it’s not even that the song is incredible, but that something about the song is so compelling to me that I just need to listen to it over and over again.

Take my most recent musical obsession: Lady, originally by Styx, arranged for for the Buffalo Chips1 by Michael King. When I first heard this track, I thought nothing of it. I was unfamiliar with the original, and found the recording to be relatively uninteresting. It has very little dynamic contrast – basically a song sung on mf for its entirety. I rated it three stars, placing it squarely in the middle of the tracks on the album, Blue and White.

Then, I listened to the whole album on repeat few times with the intention of refining my ratings and eventually writing a review of the album here. The song started to bother me… I was already annoyed with the track’s mixing2, but I think the fact that the song itself is so good kept nagging at me. I noticed the Mr. Roboto cues in the last chorus; I increased the rating to four stars.

Everything would have been fine after that, but my stupid brain would not shut off. I started noticing other things about the arrangement… how the background parts grow in complexity, how the syllables morph a bit over time to make even the lines repeated in each section more interesting, and that there were more Styx songs layered in the last chorus than just Mr. Roboto. I increased the rating to five stars, and all was lost. I’ve now listened to the track about 120 times, 110 times more than any other track on that disc3

This song is one complex, but also strikingly simple, arrangement. The recording quality is great, minus my annoyance I might have with its dynamic blandness; even the gap in dynamics is countered by the growing complexity of its underlaying arrangement.

And therein lies the problem: what I really want to hear over and over again is the last 20-30 seconds. The weaving parts and resulting chords are just flat-out gorgeous, but it’s impractical and rude to everyone around me to just replay the last part of a song ad nauseum. Additionally it means that this is the only song I want to hear for days. All other songs are dead to me until my ears have decided that they’ve had enough.

My children’s requests for one more play through of What Does The Fox Say? fall upon deaf ears.4


  1. Yes, this is my college a cappella group. Yes, I am biased. No, I don’t care.

  2. If your first chorus is loud, you have to come down a notch for the verse that follows it. It can’t be the same level as the chorus. Come on now.

  3. No Fire, originally by Jon Peter Lewis, is also a fantastic track mostly because the song is already beautiful and the soloist knocks it out of the park.

  4. At least I wish they did. I’m so sick of that song.

Running the Atlassian Suite on My Mac

Published on: January 17th, 2015

Recently our Atlassian TAM stopped by for his quarterly visit. We had a very productive discussion, and I remarked that both he and his colleague were using Macs with Confluence and JIRA running natively despite the lack of “official” support. I was happy to hear that most of the engineering team are Mac users as well, and that while it’s not a production-worthy setup1 it’s regularly used by many Atlassians.

I, on the other hand, was activley running both in separate ubuntu VMs in Parallels2. This setup works, but I incur a relatively high memory/CPU penalty, as well as the nutso overhead of resuming a VM, syncing the local clock each time, etc. It’s silly just to test something out.

There are no decent, authoritative guides out there on the Interwebs, so I thought I’d publish one myself. Your mileage may vary. I’m (still) running OS X 10.9 Mavericks, so I can’t guarantee these steps will work on Yosemite3. In addition, while you don’t need to install MySQL as you may opt to use the local HSQL for both applications, I like being able to use the mysql client to see the data I’m using, and this makes it closer to my production setup.

Step 1: Install a compatible JVM

Presuming you only have the default version of Java 6 (1.6.0_65) at /Library/Java/Home, go download the latest Java 7 or Java 8 SDK from Oracle.4 Install it, then set its path as your JAVA_HOME environment variable. I use oh-my-zsh, so I added this to my .zshrc:

1
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home

Step 2: Install MySQL

I wanted to use homebrew as much as possible, so rather than download the branded installer, I did the following:

1
2
3
4
% brew update
% brew upgrade
% brew install mysql
% mysql.server start

Then, run the commands that Homebrew suggests to add MySQL to launchctl so it automatically launches at startup. These are most of the same instructions for Mavericks at coderwall, which worked flawlessly without the cleanup steps.5

Next, follow the Database Setup For MySQL guide, step 2, #2 to edit your my.cnf file. Then restart mysql.

After it restarts, log in and set up the DB users you will need later. Open mysql as root6:

1
$ mysql -uroot

…and run the following SQL:

1
2
3
4
5
CREATE DATABASE confluence CHARACTER SET utf8 COLLATE utf8_bin;
CREATE DATABASE jira CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL PRIVILEGES ON confluence.* TO 'confluenceuser'@'localhost' IDENTIFIED BY 'confluencepass';
GRANT ALL PRIVILEGES ON jira.* TO 'jirauser'@'localhost' IDENTIFIED BY 'jirapass';
flush privileges

Step 3: Download the MySQL Connector

You need this for both applications, so go grab the latest platform-independent connector here and unpack it somewhere handy. I chose ~/Downloads.

Step 4: Prepare A Home

You will need both an installation location as well as a home directory7 for each application:

1
2
3
4
5
$ cd /var
$ sudo mkdir atlassian
$ sudo chown mattshelton:staff atlassian
$ sudo chmod g+w atlassian
$ mkdir -p atlassian/jira/home atlassian/confluence/home

Step 5: Install JIRA

There is a guide for Installing JIRA on Mac OS X from Atlassian. It reads like the generic install overview was almost, kinda, updated for the Mac, but there are still sections like this:

If your operating system is *nix-based (for example, Linux or Solaris), type the following in a console:
$ sudo /usr/sbin/useradd –create-home –comment “Account for running JIRA” –shell /bin/bash jira
If your operating system is Windows: …

Here’s what I did:

Download and Unpack JIRA

  1. Download the JIRA tar.gz file here.
  2. Unzip the downloaded file. In my case, I unpacked it in /var/atlassian/atlassian-jira-6.3.13-standalone and created a symlink called current in the same directory. That way, JIRA is always installed at /var/atlassian/jira/current, and when I upgrade I always know where it is and I can keep the previous application directory around in case I need to grab customized files.

Set JIRA Home

This is identical to what is in the above Atlassian guidei8:

  1. Go to /var/atlassian/jira/current/atlassian-jira/WEB-INF/classes/.
  2. Edit the file jira-application.properties and set the value of jira.home to /var/atlassian/jira/home.

Database Configuration

Since you already created the database itself, all you need to do is tell JIRA how to connect to it:

  1. In /var/atlassian/jira/current/bin, run config.sh. This opens up a little swing app with a bunch of configuration options.
  2. In the second tab, configure the database as needed. You can test it from the same tab and save your settings once you have a working database connection.
  3. Copy the MySQL Connector into the JIRA lib directory:
1
$ cp ~/Downloads/mysql-connector-java-5.1.34/mysql-connector-java-5.1.34-bin.jar /var/atlassian/jira/current/atlassian-jira/WEB-INF/lib/.

Start JIRA

From /var/atlassian/jira/current/bin:

1
2
$ ./start-jira.sh
$ tail -f ../logs/catalina.out

Once you see that the server has started, open http://localhost:8080/ and run the setup wizard.

Step 6: Install Confluence

This section is what inspired me to write this post in the first place. Unlike JIRA, there is no “Installing Confluence on Mac OS X” page. The steps, though, are nearly identical to JIRA, and are roughly the same as the guide for from the Confluence 3.4 documentation (written in 2010):

Download and Unpack Confluence

  1. Download the Confluence Standalone tar.gz file here.
  2. Unzip the downloaded file. In my case, I unpacked it in /var/atlassian/atlassian-confluence-5.6.5 and created a symlink called current in the same directory. That way, Confluence is always installed at /var/atlassian/confluence/current, and when I upgrade I always know where it is and I can keep the previous application directory around in case I need to grab customized files..

Configure Confluence Environment

  1. Go to /var/atlassian/confluence/current/confluence/WEB-INF/classes/.
  2. Edit the file confluence-init.properties and set the value of confluence.home to /var/atlassian/confluence/home.
  3. Copy the MySQL Connector into the Confluence lib directory:
1
$ cp ~/Downloads/mysql-connector-java-5.1.34/mysql-connector-java-5.1.34-bin.jar /var/atlassian/jira/current/confluence/WEB-INF/lib/.

Start Confluence

From /var/atlassian/confluence/current/bin:

1
2
$ ./start-confluence.sh
$ tail -f ../logs/catalina.out

Once you see that the server has started, open http://localhost:8090/ and run the setup wizard. The setup wizard includes the data source configuration. Unlike JIRA, there is a web-based tool to specify this rather than a swing app.

Of note, the standalone installer also include some handy Mac OS Terminal command files in the bin directory, presumably so that you could have some shortcut icons to start/stop Confluence.

Conclusion

I chose to let Confluence use JIRA as its user directory to make this a one-stop shop as I expect I’ll always have both running. I’m saving myself ~4GB of memory without the VMs and there’s no spinning fan noise, which is a giant plus.

I titled this “Running the Atlassian Suite on my Mac”, but I have no intention of installing the other applications just yet. I’ll post again if I do.


  1. Ths is due to the relative lack of production hardware running MacOS, not the lack of production-worthiness of the OS itself.

  2. Not because this is the only option, but because the last time I tried to install each of them on my Mac it was a dismal failure.

  3. They should. Some of the steps I figured out from comments in other posts from Yosemite users.

  4. Account Required. Welcome to the new order.

  5. I should note, though, that homebrew now runs the last few commands specified in the guide as a part of the installation. I had very little to do to get an instance running quickly.

  6. The initial mysql password for root when installing from homebrow is empty. It might be wise to set one.

  7. Most guides will tell you to run each application as a dedicated user. This is unnecessary and overcomplicates the installation.

  8. Note that you can skip this step and specify the JIRA home in the config tool, then have it reload itself, all within the swing app. It works both ways.

Taking Control of My iPhones

Published on: December 18th, 2014
Tags: geek life

I really enjoyed Bradley Chambers’ post on how he “took control” of the technology that was starting to take control of him. I’m in a similar boat being tied to one or more iPhones on a regular basis.

The iPhone has made my life simpler and more streamlined in so many respects:

But it’s also a very easy tooltoy to use to the exclusion of the people and tasks around me. I have found myself being annoyed by being interrupted “working” on my phone when really I need to be minding my real life.

To top all of this off, I have two iPhones: one work and one personal, though I have tended to use my personal phone for everything except conference calls1.

Bradley took these steps:

  • Email doesn’t show badges and only downloads new messages when I open the app. Not only has this resulted in better battery life, but I’ve not missed out on anything important. If something is urgent, I will get a phone call or a text message.
  • No social media notifications (Twitter, Instagram, etc)
  • Slack is set to only push @replies
  • Do Not Disturb runs from 5:00 PM to 7:00 AM, but allows phone calls. This makes my iPhone act like an actual phone.

For me, I went a slightly different route:

  1. I asked my employer to upgrade my aging iPhone 4S to a new iPhone 6 Plus. It was up for the contract renewal price, so they did without much fuss.
  2. I removed every single thing work-related from my personal phone.2
  3. On my personal phone, I set my Do Not Disturb to 9:00 PM to 7:00 AM, but allowing phone calls.
  4. On my work phone, I set my Do Not Disturb to 7:00 PM to 7:00 AM, but allowing phone calls from my contacts only.
  5. I leave my work phone in the basement on my desk when I am doing things around the house, as well as most nights overnight.3
  6. I removed nearly every push notification and badge from my personal phone. I still let my personal email alert me, but only silently. I do let my work email notify me on my work phone, but hten it’s not always on me, so this matters far less.

So far, despite being in love with the display on the 6 Plus4 and compelled to look at it just because it’s so pretty, I have found myself less electronically engaged and more personally engaged, even in the last week since making these changes.

I expect I’ll find more ways to make this work as time goes on. I’m not ready to go away from push email just yet, but it may come soon enough.

NB: One negative side-effect, if you could call it that, is that since I’m pulling out my personal phone from my pocket far less than before, I get very far behind on twitter. I am typically a twitter completionist, and rely on twitter to keep me updated on current events, so this means I’m usually about 24 hours out of touch.

I don’t know if I care to do anything about this, honestly…


  1. I use about two dozen minutes a month on my personal line, but working remotely means that I use a few hundred minutes a month for work calls, even if almost all of them are otherwise “toll-free”, a concept that has become ridiculous now.

  2. I now almost never run out of battery. It’s incredible.

  3. This is the most critical change. By leaving my phone somewhere I am not, I am simply not bothered by alerts.

  4. Which is, to be pragmatic, far too big to be a useful “phone”, but is a fantastic piece of hardware otherwise.

Ending a Workday

Published on: December 2nd, 2014

Over at Wise Bread, Brittany Lyte shared her five best ways to spend the last 10 minutes of your workday. My favorite, which was also the favorite over at Lifehacker, was to clear your desk of clutter:

Studies show that a cluttered workspace actually hinders our ability to process information and concentrate. We aren’t aware of it, but clutter competes for our attention in much the same way as a whining child or a barking dog does.

Clutter absolutely competes for my attention the same way audible noise does; this has long been one of my triggers1. I’m a smidge obsessive about maintaining a semi-spartan2 workspace, so I’ve been doing something like this for years. I also make sure to power off my displays and speakers, put my trash/recycling where they can be easily retrieved by janitorial staff, and “reset” the furniture for the next day.


  1. Ask my wife.

  2. Read: minimalist. It’s such a buzzword and I hate to use it, but I do try to minimize everything that I have down to the bare necessities.