Development Score Card

Score Card 2.0 Has Been Released

It’s been nearly 5 years since its latest release, but Score Card 2.0 is finally here. The last release was designed when everything was skeuomorphic and iPhones just received their first different screen size. That design limped through the years, so it finally was time to make the jump to a modern look and feel. That, and it was going to get kicked off of the App Store if I didn’t update it.

My wife, Mallory, helped give the app an actual logo and design. This is a big update to the hand-designed look I slapped together in the beginning. Score Card 2.0 also adds a few new features:

  • Player names are now saved, so starting games with your friends and family is only a few taps away.
  • Editing scores is now done on the game screen, and can be done on an individual basis. This makes scoring quick and easy.
  • Games can be edited after they have been started, so you are no longer stuck with a setting once you’ve started the game.

On a technical note, the entire app has been rewritten in Swift 3, and uses my Structure library for data management.

Please check out Score Card on the App Store. If you like it, please also leave a kind review. I’d appreciate it.

Development Structure

Structure 1.0.1

Structure 1.0.1 has been released. This release brings minor changes to best practices for Swift. Specifically:

  • Audited closures for use of @noescape.
  • Audited parameter throws for use of rethrows.
  • Concurrency testing.
Approximate Speed Development

Announcing: Approximate Speed 1.0

My friends and I enjoy auto racing, and every year, we make the pilgrimage to the Indy 500. This year, one friend wanted a way to determine the average speed of a driver on the track. Instead of stop watches and maths, I decided to write an app to do the work for us.

Approximate Speed is an iOS that, given a fixed distance, can be used to determine the average speed of an object. Check out more information about Approximate Speed, or get it on the App Store.

Development Structure

Announcing: Structure 1.0

Before Swift, projects that I worked on used SQLite directly. I could have done the same with Swift, but it felt like I could benefit from writing a wrapper. I used this as a means to teach myself Swift, as well as create something that I could reuse throughout my projects.

Enter Structure! Structure is by no means a complete SQLite wrapper. This framework performs the basic CRUD operations I need, as well as maintain some semblance of thread safety. It also provides simple data access and value transformations.

If you’re curious, check out the GitHub page. There is some simple documentation and lots of tests to get a feel for how the framework works.


Monitoring Processes on the Command Line

Updated 2012-11-06 with an alternative.

Sometimes you have a long running process that is firing off many commands in a row and you don’t get much output from the command. I like to have an idea of what’s happening, so I employ a simple Bash script that I’ve hand typed a million times. It keeps just the data I want on screen and auto-updates ever couple of seconds, so I can keep an eye on it while I’m working.

while true
    # Some command goes here
    sleep 2

If you have any modern shell, you can type this in with the line breaks. Now I have a clear console that is showing me just the data I want.

How do I use this? Right now, I have an apt-mirror post mirror script that rsyncs multiple directories. This is an automated process that runs quietly, so I can use ps -ef | grep rsync to monitor the process. I’ve also used this to monitor massive file creation / deletions, so the command could be ls -l | wc -l to count the files in the director. I use Hylafax, so I can monitor the modems with faxstat -a.

An Alternative

After posting this article, it was brought to my attention that I could just use the watch command. As with a lot of complex technologies, you tend to learn to do something one way and stay oblivious to other possible ways. watch is part of the procps project, so instead of the above loop, you could use:

watch "ps -ef | grep rsync"

This by default runs the given command every 2 seconds. Check out the man page for more options.

Unfortunately, watch is not part of the default UNIX stack on OS X. It seems to be available in Homebrew, but since it isn’t already on my system, I’ll probably stick with the bash script. Old habits die hard.