Saturday, February 26, 2011

Updating the MapKit plugin for TapLynx

Map of 1905 Lewis and Clark Centennial Expositionphoto © 2009 Oregon State University Archives | more info (via: Wylio)
Our MapKit plugin for TapLynx seems to be well accepted so far. We've noticed a few bugs that have been fixed and are excited that two applications already incorporate the code. The Albuquerque Journal (who also use our Citizen Reporter plug in) and another client who has not yet had their app approved. We'll update the name when it is approved as we don't want to jinx anything.

New buttons
It was when we were working with our other client that we discovered the need to add a scrollable list to the plug-in. That application has about 30 pins in the map and so expecting a user to tap one each one was not a good experience for the user. So we have added a button to the interface and now display a list of the places (in alphabetical order) that a user can tap to scroll to and display the callout for that place.

As usual, we are using the excellent glyphish icons. However, we had to build a listing icon since there is not a simple list included in that set. We were worried about getting in trouble with Apple if we copied their list icon too closely, so we have four bars instead of three and we space our bars closer together.

As with our other TapLynx plug ins please use these in your projects and let us know if we can help out. The TA_Mapkit plugin for TapLynx can be found on github.

The Problem With IPv6

ipv6photo © 2010 Aldon Hynes | more info (via: Wylio)
For "normal" people, the move to IPv6 should be mostly uneventful. The creation of the DNS system shields users from having to memorize the actual IP addresses of servers they want to use. Without DNS you wouldn't browse to sewanee.edu rather you would head on over to 152.97.17.166 to read about the latest events. Because of DNS a regular user doesn't care that soon 152.97.17.166 will be something like FE80:0000:0000:0000:0202:B3FF:FE1E:8329 or FE80::0202:B3FF:FE1E:8329 in the collapsed form.

But, System Admins and us technical types routinely think about machines in a network by their IP address. Ask any of your IT friends to name an IP number of a machine they use or their favorite IP subnets and guaranteed, they will be able to give you one, or lots. It may be the IP for the main router of their NAT network (often 192.168.something.something) or it might be the IP of one of the big DNS services (8.8.8.8 is Google's). These are numbers that can be kept in someone's head and actually used.

IPv6 numbers, not so much.

Thursday, February 24, 2011

Alternative to DimDim

Now that DimDim has been taken out by Salesforce, we are looking for an alternative. The issue for us really is that we need screen sharing capability with our clients and our partners. We don't really need a lot of the other premium features that people want us to pay for. It is for that reason that we can't justify purchasing a solution like GoToMeeting ($50/month) or FuzeMeeting ($30/month).

Skype screen sharing so far has been the best option if people have a Skype account. We are also looking at the free version of join.me (the paid version of $30/month isn't for us). The thing that makes all of this tricky is that we don't want to share what is on our screen. We want to share what is on the customer's screen. So, far that has been the killer issue that makes solutions difficult to find.

Why are we being so cheap? Well, we might have need to share a screen once or twice a month for about an hour at most. Also, we might share a screen to solve a single problem and don't want to have the other party have to install a bunch of software (sometimes that is beyond them). We are willing to pay for a solution but would rather something a la carte since we cannot project usage.

Any other ideas for us?

Wednesday, February 23, 2011

App Rejected for Not Being Useful or Entertaining?

/dohphoto © 2008 hobvias sudoneighm | more info (via: Wylio)
Building iPhone apps for other people always has the risk that the app will be rejected. We work really hard to make sure that there are never rejections for bugs or crashes. Today, however, one of our clients got the dreaded reason 2.12 rejection:
2.12 Apps that are not very useful or do not provide any lasting entertainment value may be rejected

If you would like to share your app with friends and family, we recommend you review the Ad Hoc method, on the Distribution tab of the iOS Developer Portal, for details on distributing this application among a small group of people of your choosing.

It's hard to figure out how to respond to that (after the initial shock wears off). We wonder if the fact that the niche for this particular app is not American and therefore probably not known to the reviewer has any bearing.

While we ponder our next move, we are looking at hybrid/Dashcode web apps and trying not to think about all of the apps we know about that are in the store and are way less entertaining than this one would have been.

Saturday, February 12, 2011

Stackoverflow and Altruism

We are closing in on a reputation score on Stackoverflow of 400. We now feel compelled to find questions we can answer to get the score up. The creators of that site have really hit on a valuable combination with their reward system.

In some ways the site is like a real-time quiz show. I can go there anytime and be presented with infinite programming questions that need an answer. If I answer correctly I get points.

Two odd things about the site: often the answer is easily found by searching the official documentation for the language; and most every question we've ever had has already been asked, so is there an upper limit to the number of questions that the site should support?

Friday, February 11, 2011

icicle and savedInstanceState are examples of geek humor

iciclesphoto © 2006 liz west | more info (via: Wylio)
Have to keep remembering that at the core, computer geniuses like a joke as much as the next person. Today's example: by default, the bundle variable for an Android class is called "savedInstanceState". However in most examples, you will see it called "icicle". Icicle seems to have become common like "foo" or "x" in examles as a generic variable name. This is because it is shorter to type than "savedInstanceState" and because in earlier versions, the method definition for "savedInstanceState" was called "onFreeze".

Wednesday, February 9, 2011

MapKit Lat/Long "Errors" and Decimal Precision

Benchmark DX1095photo © 2008 Chuck Coker | more info (via: Wylio)
After the recent release of our MapKit plugin for TapLynx we got an email from someone who wanted to know why every point on their map was about 2 miles (3.2 km) to the East. After we got over the initial panic and fear that every developer gets when a piece of code they released to the public might have a bug we started to wonder about what could have caused the issue and why things looked fine on our machine.

As we looked at it more, we wondered if decimal precision was the issue.

I found this websitewww.tceq.texas.gov/gis/geocoord.html that talks about translating each decimal place of precision into meters of offset.

Here are some test we ran modifying the precision for the location of Elvis Presley's Graceland mansion. The address we fed into http://geocoder.us was 3765 Elvis Presley Blvd, Memphis TN 38116. This caused geocoder to give us a decimal latitude of 35.045988, and a longitude of -90.024982. When we plug these numbers into our MapKit plugin we get a nice pin right at the front gates.

Next we made a number of duplicates of the entry and for each one took off one decimal place (e.g. 35.045988, 35.04598, 35.0459, 35.045, 35.04, 35.0). To make it easier to see the effect we did latitude separately from longitude. For each one of these maps, we have six pins drawn. In both cases, the first few pins are effectively in the same place so we know that -90.024982 and -90.02498 are pretty precise measurements for an address. However, -90 is pretty far over to the East. Similarly, as we decrease the precision of the latitude measurements, our pins head South down Elvis Presley Boulevard and 35.045988 is pretty far from 35.
Changing Longitude
Changing Latitude

So, at least to us, this says, five or six decimal places are needed for a good street address. Fortunately, MapKit uses double float numbers for the latitude and longitude values. That means we have plenty of decimal places to work with.

Since the Earth isn't a perfect sphere and since some location points will be unaffected by added precision (i.e. 35.5 = 35.50000000) we expect that changing precision has different impacts on map points depending on the location of the map point.

Friday, February 4, 2011

Using FogBugz in Eclipse and Elsewhere

Time Managementphoto © 2010 Ryan Hyde | more info (via: Wylio)
We started using Kiln and FogBugz in December. When we did January's invoicing it was AMAZING how much better things went. We are sold on FogBugz. We love it. We use "Working On" all of the time. Also, we just saw the new "Mobile Site" in FogBugz (Look under the Extras menu) and it looks great on our iPhone.

For meetings, admin, business development, etc, we have created a project called Tyree Apps and cases as "Schedule Items" for those random things. That way we can use Working On, to track all of our time.

Though the website and web app are powerful, we like things to be integrated. Today we set up EclipseBugz as we started to set up Eclipse. We're going to need Eclipse as we try to figure out whether it's going to be better to learn how to program in Android or just make a partnership with a good Android programmer who needs a good iPhone programmer.

How We Set up EclipseBugz on our Mac
As with other things on Sourceforge (or maybe just because we're inexperienced in Eclipse), in order to get EclipseBugz to work you need to do a few things:

  1. In Eclipse go to the Help -> Install new Software menu
  2. Add a new location by clicking on "Add" and then entering http://eclipsebugz.sourceforge.net as the location.
  3. Follow the prompts to install the packages.
  4. Go to Eclipse preferences and find the EclipseBugz entry
  5. Enter the main url of your fogbugz installation (for Tyree Apps, it's https://tyreeapps.fogbugz.com/)
  6. Apply the settings and close out of preferences (you might get asked for your FogBugz credentials here, if so, enter them)
  7. Still in Eclipse, go to Window -> Show View -> Other and find the EclipseBugz entry and click on it to open the Eclipsebugz window.
  8. And there are your cases!


Pretty cool. We've just got it installed in Eclipse so haven't figured out the advantages over the web view. Basically, we need to be able to change time estimates and to do "Working On".

Thursday, February 3, 2011

App Store Market Research with Numbers

App Storephoto © 2008 Cristiano Betta | more info (via: Wylio)
Our renewal notice for our Apple Developer license arrived the other day. It got us to thinking about what happens to the apps when someone doesn't renew. Surely the app goes away, right? That made us wonder about the longevity of apps so we did a little counting.

A coin flip app like Carter's Coin Flip is a relatively uncomplex piece of software. In our case, the app serves the purpose of letting us focus on the mechanisms for marketing, compiling and updating software. It also gives us an app that lets us test using the iTunes Connect features. 99% of our revenue from software comes through writing things for others. So, it is nice to have something of our own where we can experiment so that when it comes time to work with the customer, we have more experience.

To look at competition for Carter's Coin Flip, we did a search on "Coin Flip" in the app store. Then we counted and tallied all of the results:
Price, apps in the set were between Free and 3.99 in price.
Free: 39
99c: 45
1.99: 7
3.99 1
4.99 1
So, this tells us that our recent experiment to raise our price from .99 to 1.99 was doomed ever before it began. At 1.99, we had 0 sales for the month (the price is going back to .99).

Category, apps in the set were divided among Entertainment, Education, Games, Productivity, Utilities and Lifestyle. Carter's Coin Flip is currently an "Education" app.
Entertainment: 49
Education 2
Games: 23
Productivity 3
Utilities 13
Lifestyle 3
This one is hard to think about. Clearly, in Education, we must stand out but perhaps there just isn't as much traffic there. We are going to change our "primary category" to a few of these others and see if it has any effect.

Last Update, this is the date that the app was last updated in the store.
2008: 4
2009: 23
2010: 58
2011: 7
Since we're writing this in Jan/Feb of 2011 the fact that 60~ apps were updated in the last year seems to show that people are still active, or coin flip apps are a good "first app". It will be interesting to see if any of the 2008 apps are still in the store next year. They are: CoinFlip (.99), iChoose(FREE), iFlip the Coin (.99), RPG Dice(.99).

We think the list that the store provides is sorted by search term match but we aren't sure. Regardless, our app is about halfway down (unfortunately, "below the fold") the list. It has sort of hovered at that point in the list the entire time it has been on sale.

Also, interesting. When we took these measurements last week, there were 93 results to the search term "Coin Flip". Tonight there are 96...a vibrant market.