A Shell Script for Working Step by Manual Step

While I prefer a project’s deployment process to be automated, some systems just aren’t made for automation. For instance, many content management systems are designed to be updated by a live user— someone manually selecting check boxes, filling in text fields, and clicking submit buttons. Often, all that configuration is stored in a complex format in the database, making it risky to update with a script. In the end, a manual process is not only the cheapest, but also the safest way to go.

But even though the process may be manual, remembering it doesn’t have to be. Read more on A Shell Script for Working Step by Manual Step…

Developing on OS X Inside Vagrant

I maintain an OS X tool for sandboxing the popular Homebrew package manager called brewdo. Because I need my MacBook to keep working day-to-day, I need a way to develop features and fixes in brewdo without risking my system’s integrity.

If brewdo targeted Linux, I could very easily use Vagrant to spin up a Linux system and develop it there. brewdo targets OS X, though. And although Apple gives permission to virtualize it, they don’t give permission to share copies of it.

But all is not lost. OS X on Vagrant is achievable, and without skirting Apple’s copyright. Read more on Developing on OS X Inside Vagrant…

Living Style Guides – Bring the Benefit of Devcards to Any App

One of the big ideas in the ClojureScript community right now is devcards. Devcards are a way to work on the components in your application without having to work in the application itself. Instead of finding your way through the application and manually exercising a component’s possibly many states, you have a page of devcards showing those states.

Devcards are especially useful for component states that aren’t easy to test, such as those seen only by particular kinds of users or at certain times of day. Bruce Hauman has called “increasing the bandwidth of feedback.”
Read more on Living Style Guides – Bring the Benefit of Devcards to Any App…

Writing Better Commit Messages with Tmux

I’ve been trying to write more detailed commit messages—breaking down what’s happening in big change sets, explaining problems I encountered and how I solved them, pointing out potential weaknesses in the code or future improvements—but it’s not easy to remember all the particulars while staring at the commit message editor.

Fortunately, Tmux can help.
Read more on Writing Better Commit Messages with Tmux…

Better System Tests – Increasing Testability without Sacrificing Elegance

Writing tests for your software is a great idea! I’m glad we’re all doing it. And I’m glad we’ve all put a lot of thought into categorizing the tests–by unit, integration, system, etc. Of all the tests you can write, my professional experience has shown repeatedly that system tests are the most valuable. Nothing gives you as much proof as validating the entire system working in concert. Read more on Better System Tests – Increasing Testability without Sacrificing Elegance…

Free Cloud Git and CI for Private Mobile Projects

Update: since this post was written, Ship.io has announced that they are shutting down at the end of October, and they are no longer accepting new signups. Greenhouse’s service remains available.

On my last project, we used GitHub private repositories and CircleCI continuous integration. Both services were fantastic. So when I recently started a personal Android project, I wanted to try using these or similar tools. My project needs to live in a private repository, and I’m not yet willing to spend any money on it. What are my options?

Read more on Free Cloud Git and CI for Private Mobile Projects…

What I Learned in 10 Years at a Software Consultancy

August 2015 marked the completion of my tenth year at Atomic Object. Inspired by Shawn Crowley’s recent post, Consultancies: The Smart First Job for Software Developers, I’m going to take a look back at the wide array of industries and technologies I’ve worked in while at Atomic. How might those 10 years have been different working for a non-consultancy, like a product company?

Read more on What I Learned in 10 Years at a Software Consultancy…