When to Write Code Tests

Michael Hartl on when to write tests based on his experience

  • When a test is especially short or simple compared to the application code it tests, lean toward writing the test first.
  • When the desired behavior isn’t yet crystal clear, lean toward writing the application code first, then write a test to codify the result.
  • Because security is a top priority, err on the side of writing tests of the security model first.
  • Whenever a bug is found, write a test to reproduce it and protect against regressions, then write the application code to fix it. Lean against writing tests for code (such as detailed HTML structure) likely to change in the future.
  • Write tests before refactoring code, focusing on testing error-prone code that’s especially likely to break.

❂ A Milestone

MakePastie In the App Store

Today is the first day that I have an application available in the Apple app store. That means I actually “shipped” something. Pause for dramatic effect.

Learning to program in Swift has been fun, but challenging. All of the programming I have done in the past has been procedural in languages C or Pascal. But, it’s past time to update my skills and start thinking in objects.

After attempting and deciding the iTunes U Stanford Class, is too advanced for me, I joined Treehouse at end of September and have worked through their Swift and iOS tutorials. So far, so good. The slower pace and hand-holding is nice.

Am I on the road to be an Independent iOS Developer? No plans for that, but I am going to finish the Treehouse tutorials and see where to go from there.

The app is a native client for the pastie.org website. It is a free app with an iAd banner. You can find it on here.

Update:  A good exercise, but the app was removed when pastie was shuttered.

❂ A Better iPhone Keyboard?

I love the idea of a better way to input text on my iPhone. I celebrated when Apple announced alternate keyboard support last year with iOS 8. I was finally going to join my Android colleagues in swiping bliss1. There are so much better ways to input text into the iPhone than that traditional keyboard. I love inputting text with swipe keyboards2 and am constantly amazed at how well it does. But I don’t use them. Here’s why.

Flakiness. Many of the third-party keyboards are unreliable. I switch apps or use the launcher to find another app and things don’t work right. There is a several second delay or I don’t get a keyboard at all. I must admit that the flakiness has improved significantly since launch, but I still have problems. It also seems to vary by the developer.

Globe Button Position. How hard is it for alternate keyboards to put the “globe” icon in the same place and do the same function? It should be on the bottom row, the second one from the left and take you to the next keyboard. Simple. Easy to go through them quickly. But no, Emoji++, WordBoard, Switftkey, and Swype all have different ideas about the placement and the function of the globe key. Developers, please don’t be creative here!

Emoji Integration. I love Emojii++ by David Smith. His Emoji keyboard is easy-to-use, stable and much better than Apple’s solution. He doesn’t put the globe button where I would prefer, but I deal with it. What does bother me that I don’t want to switch keyboards to use Emoji. I only use a handful of Emoji and would like them integrated into my text input keyboard. I like how Swype suggests an emoji for the word– easy to use. I also like how SwiftKey makes a button to access emoji similar to accessing symbols. Good ideas.

Space Bar. Not a must have, but nice and preferably in the standard position. Phraseboard didn’t have one and I missed it.

Dictation. And finally, the biggest problem and the one that cannot currently be solved. Apple does not give third-party keyboards access to this iPhone function. Hopefully, a future iOS release will add the dictation option to other developers.

So now what? I have to have an alternate keyboard to use emoji and the standard keyboard for dictation.

My current solution is to use WordBoard as my second keyboard. It is a keyboard of “one-click shortcuts.” As shown in the picture below, I have set up three types of shortcuts on my keyboard– form fields, emoji, and hashtags. For example, when I press “fn”, it types “Ben.” It doesn’t give me full access to all the emoji, but I have created shortcuts to my favorites. I have been using WordBoard for over a month and passes my sophisticated not-as-flaky-as-others test.

Improving WordBoard. There are two improvements that I would like to see. First and most important, I would like categories like Phraseboard. Second, I would like to see the regular keyboard improved. It recommends that you don’t use it, but since it’s there, it would be nice if it were at least as good as the default one.

I like the idea of alternate text input methods and look forward to seeing what developers come up with this year.

  1. Not really. I only know a couple people that have Android phones and they’ve never mentioned their keyboards. ↩︎
  2. I think Swype and SwiftKey both do a great job with text input. ↩︎

❂ Apple Watches and More

My thoughts on today’s Apple Event.

Apple TV

  • It’s encouraging that HBO doesn’t think they need cable providers anymore. This is the future. Fortunately for HBO, they don’t have to deal with those pesky blackout issues.
  • Why didn’t they upgrade the hardware instead of lowering the price? Will a $30 savings result in that many more new customers?


  • I love Apple Pay and often choose a store based on whether they accept it. It works every time without a problem. Square needs to make it available to the small guys that I love to support.
  • I hope CarPlay gets a lot more love from developers. I thought seriously about buying a CarPlay radio when I replaced the radio in my new car. It just seemed like a lot of money to spend on a product that wasn’t quite ready for prime time (according to most reviews).
  • Medical Research. Wow. Open Source. Wow.

New 12″ MacBook

  • So thin! This seems like the perfect mobile platform. I’m just not sure that I would like it to be my only computer.
  • Looking forward to trying the new keyboard.
  • Pleased that Apple continue’s to make the trackpad more useful. Very nice. I hope this technology comes to their Magic Trackpad soon.
  • I can’t hear the fan on my MacBook Pro. I hope the decision to get rid of it doesn’t effect reliability.
  • I’m surprised they didn’t include a cell phone radio in it. Seems like that’s the future.
  • Is Thunderbolt dead?
  • If I bought a new computer today? Definitely a new MacBook Pro 13″ with the upgraded specs.


  • A lot of money for something that gets me little new functionality… and of course, I would need two so I can send my heartbeat to my wife…
  • I would be so afraid I would break it while I’m at work. I need to wear $30 watches.
  • Best selling point for me? Being able to answer my phone anywhere in the house without keeping my phone near me.