Preach The Word

A couple of months ago, I was asked by our associate pastor to step in for him and preach this fall. I come from a short-but-wide line of preachers, and despite my last time in a pulpit being about 25 years ago, I agreed to step up. We're in the middle of a series on Spiritual Practices, and I picked "Silence" as a topic from a category about self-denial.1

For inspiration, our associate sent me this video. I had a really hard time not laughing:

My week was this past Sunday. If you're at all interested in hearing me talk about being quiet and still, you can do so here. I think I set a recent record for shortest sermon by keeping it under 25 minutes.2

This was an interesting experience for me. I watched my parents go through the sermon preparation process every week from as early as I can remember through leaving home to go to college. I definitely didn't appreciate it then, and I think I only barely do now. I haven't done much public speaking in my life that didn't involve singing in one way or another, and thankfully this wasn't a very controversial topic on which to expound holy scripture... also I knew 98% of the people sitting in front of me. The barriers were relatively low.

I'm speaking at a conference in about six weeks. More on that another time.. I expect that experience to be far more nerve-wracking than this was.


  1. The ironies about speaking about silence are abundant and appropriate.

  2. You’re welcome.

Sep 28th, 2015

The Solar System To Scale

Wow.

Sep 18th, 2015

Top Four

Launched today on the Relay.FM podcast network, Top Four features husband/wife team Marco and Tiffany Arment sharing their relatively strongly-held opinions about stuff.

You know.. stuff?

In Episode 1 the Arments discuss their top four favorite video games.1 I have never been much of a gamer, and I don't play many video games now, but for a time I spent way too much time staring at a screen for non-productive gaming purposes. From 2001 to 2006, I probably spent between 15 and 30 hours per week playing one or more games. Then I got married. Then my PC died and we bought an iMac. To finish me off, on the second Christmas following our wedding, Cait asked me to give up all video games for one year. I was already waning in my play time anyway, so it wasn't much of a hardship.

After that year, I tried to go back and just could not handle gaming for more than 20 minutes before I started to get twitchy. I was broken2. Having an iPhone for a few years now has given me many opportunites to get sucked back into electronic gaming. Admittedly, I've spent far more time than I'd be willing to type on one of a few dozen iOS games here and there. None of these are really going to rate highly enough for me to say they're a favorite, and the reality is that I just no longer love video games. I'll play them; I'll enjoy them, and I'll waste time playing a game on my phone now and again[^pho], but I'm just not that into it.

If I had to rate the games I used to enjoy and would maybe kinda sorta enjoy them again, they'd be:

  1. Tecmo Bowl (NES): Yes, seriously. I was so good at this game, even without a Game Genie.
  2. Minesweeper (PC): YES. MINESWEEPER. Once you get really really good at Beginner (~5 seconds) and Intemediate (~14 seconds) and then spend your entire middle school years trying to get a high score under 40 seconds for Hard, it becomes part of you. You dream of mines.
  3. Risk (PC/iOS): Also beloved in tabletop form. I heartily enjoy seeing just how each electronic version varies its own internal strategies when playing "AI" players. RISK II for PC had this multi-turn idea where each player would queue up their moves and then they'd all happen at once. This meant that players could have conflicting moves which had to be "merged" into one another. It was awesome and led to some of the shortest games of Risk I've ever played (I conqueued the world in 5 turns at one point). The latest iOS verison let's you keep playing on a turn so long as you have armies left in attack-able positions. It's good.
  4. I can't pick a fourth. It's a toss-up between Starcraft, Half-Life 2 and Unreal Tournament 2004... all of which I used to love for totally different reasons from one another. I'm unwilling to admit how many hours I spent perfecting my Onslaught strategies from 2004-2005. UNWILLING.

No matter. I enjoyed listening to the Arments talk about their love for their most enjoyed games. If you've been around the world of ATP or any of Marco's prior podcasts, and enjoyed listening to him, this is another great one3.


  1. Ok, Tiff does. Marco lists, like, twenty.

  2. In a good way, of course…

  3. All the great shows…

Aug 17th, 2015

Changing the Author of a Single Tag in git

My team recently moved from Subversion to git, a migration we have been considering and planning for the past several months. We tripped over many stumbling blocks on our way; I intend to write about many of those in the coming months.

The day after the migration, we found ourselves needing to create a support branch1 for one of our components. We do this by branching from a tag and naming it as such:

1
2
git checkout -b support/1.2.x component-1.2.0
git push -u origin support/1.2.x

That should just work. However, we have quite a few pre-commit hooks in place to keep everybody working with the same set of standards. One of these requires that you're pushing only your own changes, and that your author info matches. In SVN, our tags were all created by an internal service account running our releases (srv-clubuilder), so the release point and the tag created from it were both done under that user. Well, that user doesn't exist any more, and certainly I'm not him. When my team tried to do the above, we saw this lovely error:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Counting objects: 1, done.
Writing objects: 100% (1/1), 190 bytes | 0 bytes/s, done.
Total 1 (delta 0), reused 0 (delta 0)
remote:
remote:   (c).-.(c)    (c).-.(c)    (c).-.(c)    (c).-.(c)    (c).-.(c)
remote:    / ._. \      / ._. \      / ._. \      / ._. \      / ._. \
remote:  __\( Y )/__  __\( Y )/__  __\( Y )/__  __\( Y )/__  __\( Y )/__
remote: (_.-/'-'\-._)(_.-/'-'\-._)(_.-/'-'\-._)(_.-/'-'\-._)(_.-/'-'\-._)
remote:    || E ||      || R ||      || R ||      || O ||      || R ||
remote:  _.' `-' '._  _.' `-' '._  _.' `-' '._  _.' `-' '._  _.' `-' '.
remote: (.-./`-'\.-.)(.-./`-`\.-.)(.-./`-`\.-.)(.-./`-'\.-.)(.-./`-`\.-.)
remote:  `-'     `-'  `-'     `-'  `-'     `-'  `-'     `-'  `-'     `-'
remote:
remote:
remote: Push rejected.
remote:
remote: refs/heads/support/1.2.x: bb3ac1ef7b5ef61d9b999bd7ad231803f18de440: expected committer email 'Matt.Shelton@nuance.com' but found 'srv-clubuilder@nuance.com'
remote:
remote: refs/heads/support/1.2.x: bb3ac1ef7b5ef61d9b999bd7ad231803f18de440: expected committer name 'Shelton, Matt' but found 'srv-clubuilder'
remote:
To http://Matt_Shelton@git-host.nuance-internal.com/stash/git/CLU/clu-component.git
 ! [remote rejected] support/1.2.x -> support/1.2.x (pre-receive hook declined)
error: failed to push some refs to 'http://Matt_Shelton@git-host.nuance-internal.com/stash/git/CLU/clu-component.git'

Yes. Those are teddy bears.

I tried a few things like creating an empty commit as myself and pushing that, but it didn't matter—that wasn't the commit it was complaining about. I tried amending that commit, but since I hadn't changed anything, there was nothing to amend. In order to modify the branch, I needed to change the author of the tag itself. Most search results directed me to use git-filter-branch, and while I'm comfortable re-writing my repositories history (we did just do that, more or less, during the migration), I didn't want to cause any additional confusion.

Git, however, is pretty darn powerful. Some teams, after they have been using git a while, move from a traditional lightweight tag to a richer annotated tag, which might contain additional author information or be cryptographically signed by the author. We're sticking with lightweight tags for now, but the migration process for historical tags was similar to what I wanted to do. In the end, I was able to re-write only the tag and successfully create my branch:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
$ git checkout component-1.2.0
Note: checking out 'component-1.2.0'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b new_branch_name

HEAD is now at 86f405f... [maven-release-plugin]  copy for tag component-1.2.0
$ git tag -d component-1.2.0
Deleted tag 'component-1.2.0' (was 86f405f)
$ git commit --amend --allow-empty --author="Shelton, Matt <Matt.Shelton@nuance.com"
[detached HEAD 37a8015] [maven-release-plugin]  copy for tag component-1.2.0
 Date: Thu Feb 20 19:36:40 2014 +0000
$ export GIT_COMMITTER_DATE="$(git show --format=%aD | head -1)"; git tag component-1.2.0
$ git push origin :refs/tags/component-1.2.0 # Push that tag ref to the origin as re-written
To http://Matt_Shelton@git-host.nuance-internal.com/stash/git/CLU/clu-component.git
 - [deleted]         component-1.2.0
$ git push --tags
Counting objects: 1, done.
Writing objects: 100% (1/1), 290 bytes | 0 bytes/s, done.
Total 1 (delta 0), reused 0 (delta 0)
To http://Matt_Shelton@git-host.nuance-internal.com/stash/git/CLU/clu-component.git
 * [new tag]         component-1.2.0 -> component-1.2.0

The result of this was exactly as I expected. When I look at the commit in the history, I now see that I am the author of this tag:

1
2
$ git log --tags --show-notes --simplify-by-decoration --pretty="format:%ai %d %s (%an <%ae>)"| grep component-1.2.0
2014-02-20 19:36:40 +0000  (tag: component-1.2.0) [maven-release-plugin]  copy for tag component-1.2.0 (Shelton, Matt <Matt.Shelton@nuance.com>)

And now I'm in business.


  1. We’re using git-flow as a branching model, but have the need to keep some releases around long-term for production support of integrations which cannot upgrade. This varies from a traditional concept of a hotfix in that we also need to be able to port features back to this release stream.

Aug 12th, 2015

Dad Reflexes

via WIN!

May 18th, 2015

Surgeon General and Elmo team up to talk vaccinations

Love this video.

Apr 22nd, 2015

Seveneves Excerpt

Neal Stephenson posted the first 26 pages of Seveneves, his latest novel, this afternoon.

The moon blew up while...

So. Cool.

After reading this, my first reaction aside from genuine anticipation is to take note of just how many culturally modern Internet services get name-dropped:

  • Facebook
  • Dropbox
  • Wikipedia
  • Twitter

It's nice that the text is immediately relatable, but I worry that it might not be in a decade, like Snow Crash, Cryptonomicon1, and The Diamond Age all are.

He had wassted a week on the fascinating scientific puzzle of "What blew up the moon?" That had been a mistake.

I pre-ordered the book when it was announced a few weeks back. I'm looking forward to reading it nonetheless.


  1. Despite being mostly about contemporary technology, really only the bandwidth and storage media feel outdated.

Apr 13th, 2015

A Car Wash on the Spectrum

This is pretty great:

I love that this family stepped up to provide a future for their son with needs that make it very hard for him to find successful employment, and that this effort is also helping people in their community with similar needs. It's worth your 4:37.

Mar 17th, 2015

Moving Back to Byword for Markdown Composition

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…

Mar 10th, 2015

This Video Will Make You Angry

Note that this video did not make me angry, but I did laugh a lot.

Hat tip: Marco Arment

Mar 10th, 2015