Saturday, April 18, 2015

What's in a name?

I made the management decision today that I'm going to re-brand the app and move it to a different category in the Play Store and it will be in a less crowded field. It is more than just re-branding. It is really a re-focusing what the app is.

I basically made two apps in one. The first app was a list/to-do app. You can create lists and share them with others. There is a web site that allows you to create lists on the site and they appear on your phone. There are a zillion list/to-do apps in the Play Store and some are extremely popular and pre-date Android.

The second part of my app I won't reveal just yet, but it was supposed to sort of set mine apart from the others. What I should have done is focused on that app as the main program and the lists would have been just a bonus. I actually spent more time on this second aspect of the app because the list app was pretty straight forward. Nothing too challenging.

So I changed the main interface to focus on the second aspect of the app. I also made several cosmetic changes so it really does look different than the original app. I've changed the name and gave it a new icon.

Can't say when I will release it. Maybe tomorrow. Maybe in a week. There is still work to do, I'm just not sure how much at this point.

Friday, April 17, 2015

My First Mistake

I think I've done this with every new programming language I've attempted to learn. I begin what I think will be a simple "Hello World" program and along with the way come up with an idea and end up writing a complete program. That's what I did here.

The real problem this time is that I came up with an idea that thousands before me have come up with. It wasn't until I went to post the app on Google's Play Store that I realized just how many similar apps there are to mine. I read once that a new app is uploaded to the Play Store every 5 minutes. It is almost impossible to get your app noticed, and even more insurmountable when you make one that a zillion people before you have.

In all honestly my original intent was not to create the next Instagram. My intent really was to just learn how to create an Android app. It had come up at work about 8 months ago that we might want to develop a simple app so some of our members could access data on their phones. I really think there is more vanity to it than practicality, but I got excited about the challenge.

What I should have done, though, is come up with several ideas and then researched them to see what is out there. My app has been on the Play Store for a week now and other than a few friends and co-workers I've only had two downloads. I have no idea how these people found it because I can't unless I type in the actual name of the app. Google plays it close to the chest when it comes to how apps bubble up to the top of the search.

What I've read is that commonly used words in the description play a part in key-word searches. Install counts versus uninstall counts are an important metric. The most important though, from what I've read, are ratings and reviews by users. This is where it gets depressing.

I added in a functionality that if someone rates and reviews the app I will "flip a switch" in the database and turn off the ads. All they have to do is rate and review the app and they get the add free version. Sounded like a good way to get people to leave a review and hopefully push my app up the ever expanding list of apps on the Play Store.

Well, it didn't quite work out that way. I released the app in English, Spanish, and French. The first person to download it was Portuguese. I'm not sure what language his phone displayed but he didn't understand how it was supposed to work. Because the app stores data in the cloud it forces you create an account to link you with your data. He thought it said the ads would be turned off when you create an account.

That doesn't make any sense, when you think about it. If the very first thing you do with the app is create an account and that is what turns the ads off, then what is the point of having ads in the first place. Everyone must create an account before they see the first add. Anyway, he left a very bad review and only one person has downloaded the app since. Below is his review.

ISSSUES ITS A ONLINE REGISTRATION SCAM.IT DOES NOT GO ADD FREE ONCE YOU REGISTER IT HAS PRE SET CATEGORIES YOU CANNOT EDIT AND CRASHED ON FIRST ATTEMPT TO USE .I WAS IN A GOOD MOOD SO I GAVE THIS A PP A EXTRA STAR

Painful. Four months of work and that is what I got. To make matters worse, he emailed me before he left the review and I tried to explain to him he misunderstood what was written, but he didn't listen. I was able to leave a comment to his review, but I'm not sure it matters. You must click on his review to see my comment. I don't know what's worse, what he wrote or the fact that he writes in all caps. I emailed him a few times and then just gave up.

To add insult to injury, the Google's Developer Console, where you manage your apps in the Play Store reports on crashes and ANRs (Application Not Responding). His crash was a null pointer exception, but he wouldn't tell me what he was doing when it happened. I've gotten a few people at work and some friends to download the app and it has not crashed for them. His was the first and last crash or ANR reported.

Trying to decide how to proceed. I think some rebranding is in order.




Thursday, April 16, 2015

Back to the BASICs

I first started programming in GW BASIC on my first computer. It was a Texas Instruments 286 laptop with an external floppy disk drive, 30 megabyte hard disk running DOS 4.1. Later I managed to cram Windows 3.0 on to it by getting rid of almost every utility program that came with Windows at the time. I then installed a hard disk compression program called SpeedStor that quickly corrupted the entire hard disk and I had to start over. The laptop came with the DOS setup program stored on a ROM chip on the motherboard, so it was easy to get back up and running.

My first impressions of Android Studio was that I was going back to the "good old days" of programming in BASIC on a DOS computer. That quickly changed, but the learning curve was steep. I was coming from a world of drawing an interface like you would do if you were using Adobe Photoshop or something. Coming up through the ranks of Visual Basic (VB 2,3, 4, 6 and then VB.Net in Visual Studio) I became accustomed to what was at one time referred to as RAD programming - Rapid Application Development.

The IDEs I had used in the past made it easy to add a few buttons and put code behind them to pull data from a database and populate lists. It is great for the work environment I was accustomed to working in. A request was made for a program to interact with data in a new way and I could have a workable solution in 2 days. Another week of tweaking with feedback from the end-user and it was on to the next project.

With Android Studio I was designing interfaces with XML and positioning controls by setting Top and Left. It seemed crude and archaic. Sure there was an visual drag and drop interface to put controls on a picture of a phone, but even that seemed crude compared to the earliest version of Visual Basic.

There is an on-line tutorial that was fantastic for getting up and running, but I quickly out grew what it had to teach me. I first spent a lot of time on Stackoverflow.com looking for solutions to what most Java programmings would not consider a problem. There are a lot of helpful people on that site, but there are also a lot of people who seem to have a lot of time on their hands and do little more that critique posts instead giving useful information. I swear to God it is like dealing with a bunch of little old ladies. Codeproject.com is another great resource. Lots of workable examples for how to do basic things in Java and Android Studio.

I now love Android Studio, but the first month was brutal. I'm not going to say it is better than Visual Studio. If I could I would squish the two together. They both have annoying aspects to them and great aspects to them.

Wednesday, April 15, 2015

How it started

In hindsight, I wish I had started this blog sooner. Four or 5 months ago I decided to create an Android app. I am a self-taught programmer who actually manages to do it for a living. Not for a software company, but for a small, non-profit that has a need for a programmer. I'm not making the 6 figures I might be if I had gone to school for it and worked in Silicon Valley or Seattle, but I get to do what I enjoy doing, and that is write code.

Actually, that is not it. Writing code is cool, but creating something from nothing is what really drives me. The outfit I work for gets to do things they could not normally do because they can't afford to hire a "real" programmer with the salary demands that go a long with the education. It is a win-win situation.

At work I program in VB.Net in Microsoft's Visual Studio, along with some VBA in MS Access, and TSQL in SQL Server. I also do a little Java Script programming, and I created an ASP.Net web site. None of this is really Java and it most certainly is not Android.

I'll go in to more details, but the first few weeks were brutal. Something that would take me 10 minutes in VB.Net/Visual Studio would take for 4 or 5 hours or even 4 or 5 days in Android Studio. It was painful at times. I mean physically painful.

Oh, and in case you're wondering Android Studio and Visual Studio are the programming environments one creates programs in. They are sometimes referred to as an IDE, or integrated development environment. If you write a book or a journal you don't scratch it in the dirt you write it in a notebook or on loose paper. If you write it on a computer you might use Microsoft Word or Oracle's Open Office. Word and Open Office come with a lot of tools for formatting and spell-checking. Android Studio and Visual Studio come with tools for programming.

I think of programming as writing a murder mystery novel with dozens of red hearings that must all be resolved by the end. You can't have the murder disappear down a dark, dead-end alley without explaining in excruciating detail how he or she got out of the alley at some point in the program code. When you don't explain these sorts of things in code that what is called bug. When a program you are using crashes it is because the programmer did not cross every T and dot every I. Just like in a complex who-done-it, everything must be thought out and explained by the end or the book falls flat.