Tuesday, 2 June 2015

Time Slip

Programming, for non professionals really can be a challenge at times. But the satisfaction that comes after solving a 2-day old problem really can be a cheap thrill.
At the beginning of last night, I decided to add Facebook sharing to Float. 

All was going reasonably well. The Facebook instructions were specific to Android Studio, while I use Eclipse, but this post helped me enormously in that respect. He explains how the Facebook project will have missing dependency errors when first added to eclipse, but it's easy enough to identify them and add them. 

His example was the android-support-v4.jar but I also found the android-support-annotations.jar was needed. Working through these steps and then the Facebook guide for a sharing intent I made my first Facebook post from Float.

Then I unintentionally initiated a 2-day programming time slip. I don't remember what prompted me, but I started updating a lot of things using the Android package manager. All hell broke loose and nothing would build!

Two long, late nights were spent trying to get my updated Eclipse and ADT environment, and my Float project to play nicely, when finally I stumbled on this remarkably simple solution...
Turns out, in my updated packages, android-support-annotations.jar is included in android-support-v4.jar. removing android-support-annotations.jar from my Facebook project solved all my problems.

Luckily I didn't try anything to drastic without being able to undo my changes before finding this out. Interestingly, this wasn't even the accepted answer to the Stackoverflow question (though it has the most votes). Sometimes you just stumble on the right answer.

So, two nights lost, maybe I'll finish adding Facebook to Float tomorrow.

(photo of cat is for no reason other than it ids a funny cat).


Friday, 29 May 2015

SiteSnaps


ANNOUNCEMENT: Pre-release of my new app, "SiteSnaps" 

So what is SiteSnaps?

SiteSnaps helps you organise your Site Photographs. Images are given meaningful names and are sorted into folders according to your chosen project name.

Imagine you're working on site, and you need to take photographs to document your work. You wan tto do this as quickly as possible, without draingin your battery and without having to write down detailed notes about each photograph.
- You could be in real estate, needing to photograph the many rooms of a mansion. 
- You could be in the automotive industry, needing to photograph all the new cars on your lot. 
- You could be in insurance, needing to photograph damage to property.
- You could be a surveyor, needing to photograph manholes and drains on a busy intersection.

With SiteSnaps:
- you set you project name and all of your photographs are stored in a folder and appear in an album on your device.
- you set your image type and all photographs are named with the image type
- you set the object number and all photographs are named to include the object number.
- you take the photo and it is saved with the date and time of the photo forming the rest of the image name.

No more spending an hour after your site visit organising your photos. Just copy the folder to your computer and you can go to get your dinner.

SiteSnaps has been released for beta testing and is available now in the Google Play app store if you sign up to be a tester. Just join the Google+ community and then follow this link to sign up to beta testing. 

Some more of SiteSnaps' key features include:

- Autoincrement the photo number: If you only take a single photo of each object, let SiteSnaps increment the number for you. If you take many photos of each object, use the onscreen buttons to increment the number only when you are ready.

- Default Email Recipient: Tell SiteSnaps your regular email recipient for photos. Then instantly compose an email with the most recent photo with a single button press.

- Geotag photos: use GPS to geotag your photos. You can also set the accuracy limit. geotags will only be written if the accuracy is better than your specified threshold. Or to save on battery, let SiteSnaps use a common geotag for a complete project. The location will be copied from the first photo with a geotag, instead of activating your location services.

- Camera Turn off: SiteSnaps is designed to save battery. Therefore, when you put the app to the background, the camera preview is turned off (unlike some default android camera apps).

SiteSnaps is supported by ads, but these will load under wifi connection only, thus preserving battery usage while on site.

*Battery performance has not yet been profiled.

Please share this post if you think you know someone who could find this app useful.


Saturday, 31 January 2015

#GIMP Template for #MaterialDesign

Following my previous popular post about #MaterialDesign I decided that there was a need for a Launcher Icon template for #GIMP. This post describes two new tools I've created:
  1. A GIMP template for Material Design
  2. An updated Android Icon Image Export Script for GIMP

A GIMP template for Material Design


In many cases it may be safest to create your icon as vector art. But it will also frequently be more convenient to use GIMP.

Launcher icons are 48dp x 48dp in size, which means they are 48 x 48 pixels for mdpi screens. However you will want to create icons for different screen pixel densities, and hence different pixel sizes. Typically you will need sizes up to xxx-hdpi, with a pixel size of 192 x 192. You will find other templates are created at this size so they can be down-scaled to smaller screen sizes.

However, If you want to reuse your launcher icon for the Google Play Store, you will also need a high resolution graphic at 512 x 512 pixels. You could use a different graphic entirely, one with more detailed lines and features, or you may want to create a single original with high enough resolution to be used for the Play store and downscale it for your launcher icons.

The GIMP template I have created is 576 x 576 pixels (an even 12 times 48). This means you will need to downscale for the Play store icon, but down-scaling a bitmap is better than up-scaling right? The following describes it's key features:

  • The template file has a pre-defined grid interval of 12 pixels (1dp), corresponding to one pixel in the down-scaled 48x48 pixel icon. You may need to turn on the grid from the View menu.
  • It also has vertical and horizontal guidelines pre-configured for the same positions as the Google example here.
  • The template includes the diagonal guidelines, the small circle guideline and the four basic template shapes (square, landscape rectangle, portrait rectangle and circle) as paths. You can use the paths to create objects. To do this, open the paths dialog window (from the Windows - Dockable Dialogs menu), right click on your chosen path and select "Stroke Path." You can then fill the outline that this creates.


Download the template here:

Material Design Template for GIMP

Android Icon Image Export Script for GIMP

If you are making Launcher icons with the template above, you'll be needing to resize and export for a number of graphic sizes, and you'll need to move those graphics to various folders for your Android project. 

To simplify this, you can use the Android Icon Maker GIMP Script that I posted previously

I have updated the Script making the following changes:

  • I've now added a "custom" option for the graphic size in dp units (previously it was pre-configured for three image types). 
  • I've added a 512x512 pixel image option. This option is independent of the graphic size and is designed for Play Store launcher icon graphics. It will be copied directly into the assets\_Pre_Production folder in your project (so it is not included in your APK). 
  • I've changed the folder location that the script needs to be pointed to. Previously you pointed it to your res folder. Now you point it to your project folder, and output is placed in the res folder or the assets folder (depending on your chosen options). 
  • Finally, I removed some of the options I felt were too complex for this tool. 




Both the new and old versions are available:

New Android Icon Maker GIMP Script

Old Android Icon Maker GIMP Script

Instructions for installing a script-fu plugin can be found here

Wednesday, 28 January 2015

Tools for #MaterialDesign

Last night I promised a follow-up post about some of the resources I found to assist in designing for Android's Material Design. I'm focusing on #Inkscape because it's free and I've chosen to learn with this, though some things here relate also to #GIMP, another free program I make use of. So here it is:

Design template

If you are going to follow the Material Design guide lines for launcher icons, you'll want this template file



It's certainly helpful, though there are perhaps a few improvements that could be worth making. It lacks the main keylines on Google's reference image (below). It's easy enough to add this but they could be there in the template to start with.

Also, it is pre-configured for the pixel size of the largest icon you will need for your app, but neglects to cater for the 512px by 512px icon size needed for the Play Store (see Android documentation). The first thing you'll want to do is make this larger.

Colour Palettes

If you are going fall inline with the colour palettes of Material Design, you're sure to want to have these easily accessible. Google provides files for Adobe illustrator and Photoshop, but if you are on my budget try the .gpl file of the same palettes available here for GIMP and Inkscape. This page from +dominoc925 gives you instructions to add the palette to GIMP if you need it.

Drop Shadows

Material Design talks a lot about lighting, shadows, tinted edges, and shaded edges. Do you know how to implement all of these in your graphic editor? What? You're an experienced graphic designer aren't you? Aren't we all? Well no, of course we are not. I hardly knew where to start. That's why this resource from +Shining Wing was very helpful to me. It provides objects with pre-defined drop shadows for various depth levels. These filters can be instantly applied to your own objects. 


My only issue with this (and it may be an Inkscape issue rather than an issue with the filters) is that I found the lower edge of my shadows were truncated. 

Summary

These were all the resources for Material Design in GIMP or Inkscape that I located in one evening of searching. I'd be really keen to know of others. If you have your own or know where I can find more please comment on this post or private massage me and if I have enough I'll do another post.



What is #MaterialDesign ?

I tried to learn a bit about Google's #MaterialDesign this evening following some criticism of my first icon design for my next app SiteSnaps.

So what is Material Design? Don't ask me! I spent an hour reading about it on Google's documentation pages and I still don't get it. I mean does this mean anything to anyone?

...The use of familiar tactile attributes helps users quickly understand affordances. Yet the flexibility of the material creates new affordances that supercede those in the physical world, without breaking the rules of physics...

Well not to me.

So I have some issues with Material Design.

Firstly as highlighted above, it seems like Material Design is the invention of a new language. I think this language is designed to monopolise the vocabulary around and as a result the approach to graphic design - Soon everything will look like it was made by Google.

Secondly, Google is trying to make us conform to a narrow design envelope. Where's the freedom and space for creativity? If all app designers use the fixed colour palettes and strict rules provided by Material Design, things will become quite predictable and boring.

Thirdly, who's judgement of good design are we trusting? There are a whole selection of Do's and Don'ts. Some of the Don't actually look OK to me.


And another (I quite like the off-center folds):


Finally, There's #contradiction. Material Design says in a number of web pages:

 A folder corner, or dog-ear, is used with forms associated with documents or traditional paper-based metaphors...Don’t use a dog-ear treatment in the upper-left of an icon. The cast shadow from this position interrupts the harmony of the icon.

... Google's Newsstand is probably the most heavily used app on my phone. Take a look at it's icon:


So that's clear. #WellDoneGoogle.

All this said, I don't claim to have good a good eye for graphic design, and I do like the look of Material Design icons. I expect I'll be a full convert within a month.

I'll post tomorrow about the useful Material Design related resources I located online.

Saturday, 24 January 2015

Keyword ranking improves

A couple of days ago I was a bit put out by a sudden drop in keyword ranking for Float. I was at a loss to explain it.

Now just as suddenly, my ranking has returned. So what happened? Perhaps Google changed an algorithm then changed it back?

Even so, me restored ranking is still very low. I suspect I need more positive ratings to boost it up higher. But I have issue with this. Have you looked at the reviews of indie apps? All 5 stars and all genetic text like "great app, just what I needed!" And "this app is perfect. Outstanding work." These reviews could be for any app, and I suspect have been posted to many apps. Its a buddy system, and means nothing to the quality of an app, only the skill of the marketer.

I guess I need  to apply the same strategy...

Thursday, 22 January 2015

Sensor Tower Keyword Analysis Revisited

I'd love to know what caused this sudden loss of keyword performance...


I'm getting that sinking feeling again.

(Statistics from sensortower.com)

Monday, 19 January 2015

Hiatus end

I was just getting going with  Float, having released my first version and maintained it with a few upgrades in its first month. But then the burden of marketing and a full time job, and international travel, and Christmas, and various other excuses, go tin the way.

The end result: a few months with no development and no promotion.

This has had the disappointing consequence of a complete drop off in use of Float, and thereby a reduction in add revenue (from a few pence per month to no pence per month).

I guess I'm picking it up off the ground to try and build something with momentum this time.

What is reassuring though is that a few months of inactivity can limit new users, but it seems active installs can weather the storm:



So I've been hard at work these last few nights on the next major release. And the good news is I've got something exciting to show for it. Last night I played the first ever game of Float 3D:


The only final comment I'll make is... Coming Soon to an app store near you!


Android app on Google Play

Saturday, 6 September 2014

Sensor Tower

Becoming an App publisher is no "Field of Dreams."

And by that I mean, "If you build it, they will come" is not a valid moto! I think it's fair to say the making of my first app, Float, was for sure the easy part. Getting it seen is by far a harder task, and something I'm ill prepared for.

I have my app on the devices of a handful of like minded indie developers and family and friends (thank you to all of you!) and some of them are very complimentary. But getting even those people to share or rate or even +1 the app in the play store is hard. As a result, my app lingers way down the rankings, even if you search by its precise name!

So, having stumbled upon Sensor Tower, I've been inspired to focus on the keywords in my app store description.

Sensor tower has allowed me to much more easily establish my ranking for certain search terms (previously I'd have searched and scrolled through 250 apps to determine that I'm not ranking).

It also allows me to track how my ranking has changed over time (See image below, which I'll come back to shortly).

Another really helpful feature is the ability to choose specific competitor apps to track and review their own strategies.

So, I decided I needed to make some changes to my app store description today having viewed my app floundering at 70 in the rankings for searches of "float". I changed the name from "Float" to "Float Tile Puzzle" and added new text to describe the game in more detail, using the terms "Tile" and "Puzzle" a few extra times, as well as "Mahjong" and "Sudoku" once or twice.

The result was not ideal! With the new name, my app instantly plummeted in ranking for search term "float" and did not appear on the rankings for either "tile" or "tile puzzle"

I can only hope the changes will be helpful in the long term. And at least I now have Sensor Tower to help me measure my ranking.

It's not perfect though. The free account is quite limiting (though they do give away a Pro plan to students and indie developers for posting a review of their platform ;))

It also could do with an android app. I couldn't find one (I assume that's not because they haven't optimised their own rankings!) and the web page performs very poorly on a mobile platform.

I hope I can post the image below again soon with a significant bounce back in search performance!


Saturday, 30 August 2014

Android Icon Maker (free script for GIMP)

I discovered the joy of script-fu for GIMP today.

One thing I've found time consuming and irritating about android app developing is creating graphics for the various screen densities that are out there. Every graphic has to be created for the highest density, then scaled. Using GIMP for my originals, this previously meant I would have to scale the image, export the image, scale the image, export the image etc. until all drawable folders were populated with the icon. And if I then make a small change to the graphics, I have to repeat the process.

Then of course, there is still the task of putting the right file in the right folder with the right name.

So I discovered there is a script for GIMP  (specifically "script-fu-save-icons-png") available from the GIMP Plugin Repository (written by Jan Pavelka) that allows icons at multiple sizes to be created from the current GIMP image in one step.

That was great, but it didn't support all of the sizes I needed, and the images all had different file names (because the pixel size became part of the name). Plus, they still needed moving into sub-folders, so no major help.

I then decided to modify the script to suit my needs. I came up with the UI below, which I think would be helpful for other developers. The script gives an option of (currently) three different graphic sizes in dp units (suitable for launch icons, action bar icons, and notifications) and it allows a range of pixel densities to be specified.

When executed, it calculates the pixel size for each pixel density, and outputs the icon graphics (all with the same name) in the correct drawable subfolders for an android project.

Now with one press I can generate all of my icons from a single source file.

I've used this with much success on Float.

I will ultimately upload this to the GIMP Plugin Repository, but in the mean time it can be sourced from here: script-fu-android-icon-maker.scm


Just two problems with Google products

There's so much about Google and it's products that I really love. But this post is about two things that frustrate me. Now, maybe I've missed something and there are solutions to these problems. If that's the case, please comment to help me out! 

  • Firstly, when publishing android apps there is a really powerful and really cool developers console that provides a lot of statistics and helps to see how quickly different releases were taken up, and (equally interesting) how quickly older versions died out. But there is a problem with the graphics - it only lists app versions that still exist in the wild. So you see from my screen shot below, the graphic shows big holes at times when app versions that are no longer being used were adopted by my users. I want to see those now extinct releases in my graphs! 

  • Secondly, and completely unrelated to app development, is Google Play Music. I discovered recently that if you buy a track fro man album, and later want to buy the album, they still charge you full price!

Thursday, 14 August 2014

Leaderboard nearly ready

I spent a long time this evening trying to work out why the next exciting development in Float wasn't working.
That next exciting development just happens to be an amazon GameCircle leaderboard. You'll see from the screen shot, I eventually had success.
The problem was that the GameCircle SDK was not initialising, and other than messages to "follow the developer instructions" there was little to go on. But gradually, I tracked down the cause. I promise I'll explain it simply:
I was getting an error that the api key was missing, even though I'd created my amazon security profile and generated my api key using the MD5 fingerprint from my android keystore... (i take back my promise by the way). The key was in the assets folder and all instructions had been followed.
However, I used the MD5 fingerprint from the keystore I use to sign my releases... But I was testing in an unsigned debug build. As I learned tonight these are not unsigned, but signed with a debug keystore. So when I set up a new api key, based on my debug builds, everything worked like magic, and my efforts the night before were suddenly worthwhile!
Still some work to do, but you can expect a new release in testing (google+ community "float beta testers") soon.

Wednesday, 13 August 2014

I think my Dad is addicted to Float

Parents take an interest in their children and help them in their endeavours, right? Well it seems my dad is playing this role by helping to massively boost the user stats for my debut app, Float.

If you look at the screenshots, Australians are a minority "active users" group and yet account for about two thirds of the total game time elapsed since being released.

Most times when I check the stats, an Australian (hereafter referred to as Dad) is either currently playing or had played in the previous few hours.

Should I feel bad? Does Float need a health warning? The only thing that worries me more than the time Dad spends on Float is the amount of time I spend looking at my stats. Now THERE is addictive behaviour.

So I'll just say, thanks Dad, and keep at it. I'm sure you'll get a tile 9 eventually.

Friday, 8 August 2014

Responding to Critics

Following recent feedback, I've released a version 1.5.2 of Float for beta testing (if you are in the Float beta testing community). I expect this will be promoted to production release quite quickly. In the process of making this small change to the code I once again relied heavily on the terrific resource that is stackoverflow.com. I find myself using this platform for learning more than any other. I find it even more helpful than the main Android documentation over at developer.android.com

But I have one frustration... As I have not yet asked or answered a question on the site, I haven't been able to build any Reputation Points. This means I am ineligible for up-voting things. It's very strange to me that I've no way to show my gratitude to the invaluable help I get from the Site.

I Guess I'll just have to find a question to ask.

Tuesday, 5 August 2014

Dealing with Criticism

In shamelessly trying to promote Float, I've been joining and posting to Google+ communities looking to:

  1. put the link to my app out in the big wide world
  2. possibly gain some useful tips for improvement
  3. I'll be honest, a healthy does of backslapping and "well done old boy. Great app!" is naively hoped for.

From most posts, I got a good deal of 1, also a little bit of 2, and a tiny but of 3. Actually, there was no 3, except from my parents...

But from one community, I got a more critical response. Now I'm a big boy, I can brush that aside, but I'm curious about why this happened suddenly and in one specific community. Oddly, I was more responsible in this community than in some others. By that I mean I posted in a conversation topic that was specifically meant for feedback requests, and I requested feedback on a specific element of the app (the palette choice and use). In other communities I was simply one of many "Hey, check out my app!" posts.

I had one very unfair and critical comment right off the bat, to which I responded with "OK, so what don't you like about it?" To that reply, a different poster responded with "do you really not see the problem with the user experience?"

What am I meant to do with that? And why was I being ganged up on? I checked out the profiles of the people commenting and one of them at least seemed to be a professional android developer. I felt like perhaps I'd found myself in the rough pub at the wrong end of town. Maybe I should avoid this community and stay where novice hobbyist programmers are more welcomed.

But before tucking tail and backing out of the saloon doors I faced up to my attackers, commenting that their responses were of no help.

To this I got mixed responses. One then responded with an apology and some helpful criticism that I've taken on board graciously. The other (the professional) responded sarcastically, accusing me of not understanding users because I don't play other games (there may be some truth in that... who has time to play games around here?)

So, I deleted his final comment that I deemed to be sarcastic. Would you have done the same thing? The censorship feels wrong, but I'm a small time developer in a big timer's game... one or two negative comments can make things really hard. I don't have time for a war of words I'd only lose anyway.

I'm a little surprised (but grateful) that I have the freedom to delete comments on my public posts in someone else's Google+ Community.

Was I wrong to delete the comment?

The original post (minus the offending comment) is here.

Sunday, 3 August 2014

Introduction

So here I am, with an android app finally released in the Google Play store. I'm calling it my debut, although it's not exactly my first app store publication. See for example Mr Maths and UXB Depth Calculator.

So why am I calling Float my debut app? it's because these other two published apps were both made using App Inventor, and I've since learned more about programming and taken on the challenge of writing apps "properly". The advantage is not just satisfaction, but significantly more control on what can be achieved.

App Inventor is great if all you need to do is present some static forms and maybe do a few calculations on some user input, but more complex graphical interactions and complex data handling benefits from the freedom of a fully fledged programming environment.

So now I'm writing in Java using Eclipse. I'm so grateful that Eclipse exists in the first place. I'm not expecting to break into the big time in terms of app development (that wont stop me from hoping though!) so having an affordable (i.e. free!) route into the game was essential. And its been great fun to learn.

Float is also not the first app I've created, but it is the first I've taken as far as publication. There are two currently in draft form on my phone, Float was my third effort, and a fourth is currently just a concept in my head currently. I hope to mention them on this blog in coming posts.

I'll be using this blog to chronicle my efforts to make further improvements to Float. I have some exciting upgrades planned, some of which will be easier than others. I'll finish each post with a description of how I feel it is all going.... Floating, sinking or swimming!

Right now, with Float released, and daily gaining new users.. .I'm Swimming!

Android app on Google Play