Posts

Showing posts from 2016

My new years eve plans and how I managed to boost my apps downloads

It's new years eve and this is perhaps the last day I am offering My Day To-Do for free on the app store. I started offering My Day To-Do for free as a holiday offer from 24th of Dec, 2016 to 1st of January 2017. Since then I have seen a significant spike in downloads with a majority of the downloads coming from China. This is awesome, as unlike it's free sibling My Day To-Do Lite , My Day To-Do pro version hasn't seen that many downloads, so this is a great way to get it to a wider audience. Why did I offer my app for free? App Analytics in iTunesConnect told me that there were a number of "product page views" for My Day To-Do on the App Store, so I realised that one of the obstacles for people from downloading the app could be the $4.49aud price tag. Hence I decided to remove that obstacle for some time and in doing so I was hoping to get some user feedback or to get people to leave a review on the App Store. What do I think contributed to the download...

End-user app testing and the holiday season

I am writing this blog post as I wait for my flight back home at the Dubai International airport. I am travelling back home from a short holiday to my parents place and this post is going to be about a little something about app testing that I discovered during my holiday.  p.s. It's 12am, right now, so please excuse any grammatical mistakes in this post.  What Did I discover? I grew up in a place with little or no internet connectivity and hence when I was working on my app, My Day To-Do , I made sure that the app  works offline i.e. it doesn't require an internet connection to at least use all it's core features. During development I tested this extensively by switching off Wi-Fi, turning the mobile data off and testing the app's core functionality. All that worked as expected and I had made sure I released an app that would work offline, however recently I realised that there was one more test that I had to do which I didn't. Next time, a similar use ...

Recording audio in iOS: Problem finding recorded audio

I was working with recording in iOS and I came across a rather strange problem with re-playing the recordings. What would happen was, I would record the audio, playback the recording, save the audio file and it would all work as expected. Now when I try to relaunch/redeploy the app from Xcode and try to playback the previously recorded file, it wouldn't work, the problem was that it cannot find the audio recording. As usual I have solved that problem and while I am not sure if it is the right way to do this, but my solution works and I am going to share that solution in this post along with some code samples. Hopefully it saves the next programmer stuck on this problem some time. Introduction I wanted to learn how to record audio in iOS using the microphone so as usual I did a search on Google for tutorials on these and I found some excellent examples on it. Among others the tutorial at   HackingWithSwift was one of the finest tutorials out there. Unfortunately the...

App store downloads, the next app and a preview of the next blog post

My time was occupied by resolving a few personal matters this last month and a half and therefore it's been some time since I had the opportunity to write a new blog post. A few things have been happening on my end and in this post I will provide some brief info on what some of those things are, namely  A recent spike in downloads for My Day To-Do Lite My next app that I am working on The topic of my next technical blog post or what problem do I solve in it App Store Downloads I always knew about the power of ASO  and localised app name but only recently did I experience the power of ASO first hand. I released My Day To-Do Lite towards the end of December 2015 and it wasn't until September 2016 that I saw a spike in the number of downloads for it. To put this into perspective, the number of downloads I have had for the Lite version in September, October and the first half of Nov, 2016 were more than those combined of all the previous months since it's release. H...

Framing your app store screenshots with device frames using frameit from fastlane

Image
I have already written about how  fastlane  can make uploading screenshots to iTunesConnect easier and in this post  and in this post I will talk about another one of it's very useful tools i.e. frameit . If you look at App Store screenshots for my iOS app  My Day To-Do , you will see that they look great with a nice device frame around them, something which I achieved using the frameit gem from fastlane. The documentation on frameit as of now doesn't talk about everything and learning how to use it takes a bit of effort which is fair enough I suppose. I mean they gave us a great tool so it is only fair that we contribute to it somehow so in this post, I will talk about what I learned while using frameit to frame my App Store screenshots. There were some rules I had to follow to successfully use frameit for my iOS app and here I will share what I learned so it saves the next person learning to use it some time. Ohh and in my quest to save the next pe...

Django app with an AngularJS front-end

In this post I will briefly talk about my solution to building a Django app which has an AngularJS front-end. This wasn't a major problem as such, but it did cost me some extra time when I tried to get it done, so naturally on solving this issue I felt that I should help the next programmer facing such as issue. Therefore I created a Github repo i.e. a sample project that can help anyone get started on something like this. Background I have a background in building Java web apps , I mean almost 70-80% code that I wrote for my previous jobs was in Java . So building a Java web app with an AngularJS front-end was something I knew how to do but I had a few minor hurdles when I wanted to achieve the same with a Python/Django backend. When I started working on solving this problem, I thought to myself "I wish there was a simple sample project which showed all aspects of this sort of application and how it all comes together"... and since I couldn't find a sam...

Using the same codebase for lite and pro versions of your app - Branching in Git

September last year(2015 I released my iOS app, My Day To-Do  and the following December I released the Lite(free) version , which is missing a few features from the paid version. At this point, both versions have a different code base i.e. seperate repositories and when I add a new feature to the either of them, I basically copy and paste the code from one place to the other. I know this method is horribly prone to errors, right? well, I wanted to release the Lite version just before Christmas and since I started working on it a week or two before the holidays, I could not afford to invest time into finding out best way to go about it. However now that I plan to release another paid but limited and cheaper version of My Day To-Do, I am thinking of doing it right this time.  Introduction Since 2013 my version control of choice has been Git  and I have used it on all my projects ever since including My Day To-Do family of apps. I always knew about branches in Git but...

Building a web demo for a native iOS app in the mobile apps era

This is one of those achievements that had me yell a big "YAYYYYY" when I had it working, even though it is not complete at this stage. After coming across some hurdles, I finally managed to deploy a web demo for my iOS app  My Day To-Do  that anyone with a mobile or PC can try. In this short post, I will talk about my motivation for it as well as shed some light on my overall solution and I will conclude this post with my thoughts on this approach and what I think about it, in current day and age.  Motivation  My Day To-Dos has both a free and a paid version and the distinguishing features between the two are (at this stage) weather summary selecting the language the app talks in The above features are only available in the paid version and I wanted to give any prospective users a feel for what these features are like. Solution I have already written about the unique way in which I built my native iOS app i.e. Html5 for UI and native...

A developer's sacrifice - why did I say bye to my first love

I love writing code and during my undergraduate studies I had a chance to write code in many programming languages and while I enjoyed working with all of them, there was one language that I fell in love with. I call it first love and thankfully I had a chance to code in that language for most of my career after I finished uni. I worked with it for years and years, it would be my language of choice for any new project...until recently. In the last 12 months, certain (almost unavoidable) circumstances lead me to a choice which meant, I had a part ways with my first love for this particular project. In this post I will talk about what my first love was, the circumstances that made me part ways with it and what did I use instead of it. My First love During my undergraduate studies and when I was learning about programming, I was exposed to C++ , Java and C . I did not mind C so much, C++ I did not like it at the time and I loved working with Java. Yes yes, I know it's very ver...

The art of building software while working alone

In most of my past jobs, I had the opportunity of working with a great team! I mean those who I have worked alongside have always been some kind of awesome. All except for that one member, that I never really liked very much. In this post, I will briefly talk about my evolution as a Software developer and how I evolved to be a lot like that one team member I wasn't too thrilled about working with. That ONE team member In most of my past jobs, working in a team was always heaps of fun, unfortunately every team had someone who would make a plan, have deadlines, monitor the time spent on each task, etc. Yes of course I am talking about the Project Manager. In some of my early jobs, every time a project manager asked me "how long it would take me to finish something?"   one of the first things in my mind would be, "ahh dude go away, let me write code in peace". I mean all I want to do is write good code i.e. code which is modular, follows the right design pat...