- How got data for my iOS app from a secure endpoint without paying extra
- Established partnerships with a university to achieve free app localisations
- Increased user engagement with CSS3 visual cues
- Low cost outsourcing alternatives to Fiverr
I am a problem solver! Throw any problem at me and I will find a way to solve it. As a founder of a my startup, my goal was to see my startup through the initial years until it became financially sustainable. As such, I made a number of sacrifices and found some smart solutions and (some maybe a bit too much) achieved what’s probably hard to believe for a one person startup.
One of the first problems that I had to solve was when I was adding the weather feature to My Day To-Do.
Proxy to bypass ATS
In iOS9, Apple introduced App Transport Security which meant an iOS app can only communicate with external urls via a secure connection. E.g. an iOS app can only call a ‘https’ url and not http’. Of course there were (still are) ways to bypass it, but knowing Apple I thought that they will probably phase out that ability in future updates. Hence when I was adding the weather feature to My Day To-Do, I came up with a solution where I would get the weather info for free without having to pay for the weather API.
I was getting the weather information from the Open Weather Maps API. In 2017, to call it via a secure endpoint you had to be subscribed to a paid plan. Then I got to know about the security service provided by this company called CloudFlare. I realised I could use one of its services to secure a custom url. I had an idea 💡 maybe I should adopt the microservices architecture, I could,
- Build a simple REST API that serves the weather data from Open Weather Maps
- Deploy it online and serve it via one of my domains
- Secure that domain using CloudFlare
- And finally call that domain via a secure url from my iOS apps
From here on, all the apps at My Day TO-Do that need weather information, could just use this service.
Building the solution
I knew what the solution was going to be from a high level perspective, however implementing it was a different story. My background is in building Java web apps, hence my first solution was a Java web app deployed to Amazon Web Services (AWS). However it was both expensive and a bit of an overkill for my needs. In the past I had worked with Python/Django and I knew it was both easy to build and deploy it to my shared web hosting plan. Therefore, that’s exactly what I did. I built a simple REST API that served weather info and deployed it to my shared web hosting on A2 Hosting. I even wrote a blog post about building a REST backend using Python/Django,
My Day To-DO API: 2020 update
As of 2020, I have temporarily migrated my Python/Django solution to NodeJS. My use case however has evolved in complexity. Hence, I am in the process of going back to a Java based solution served from AWS.
Partnerships to localise apps
Having the app localised to multiple languages not only creates a greater reach for your apps but also affects its position in the App Store search results. Therefore it was important for me to locailse the app to more languages. Thanks to Sikai, the great intern who My Day To-Do was lucky to have working for it, it was already localised to Simplified and Traditional Chinese but more wouldn’t hurt. High quality translations would be too expensive and cheaper ones from freelancer services such as Fiverr…I wasn’t too sure about it (at this stage).
Before the great intern
The first set of translations for My Day To-Do were done by strangers that I met. When it comes to talking to someone, I have absolutely no shame in trying to start a conversation with anyone. What’s the worst that can happen? The person will say no or go away? Whatever, the person’s a stranger so there’s very little to loose.
I talked to a lot of strangers (mostly girls) either in the bus, train, gym or while waiting at a restaurant. To my surprise, 99% them were happy to share their contact details and 50-60% of them were happy to help me with translations. A lot of these girls were foreigners who could help me localise My Day To-Do in their native language.
During the second year of My Day To-Do, the office moved to an incubator space called Catapult at the University of New South Wales (UNSW). It was here that someone told me there’s a faculty for the school of languages somewhere on campus that can potentially help me with translations. The instructions were vague but a good starting point. One of the days during my somewhat non-liner and unstructured search for that faculty on campus, I managed to find it and make first contact. The lecturer wasn’t there but I was given contact details by the reception. A week passed since then and there was no answer or reply from the email. However, these were potentially free resources, so there was no way, I was going to stop persisting. Eventually, one of the senior lecturers got back to me and we setup a meeting. During the meeting I realised the lecturer knew there are only so many jobs out there where you would be translating documents, 8 hours a day for 5 days a week. Hence he wanted his students to gain some experience working with digital products. Therefore, he was happy to put me in touch with them.
It set in motion a chain of events through which My Day To-Do is now available in 7 languages. All this with minimal costs to the startup The reason I trusted the quality of these translations over a freelancer services such as Fiverr was because of the senior lecturer acting as an intermediary.
Compensating for lack of design
In the first two years of My Day To-Do, I did not have any design help and some functionality of My Day To-Do was not easily grasped by users. My first instinct was to blame my lack of design skills, hence I found a way to compensate for my lack of design skills via the use of Analytics data. My solution was to add CSS based visual cues and monitor feature usage in the analytics console. You can read more about that in the post below,
There are a number of times when I have had to hire help at My Day To-Do. This ranges from hiring inexperienced interns or using freelancers from platforms such as Fiverr. I hired the following services,
- Icon design: The My Day To-Do icon was drawn on paper by me and done by a contractor I hired on Fiverr.
- Design help: I have hired designers to help me with certain UI aspects of My Day To-Do
- Promo video: Again, I hired a contractor on Fiverr and here’s what he made https://www.youtube.com/watch?v=m7gAxtpm84U
- Marketing help: In addition to investing heavily in the hardware necessary for development. Marketing is a category I have spent the most money on while at My Day To-Do. This includes hiring marketing interns, contractors to work on ASO and other means to increase My Day To-Do’s online presence in order to get more users. I even wrote a blog post about the learning plan I prepared for a junior marketing intern, https://mydaytodo.com/whats-app-store-optimization/
- To this end, I personally ran and managed a lot of marketing campaigns on Facebook and Microsoft Bing search.
The goal of this post is just to highlight how I managed to solve some problems over the last 3 years at my startup. I reckon one of the things this post should highlight is my engineering mindset to solve problems.The point is, I can do anything, I will solve any problem.
Honestly, the limited funding especially when paying for public API has been a frustrating aspects of my startup. To that end, recently I was building an iOS app for someone that used an external API and I had unlimited access to the API. Building that app took me some 25-35% of the time that it would have taken me had I been building that for my startup. Prior to this, I had no idea just how fast I had become at writing code and building solutions.
A startup means you need to wear many hats and whatever it is, you need to multiply it times three when it’s a one man startup.
As usual, if you find any of my posts useful support us by buying or even trying one of our products and leave us a review on the app store.