Marc Schwieterman


4 minute read Published:

I’ve been using a second generation MacBook for a little over a year now, and in many ways I love it. The performance is good enough most of the time, and the portability has helped me get a lot more done because of how easy it is to carry the MacBook and use it in a variety of places.

All that said, I had enough performance and stability issues that I was eager to upgrade when the third generation model was announced at WWDC. While I have no issues upgrading my iPhone every year, it’s been very unusual for me to want to upgrade a Mac that often. I decided to try the MacBook Escape1 alongside the latest MacBook because I want to be sure I’ll still be happy with my Mac this time next year.

Modelines in Git Commit Messages

1 minute read Published:

I’ve been cleaning up my Vim config this week, and I noticed some strange errors while doing an interactive rebase in my dotfiles repository.

Error detected while processing modelines: line 1: E518: Unknown option:

Return of the Daemon

1 minute read Published:

I’ve been enjoying having the new Apple Music service in iTunes quite a bit, but one thing has been driving me crazy: the keyboard controls don’t work anymore. Except they do.

The Initiative

1 minute read Published:

My friend Bill and I have been working on a podcast about learning iOS development, and it’s finally here. We recorded several episodes before we figured out enough of the recording and hosting process to release anything, so there’s already a decent backlog. New episodes should continue to come out every Friday.

Check it out at The Initiative.

Bypass VPN by Hostname

3 minute read Published:

If you run VPN on your router, you may have had cases where you want Internet traffic to bypass the VPN. Most solutions I’ve found use some form of a script originally found on LinksysInfo. However these approaches are IP based, which can be a problem if those IPs change, or if the service you’re accessing uses a CDN. If your router is running firmware that supports ipset, you can use dnsmasq and iptables to solve this problem.

Testing in the OSX Sandbox

2 minute read Published:

If you’re running Application Unit Tests, and have just enabled entitlements, you will immediately be greeted with an error similar to the following.

RubyMotion Functional Tests with Storyboards

2 minute read Published:

If you’ve been using RubyMotion, you probably noticed that some new testing features were released today. The video in the announcment post and the documentation are pretty good, so I’m just going to share a few things that I had to do to get things working.

OSX Lion Key Repeat in IntelliJ

1 minute read Published:

I’m mildly obsessed with Vim, so of course I prefer to use similar input methods whenever available. I’ve been working on a Javaish project lately, and I ran into the alternate character feature in OSX Lion, which does not play nice with the IdeaVim plugin for IntelliJ.

Testing Warden-Based Sinatra Apps

1 minute read Published:

I recently integrated Warden into a web service I’ve been building with Sinatra. Unfortunately doing so completely broke some of my tests. I spent a while trying to figure out how to stub out the Warden object before I discovered that Warden already provides support for testing. Awesome. While I could load my in the test, there are other things in there that I’d rather not deal with while testing. I came up with the following approach, which lets me more or less test the web service in isolation.

Roo-based Jersey Apps on GAE

6 minute read Published:

This past weekend I put together an example of a Spring Roo-based Jersey application that can run on Google App Engine. All code in this post is derived from the example project at You should be able to get a project up and running by copy and pasting the snippets in this entry, or you can clone the project and follow along. This example uses Spring Roo 1.1.1, Jersey 1.5 and App Engine SDK 1.4.0. A basic understanding of the involved technologies is assumed.