New app: SensaView

April 30, 2012

I have a new app on the app store! It’s called SensaView, you can get it here.

SensaView shows you the output from the various sensors on your iOS device. It will report location (lat, long, altitude), vector (course, speed, heading), accuracy estimates, accelerometer, gyroscope, and magnetometer.

It’s not super exciting but it’s laying the groundwork for a new paid app I’m working on.

Showing and Dismissing a UIPickerView Control

April 28, 2012

There seems to be no standard way of dealing with UIPickerViews. Sometimes they are attached right to the bottom of the interface and never move around (like in the built-in Clock application.) Other times they fly up from the bottom like the keyboard but are embedded in a UIToolbar or UIActionSheet.

I’ve come up with a way of dealing with UIPickerView controls that I kind of like. Here’s the gist:

  1. The UIPickerView hides and shows very similar to how the keyboard hides and shows.
  2. When the UIPickerView shows, the rest of the view (including the navigation bar) is dimmed.
  3. Tap anywhere in the dimmed area to hide the UIPickerView. The dismissal tap just dismisses the UIPickerView and won’t be picked up by the view in the background.

To do this we create a custom UIView whose only job is to dim the background and receive the dismissal tap. Once everything is wired up, we hide and show the picker with – (void)showPickerView and – (void)dismissPickerView. Easy!

Here’s why I like it:

  1. Dimming the background puts the UI focus on picking. You can still see the background and the context in which the pickerView showed up (and it can still change state depending on what has been picked in the view.)
  2. A “done” button, while unambiguous, would cover up precious screen real estate and is a smaller target to hit than a dimmed background.
  3. At least for me, tapping the dimmed background to dismiss feels very natural. The fact that the background is dimmed implies that my taps will not affect any of the controls and whatnot in the background.

I’ve created an Xcode project that has an example. Feel free to take a look and use this in your own projects. The comments should make everything clear. I tried to think of a way to make the whole thing more modular (perhaps implementing this all as a subclass of UIPickerView?) but the complexities of having views in the navigation controller and animating everything confused me. Maybe when I’m smarter…

If you find this useful, let me know.

This week’s update.

April 26, 2012

What do we have this week? My MD5 Calculator has been updated to include a way to tip the developer $0.99 (or whatever the regional equivalent is) via in-app purchase. Fun! Also, I removed the ads. Yuck is gone!

Oh, and it’s pretty cool when I have to remember what apps are still awaiting approval.

A small note on sales.

April 18, 2012

This is just going to be a little post on sales. I hate talking about money and marketing. But it’s sometimes necessary. So here we go.

Item #1: iAds. I added ads to three of my free apps. They are not high traffic apps and don’t have a huge level of engagement. I’ve made maybe $7 in the past three weeks with all these apps. I won’t go into the numbers but I’m just going to conclude that my experiment in seeing if adding ads to my free apps was worth it is a failure. Conclusion #1: adding advertising to low-traffic free apps is totally not worth it.

Item #2: I increased the price of Lens•Lab from Tier 1 to Tier 2 (which means an increase from $.99 to $1.99 for those in the US.) I did this a couple of weeks ago and sales have not been affected one bit. This is great and leads me to conclusion #2: for useful, niche applications, people are not nearly as price sensitive as you might think.

Item #3: My boil addition timer, BrewTime, has been released but sales weren’t as you might say, spectacular. I posted on Reddit’s homebrewing subreddit that I had made a homebrewing app and made a post with a link to the app and 10 promo codes. That day, I ended up giving away 10 copies but I sold more than that. Sales were strong that day and many days following. I tried to not seem too smarmy but I figured that other homebrewers might find the app useful. Conclusion #3: for useful, niche applications, you can instigate small-scale, organic communication with potential customers and not feel like you’re selling your soul and being skeevy.

Anyway, I should probably not call these “conclusions”, more like little things I’m learning along the way. What think?

App-A-Week Challenge Update, also Font Tip! (Also, Snippets!)

April 16, 2012

PizzaPal has been updated to 1.1 with the following changes:

  • Removed iAds.
  • Added 4th pizza comparator.

Yeah, I know, that’s kind of cheap to count that as an app release. Whatever, making an app a week is no picnic.

Oh, also, if you do any kind of coding/programming, you should totally check this out:

I’ve switched my programming font of choice from the venerable Consolas for BBedit (14 pt) to the wonderful Inconsolata (15 pt). Inconsolata is simply a beautiful monospaced font that is easy to read, renders beautifully, and yet has TONS of character. My only criticism so far is that the underscore (_) character renders a bit thin. OH WELL. Seriously, download this font and give it a whirl. You shan’t be disappointed.

Also: holy crap why have I never used snippets in Xcode 4 before? Maybe because it’s not entirely obvious how to use them or maybe I was just not as smart a programmer as before. Anyway.

Here’s how to use snippets:

1) type out the thing you want to make a snippet of. Any “bubble text tab” thingees you can create with <#sometext#>. Drag it to the snippet library.

2) Give it a nice title, completion shortcut, and double-check for perfection:

3) Since snippets are sensitive to scope, you can make one for interface and one for implementation!

4) To use, just tap the completion shortcut letters, for example:

Basically, if you find yourself typing similar things over and over again in Xcode, make a snippet RIGHT NOW!


April 10, 2012

You thought I forgot about you. I didn’t. I have apps waiting on approval. I have new apps that are *this* close to being done. I have other app activity. App app app. So, yeah. App.

App-A-Week Challenge, Week 5

April 1, 2012

Hey folks. I know you’re all just on the edge of your seats waiting to find out what’s in store for this week. Here’s what’s going on:

The music/pitch app I was working on will need more work. I thought I had a good implementation of the “zero-crossing” pitch detection algorithm but, while it works great for strong, coherent pitches (like pure sine waves, voice, etc.) it fails spectacularly for stringed instruments (which is what the app is made for.)

So, that means I’ll have to take more time and figure out how to implement pitch detection using vDSP FFTs. That’ll take some time.

In the mean time, I’ve decided to do the following:

1) I’m going to remove iAds from my free apps. I added iAds to see if it would be a nice way to add some extra income for silly, low volume apps and it turns out that it’s not making any money at all. And I hate ads.

2) I’m going to add a Tier-1 “in-app purchase” option for the MD5 Calculator. It won’t change the functionality, it will merely provide an opportunity for anyone who likes the app to throw some money my way.

There are other apps in the works. This isn’t a super exciting week, but hey. They can’t all be.