Monday, September 28, 2015

So You Want to Launch an App, Welcome to Being a Technical Writer

Launching any app means you have to do a lot of jobs that aren't programming jobs. They aren't but if you want to be an Indie and launch your own app you need to wear many hats.

Last night I did another pass through my user documentation. Included in this was a rewrite of the NewThistle LLC Privacy Policy to include information about Paddle Mate. I also tweaked it to add further clarification for the NewThistle Privacy Policy in general.

Next, I did another pass through the Paddle Mate app landing page which performs the duties of marketing material and user manual. This included lots of screenshots, information about how to use features of the app, and how Paddle Mate works with the Microsoft Band. I am happy to have those items checked off my sign-off list for app launch.

A part of running an App Business is taking care of these Technical Writing jobs, amongst the many other jobs you have to do.

I had most of this material already drafted and moved onto this task last night after I had made progress on my final few bugs. I am at a state now that another sign-off test is planned for tomorrow so I can verify that the few fixes I made tonight did not cause a regression (a regression is the introduction of a new bug or reintroduction of an old bug) which will gate the build (stop me from shipping).

I have said final few bugs more than once, I know that. The reason being that retesting sometimes brings to light new bugs. On a limited budget (my free time) I have to do the best I can with the time I have and sometimes that means days without much progress or reverse progress when I find a serious enough bug.

I am happy that this past weekend I made good progress with Paddle Mate in many areas. Not the least of those is getting these Technical Docs written for my users.

Sunday, September 27, 2015

Reusing What We've Built

Do not brood over your past mistakes and failures as this will only fill your mind with grief, regret and depression. Do not repeat them in the future. 
Swami Sivananda
To often the next big project is more exciting that the current project. We want to move on and do something new so we can learn and to keep us interested.

Sometimes I run into a wall of too much work and too little time. The desire to switch streams from the current project to something new is alluring. It is much easier to switch streams than do the hard slog through the work it takes to complete the current project.

Switching off a project that you see will take longer to complete and moving onto the more exciting new project can he a hard urge to fight. But if you want to ship code then you have to stick to the current project and own up to the time it will take to launch.

It was with this in mind that I was thinking we sometimes need to stop and look at what we have learned. What have we built? What knowledge have we built? Is there something we know now that we are not taking advantage of?

I know that for myself I am always interested in learning and solving new problems. Sometimes this desire to do something new gets in the way of leveraging my knowledge to build products that I would enjoy.

With the Apple TV, 3D Touch, a new iPad Pro, I was presented with the dilemma of should I build a new app that targets those platforms?

While debating this I thought about the work I have been putting into Paddle Mate to finish that last mile from done to shipped. Though I have cut a lot of features to get V 1.0 out the door, I still have some high standards for the V1.0 when it comes to being able to track my workout. It has to work, foreground, background, pausing, etc.

A lot of work has been put into the features around the original stroke detection algorithm to convert Paddle Mate from a neat showcase app into a shipped product. It's something I would be happy to buy and use for my kayaking workouts.

With the work I have done, I started to think, how can I leverage this in another app?

It did not take long to see how I could leverage my Paddle Mate code to create another fitness app.

So, I will be enjoying my friends Apple TV creations. I will check out friends 3D Touch on their new phones. And I  will take a look at an iPar Pro and it's Pencil if I see one in public.

But for the next few months I am reinvesting my knowledge from Paddle Mate into another app.

Saturday, September 26, 2015

Finding GPS Routes for Testing

To test out Paddle Mate I have been using my own routes, some tester uploads, and a selection of
routes I have found online.

The best source online I have found that I have pulled several routes from is the site GPSies: Tracks for Vagabonds.

What I like about GPSies is that I can narrow down my routes to just "On water" meaning I can find canoe and kayaking routes.

If you need to find some routes for your GPS enabled app then start at GPSies.

Friday, September 25, 2015

Adding Voice Recognition to Your App

I was at the Eastside Xcoders on Thursday night for a talk by Alexander Caskey, a former employee at Microsoft Research, Wildfire, Cisco, and Linguistic Technology. He has been working on speech and natural language processing (NLP) for the past 20 years.
His talk was on Speech Recognition in Mobile Apps.

The talk was very deep in the history, forms of speech recognition, NLP, and covered the state of the art today.

I went to hear what is available for mobile developers who want to add speech recognition into their apps. I have a future fitness app I am designing that would be served well by speech recognition as an alternate interaction model.

From the talk, I picked up that for iOS devs the first place to start for speech recognition is Open Ears - iPhone Speech Recognition and Text To Speech. This looks like exactly what I want for the problem I have.

I have a limited vocabulary of words that I want to use as an interaction model for my app. This will allow the user to interact with my app through a limited vocabulary where touch is not an option. I'll be investigating Open Ears to see how it works and report back how it goes.

Friday, September 18, 2015

NewThistle LLC Turns One Year Old

NewThistle LLC is a year old at the end of September!

I just renewed NewThistle's business license and took a look at it's first year.

Here is a breakdown of my Revenue sources. As you can see, I am making the majority of NewThistle's revenue via App Dev Contracts.

To be honest, a huge push to start the company was the first contract I received. It was that contract that pushed me over the edge to start NewThistle and put more effort into app development.

For App Sales, I can say that Selfie Band, my Microsoft Band camera remote for iPhone, is my 2nd best selling app to date. It has only been in the AppStore since August 6th but it has been having steady, if not high, sales.

For NewThistle's first year, I am pretty happy with the results. I have achieved my initial goals to start a company that is profitable and which could bootstrap it's own growth. I had to start by giving the company a loan to get setup.

I then took a big contract first thing and sink a lot of after hours time into for 6 weeks.

With the close of that first contract I had made back the money I loaned the company to purchase new equipment and various web services (website hosting, domain, email). So, 90 days after I closed my first contract NewThistle LLC became profitable.

Since then, I have been trying to run a tight ship. I have decided not to purchase the new iPhone 6s+ since I can get by with the iPhone 6+ until I have a need to get the new phone or I can wait until the iPhone 7. I am on the fence about the iPad Pro but will likely stay away from it unless I have a business need to develop for it. The Apple TV I have app ideas for so that is something I plan to purchase for development purposes.

A big goal with the company has been to have it not cost my family money (though it sure eats up a lot of my time). In the money respect, the company is doing well and has cash in the bank to continue to pay business expenses.

For the coming year, here are my goals:

  • Increase the share of revenue from App Sales.
    • Two apps in the works and more planned.
  • Introduce another source of revenue besides App Sales and Contracting.
  • Continue to be self funding and not require outside financing.
Here's to the next year of NewThistle LLC.

Tuesday, September 15, 2015

Paddle Mate Beta Access

I made good progress on the Paddle Mate "Just Ship It" Release this past weekend. I had to step back, look at my activity state restoration code and fix a couple key problems. With that under control the app is handling backgrounding much better now.

This Beta version also includes:

  • App setting persistence so that the app remembers your last used workout settings (track location, Microsoft Band pairing options)
  • The DOCK view (main landing view of app) now includes a preview of the map from your last workout and some stats from the workout.
  • State Restoration.

With these changes in place, the app is ready for wider Beta Testing. If you are interested in trying out Paddle Mate before I ship it then you can sign up at: Announcing Beta Access to Paddle Mate

Sunday, September 13, 2015

Paddle Mate V 1.0: Just Ship It Release

Past Workout (WAKE) view on the main DOCK view.
I have a couple irons in the fire at the moment which have me spread thin.
  • I'm working on a new site which I will write more about shortly (it is still baking and is not ready for prime time yet).
  • Various home projects.
  • I signed up for a Half Marathon at the end of October and have been ramping up training.
  • Fixed a bug in Selfie Band and shipped the update.
  • I have been finishing up Paddle Mate's first release.
Paddle Mate, the Just Ship It Release, has gotten some well deserved attention the past few days.

I had a couple half baked features and did some triage on those. I decided to move them out into future releases and in the process created a RoadMap. With the RoadMap I have a defined ongoing plan with a focus for each upcoming release.

I just finished off validating that the app works with/without a Microsoft Band attached. Without the Band the experience is not as rich but I am planning to support a richer experience for non-band users over time.

Paddle Mate is now down to 2 gating bugs that I am working on today. In developer lingo, gating means that the product can not pass the release gate to customers until those bugs are fixed.

I have one tester who is out today in this rain that has been testing. Once I get a handle on one of the bugs I will be going out for another test kayak.

The other bug is in the past workout view, I have a handle on the problem and will tackle that later today.

This boat still can't launch when that is all done. My list of tasks after I fix these bugs include:
  • Verify I have no more gating bugs.
  • Write launch page.
  • Write marketing page.
  • Write Privacy Policy for app.
  • Record App Preview
So, with about 1 hour to go in today's dev window I need to get back to getting this app shipped.

Wednesday, September 9, 2015

Abundance Demands Creativity

Today, Apple unleashed an abundance of new hardware and software upon us. Where to start?
The iPad Family, Image: Apple

The key to abundance is meeting limited circumstances with unlimited thoughts.
Marianne Williamson

There are few times we are at the intersection of new technology and new APIs that allow us to expand our customer base, but that is where we stand today.

Unlike my previous post on Constraints Give Focus today can feel overwhelming. Where do I start? What should I learn? Should I invest in the new iPad Pro and it's user interaction models? Should I build for the tvOS and the new Apple TV?

For most of us, time is limited and we do not have deep pockets like the big players to let us tackle the numerous ideas we come up with.

So in times like this we need to get creative with the abundance that has been put upon us and figure out new ways to leverage that abundance.

For me, I am considering the following:

  • Which apps do I have in a finished or near finished state that I can leverage on one of these new platforms?
  • Does the app deserve to be on the platform?
  • Would the user get delight from using a tvOS app or a larger iPad Pro version?
  • What features should I expose with the new Force Touch?
  • Can I leverage the platform to gain increased income without giving away my effort for free?
My time is limited. I need to come up with creative solutions in this time of abundance (tvOS, iPad Pro, Pencil, Force Touch) but constrain my ideas to the ones that are unique to the circumstances (Focus on tvOS for example, or the gold rush as it is called).

How are you dealing with the abundance from the September 2015 Apple event?

Saturday, September 5, 2015

Selfie Band V1.1 Released

Selfie Band version 1.1 is now live in the AppStore. You can download it here: Selfie Band

This update fixes the crash that occurs when your band has no remaining space for new tiles and you try to install the Selfie Band tile.

Users with auto-update turned on should get the new version automatically but if not you can follow the link above to get the latest version.

For users impacted by the crash, you should now get an appropriate warning when you try to install onto the Band and there is no remaining space.

Tuesday, September 1, 2015

Incremental Change

Applying Incremental Changes to Our House
A key to success with programming is learning to experiment and make incremental changes. Testing those increments is critical to understanding if your change achieved your goals or made wider reaching impacts than expected.

From year to year, environmental changes are incremental and often barely register in our lives, but from evolutionary or geological perspectives, what is happening is explosive change.


David Suzuki

Like evolution, our code evolves slowing as we add features, we break things, we fix things, and push for the release line. Many commits are required to build the bedrock of the apps we ship and the features our users take for granted.

Sometimes in the rush to ship we miss testing some of these changes. Like evolution, these missed increments can explode when they reach our customers.

I hit my first shipping crash in one of my apps in the AppStore this past week. In this case it was with Selfie Band, my camera remote for the Microsoft Band. Selfie Band tries to install the camera remote tile (it's app view) on it's paired Microsoft Band.

It looks like one user had a very bad experience when they ran into the bug. They tried repeatedly to get past the problem but it looks like they crashed multiple times during this. I know this since I use Crashlytics crash reporting in my apps.

The bug manifested itself when the Microsoft Band had no remaining space for tiles and returned an error. I had incorrectly changed some error handling code and forgot to retest it.

So, being in Swift, my null point access crashed the app instead of silently failing as many of us Objective-C programmers are used to.

It was a silly mistake and I have fixed it and shipped the update to the AppStore. I just need to pass review and the fix will be live.

This bug reminded me to slow down and verify that incremental changes don't lead to a crash.

The competing priorities to ship and to create quality software can be hard as an indie when you have no teammates looking over your shoulder to review your code. The end user will feel the brunt of your mistakes and so will the impression you give your customers.

For me here is how I am addressing this as the sole programmer:

  • Commit often to git
  • Review my checkin like I would someone else's code
    • Why did you do this?
    • Was it tested?
    • Are there loose ends?
    • Should this be committed or reworked/retested?
  • Using branches to switch between features that I want to revisit
  • Reevaluating a change when it gets too large
Don't let your incremental changes lead to explosive releases.