Friday, December 31, 2010

Well, not as much of a dev day as planned yesterday

Lots happened that I hadn't planned, and most of it wasn't programming.

Still, I did get a couple hours in yesterday and a small amount today.  Here is what I completed:

- Added an opie splash screen
- Added an internal class that will help me in the future make requests more easily from the OpenCaching site.
- Used the new class to fill the search results (to know that it works).
- Added the direction and bearing on the search results page from your current location.
- Updated the OpenCaching website icon and name to be the actual logo.
- Fixed a few memory leaks
- Added a GPX get function to cache the GPX results for the search list.
- Updated the search list code to be more friendly with user preferences (once I add them).
- Changed the search list to get 15 at a time instead of 100.  More would be nice, but practically unnecessary every time.  This will likely get looked at again later, maybe as a preference.
- Added a target label to the compass screen.

Not a ton of visual changes, but I'll post a screenshot of the changes here for anyone following along at home.

Wednesday, December 29, 2010

Today is a dev day

Today I will be spending some time on the opencaching project.  I'd first like to state what is on my list and what I've gotten done.  This is hopefully informative, and also helps me to stay on track.

I'd better give a quick update on where things are though.  It's been busy with family and work the past week plus, so I've not done a ton.  Visually the most important thing is that there are now icons on the tab bar at the bottom.  The "SavedCaches" is now "Downloads", I still may change that in the future.  I think I also would like to have the target and current coordinates differentiated more than they are on the compass screen.

Okay, on to the list!

What's working:
- Easy searching for nearby caches.  This is done, but I'll still be working on the "easy" pert to make it easier.
- Offline cache support.  The search list gets saved already and works offline.  I still need to save the cache details.  I am thinking I'll auto-save the top ten closest and also any that the user looks at.
- directional compass.  This works similarly to the Geopher Lite compass and should work just fine.
- map support.  The map screen is very usable.  There are things that could be improved here, however it is nearly completed, at least for the first go-around.
- Navigon coordinate sending.  I happened to have navigon already so this was easy to test.  I am considering adding tomtom and the google maps app to this as well, which I expect to also be straightforward.

At this point the app is usable to find a cache.  There is no way to currently log in to the website, so logging etc. will have to come later.  You can use the web view for this by navigating to their site and doing it as if it were a browser.  I may leave that in initially, depending on how far things get.

Things to do:
- Create the cache details screen.  This will have a ways to go, I am not yet decided on a design.
- Add a bearing/direction to the cache list screen.  Right now the results show you caches that are closest to you, so if you have a cache .2 miles and .3 miles, those caches could be .5 miles apart even though they are right next to each other in the list.  I'd like to fix this, so we'll see what happens here.
- GPX parsing.  Ideally I'd like to be able to drag a PQ or large GPX file into the file sharing section of iTunes and have it pulled in and ready to be used by the app.  The prototype is here, we just need to keep going on this.
- oAuth login for the site.  This will allow logging and (later), placing or editing cache details for your own hides.
- Automated cache-to-cache finding.  The idea here is to not really have to look at the list, but have the option of marking a cache as found, then having the app itself choose the next best cache to start finding.  This will likely come later, but I'd like to give it a shot for 1.0.  We'll see what time permits.
- create a settings screen.  There are plenty of things that could be here.

Probably more, but I've got to wrap this up.  More later!

Monday, December 20, 2010

Map tweaks

Just a quick update before Christmas.  (Merry Christmas!)

I took a coding break over the weekend, work has been rough and I needed to take some non-productive relaxation time.  (With 4 kids I don't get a lot, but I take what I can get when I need it!  =) )

I have done the following things since the last update though:
- Added an alert in the map view if there is no network reachability.  More needs done here but this works in a pinch.
- Changed the map zoom to work more as expected when swapping to the map view.  Also tapping the current location arrow twice will do two different things -- first tap will move the map to center on your current location.  An additional tap will zoom you in close to the current location.
- Added the new 4.0+ GPS accuracy.  Geopher Lite used the best accuracy available at the time and while it was a battery drain, I got a number of questions on why Geopher Lite was more accurate than other GPS apps on the iPhone.  I'm thinking that (later on) I'd like to change this so that it's dynamic -- so the update frequency changes depending on how fast you're moving and/or how close to the cache you're looking for you are.  There are some problems with this, but I'm confident that you could have it tone down the battery drainage if you're further away from the target cache.  Then again, that may just be a setting that defaults to the highest setting.  We'll see how things go.

I also heard recently that sending a target to navigon would be possible, so I'll add that to my list of todo items as well.

There have been some nay-sayers on the iPhone's GPS capabilities.  I personally don't think an iPhone is any worse than the cheap handhelds, especially from a few years ago.

Even so, I'm thinking of making an averaging system for cache placement for better coordinate gathering over a minute or so.  Even if it's just superstition

What are your thoughts on cache placement with an iPhone?  Good or bad?  And why?

Friday, December 17, 2010

More Progress

Things are going well for the OpenCaching app.

I've done a lot of work with images, both icons and the compass view.  I don't know that I'm done, but I would feel "ok" with someone using what I have now.

So, things that are done:
- target coordinates are auto-saving.  Should have been doing this from day 1 with Geopher Lite, as part of the model.  That's now corrected, no overhead there outside the model.
- New compass should be more readable.  Not in love with it, but looks better than the other.
- Added the map view.  Usable, based on the map view in Geopher Lite.  It still can do odd things when you swap away and back to the map screen.
- Added in an experimental view that shows you a list of caches in a "test.loc" file.  This will be expanded later to parse and import GPX data.  This is done through iTunes file sharing and later, through accepting files that are sent to the app from places like email or safari web downloads.
- Added a no-lock feature to the compass screen so the phone/pad won't go to sleep if you're on the compass screen.
- Most recent find results are now cached and it will use that cache if you are offline.
- the Map probably doesn't work (at all) if you are offline.

Much easier to illustrate this with screenshots.  Keep in mind that the "SavedCaches" is test-stage functionality, it will look much better later.

Wednesday, December 15, 2010

First pictures!

More of a status update really.

I guess I haven't really told you guys that this is semi-working already have I?  It's (barely) usable to find caches now, though it has a long way to go!

The compass/arrow screen is working with basic functionality. Current and target coordinates display, the compass and arrow rotates towards north and the cache respectively. Distance from cache, bearing and accuracy are displayed.  Text, compass, and arrow need art/usability improvements.

The "Find nearest" screen functions, though it does not cache it's results. It currently displays the cache name, OX code and coordinates. I added a refresh to this list last night here, which works fine. This list needs at least a distance from your current location on it. I've also had a request to add the bearing, undecided on this.

The cache details screen shows the available information of a given cache and allows a target to be set. This needs to be designed to have a summary (simple) view and a details view.

There is also a tab that shows a web view of the web page. Unsure of if this will ultimately make it to the final version, but the page is currently completely usable through the iPhone. Though I haven't tried downloading GPX files, that likely doesn't work.

Things to do for the "initial" version to be completed:
- target coordinate saving (have to set it every time right now)
- search list saving for "offline" use. This will be auto-saved/detected, with a possible manual override, though the override may not make it into the initial version.
- add a simple map view with pins for current and target location. See this link for the basic idea, it will probably start out very similar.
- add the name to the target screen, clean the target screen up some.
- import of .LOC files and a list to show those. This may also get GPX support. I have this working in my iPad prototype for LOC files already, so that's where we will start. This list may turn into a "favorites" list as well.
- a settings page to allow you to do things like filter found caches or not, login to, etc.

pending further information from garmin or thought, also the following:
- log/create/edit caches on the phone.
- The ability to send pictures and email from the app to yourself or to others
- external google maps link, web link in safari, etc.
- some sort of todo list option to create a list of caches to find. Sort of a favorites, but not exactly.
- auto-caching for caching sprints.
- some kind of outdoor mode to be able to see the compass screen better in direct sunlight.
- tabs need to be renamed & given icons probably.

Tons more details and even other ideas that aren't here yet.

edit:  Had to show off my new icons...  Not yet perfect, but a good start.

Saturday, December 11, 2010

I once had a dream...

...and that dream was impeded. After continuing on with that dream for a small while I realized the futility, even if I wouldn't admit it to myself immediately.

I like what groundspeak offers for the iPhone. Their geocaching app is very usable. It's got all sorts of cool stuff in it.

Largely it's for the most part not what I would want. It's overkill.

Groundspeak has a problem in that many geocachers are pretty hardcore. They want hardcore features. They are loud about what they want. And... well, I don't. I'm not.

I want to be able to go grab a cache on a whim. I want to just DO geocaching without having to have a ton of prep time or management time.

So that's what I'm shooting for with this iPhone app. No big fuss, maybe a bit more limited than some, but super simple and easy to use, but powerful enough to get the job done.

Wish me luck!

Friday, December 10, 2010

With the advent of by garmin, I've decided to do what I never could do with Geopher Lite. has a 3rd party API system which can be directly accessed by an iPhone. Someone else has already stated that they will be making an android caching app as well.

The basics I have planned:
- Easy searching for nearby caches
- Offline cache support and export (initially very basic)
- Automated Cache-to-cache finding.
- Login to for Filtering and logging finds.
- directional compass and arrow to lead your way.

Things I am considering:
- GPX import/export, tied into the offline cache support.
- More extensive offline cache support features
- map support
- Cache placement in the field
- Editing caches in the field
- Device sharing of cache waypoints
- multi-cache support
- And others that didn't make the public list.

If you have any ideas, drop me a line.

Friday, January 1, 2010

oAuth Login Success!

You have successfully logged into's oAuth service.