Articles by Jonah Williams

Jonah Williams

Jonah Williams

Writing Reliable iOS Tests

Tests help me write better apps. Writing tests informs my interface designs, expresses some of my intentions, and guards against regressions. As applications grow so do the number of tests I’m running as a regular part of my development workflow. If I’m not careful those growing test suites can slow down, become inconsistent, and eventually

Jonah Williams

Jonah Williams

Minimizing downtime when deploying to Heroku

Heroku has become our default hosting platform for most new projects. It’s simple to deploy new rails apps, encourages some good conventions, is able to provide the services most applications need, and can offers a simple scaling solution which can usually handle whatever growth new products are able to produce. We also like automated and

Jonah Williams

Jonah Williams

Writing Deterministic & Performant Specs with Capybara

Acceptance tests are a great tool for guiding [outside in testing] and defining application behavior. Unfortunately they are also notoriously slow and often brittle. At Carbon Five we usually use Capybara to drive our acceptance tests (either directly in RSpec feature specs or within Cucumber steps) so let’s explore some ways we might accidentally write

Jonah Williams

Jonah Williams

Readme Essentials

On recent projects I’ve been trying to practice a little bit of readme driven development and trying to demand that the project maintain a useful readme. Theoretically the contents of the readme are things the entire development team is familiar with. Capturing them in a readme has still proven to be a useful exercise which

Jonah Williams

Jonah Williams

iOS Integration Tests with Kiwi

I have been using Kiwi to run my iOS projects’ tests. Kiwi works great for defining BDD style unit tests which express the sort of nested assertions I like to write. Unit tests should test code in isolation so that they remain small, fast, and stable. So my unit tests mock or stub any network

Jonah Williams

Jonah Williams

Fixture data for iOS tests

I have talked about running xcode units tests from the command line before. When I’m running tests I often want to load some sort of test fixture data for use in my tests. For example: I might want to keep a file of recorded API responses so that I can stub out network calls. In

Colors
Jonah Williams

Jonah Williams

Customizing the iOS Keyboard

Our applications need input and the default iOS keyboards are often not optimally suited to providing the sort of data we want. When we find that we really wish the keyboard had some extra controls or want to help our users enter a specific set of symbols it is time to customize our apps’ keyboards.

Jonah Williams

Jonah Williams

Lightning talks at Carbon Five, 9/28/2011

Carbon Five had a set of lightning talks over lunch recently. Giving our designers and developers a chance to share recent experiences and side projects. A debate over the relative performance of different languages at our last hack night called for a measurable comparison. Mike demonstrated the resulting head to head to head speed test

Jonah Williams

Jonah Williams

Designing mobile APIs – dynamic content

On mobile devices native UIs offer superior responsiveness and performance but web views offer flexible layouts and data driven content. How can we combine the strengths of both to produce a highly responsive UI which can display dynamic data from a remote server?

Jonah Williams

Jonah Williams

Designing mobile APIs – error handling

While designing an api I need to provide reliable error responses to both protocol and application level errors. Here I’ll consider any error response generated outside our application stack to be a protocol error while those errors returned from my application’s codebase are classified as application level errors. On a recent project I started to