Building Wordpoke - The Journey
#Wordpoke Welcome, this is an attempt to summarise the journey of building [Wordpoke (iTunes)](http://itunes.apple.com/us/app/wordpoke/id471756627?ls=1&mt=8). The following is what took wordpoke from an idea to a finished product. **At the start I could only work on Wordpoke for a few hours a day, after work. Knowing I had a few hours of computer time available, I would make notes around those hours and arrive knowing the task / goal / position I wanted to reach at the end of the day / hours. This lead to daily achievements and as soon as I could I made it so that each day the application must still function. If not, do not update the mobile.** --- The following sections exist. * Short version. * Long version. * Book version. I ramble in the Book version, yet I feel the above is the most exciting thing I learnt in the journey of making Wordoke. --- ##Short version * Today, 2 versions have been submitted. * iPhone app (first), iPad (second), same app. * Made with Titanium. * Building for mobile apps is not the same as building for websites. * Daily iterated with working prototype nightly to test. * Submitted. * No marketing. * Poor sales. * Lost motivation. * Use app daily. ##Longer version * Built a learnalist.net (never launched) * Built an iphone app in Titanium * Made mistakes * Titanium has bugs. * Javascript skills were not good enough to use the early versions of * Titanium with scoping bugs. * Forced breaks from the computer + daily usage = App evolved. * Daily work + daily goal = A workable app almost from day one. * Made even more mistakes, mobiles are not like websites. * Titanium has bugs, improving with each release, sometimes breaking your work. (not a negative) * Titanium evolves. * App evolves. * Make more mistakes. * The app is ready. * Make the app a little prettier. * Few more features creep into version 1. * Prepare for app store (easiest bit). - screenshots - blurb - a website with screenshots. * Submit. * Set price to $2.99 (I built this for me first, someone else second) * Sales for the first week, geek friends, not family. * In almost a year sold less than 30 copies. * Lost motivation. * Months passed. * Started to improve the app. * Iterated over the most important things I and a few others wanted to see in version 2. * Titanium got a little better, less bugs, “require” huge plus. * Submitted new app. * Sales still as bad as before. * Now I tried to market it (a little) and failed. * Never took marketing seriously. * Use the app daily and not just for learning Norwegian. * Dropped the price - slight change nothing major. * When version 3 arrives, I will release at a new price point. ##Book version ###A Concept was Born I moved to Oslo, Norway sometime in 2009. Not being a native Norwegian, I was (still am) faced with the need to learn the local language. Being a web developer gave me a blank canvas. From this blank canvas, “Learnalist.net” was born, “Learnalist” would allow me to grow my “vocab learning tool”. “Learnalist” was never launched, but to a handful of users, I being the heaviest user. Journeys to work, gym or anytime I needed to sit on the bus, would have me adding a random word I saw. Usually triggered from looking at an advert, or seeing a word as we drove by. Between [Majorstuen](https://maps.google.com/maps?q=oslo,+norway&hl=nn&ll=59.930119,10.717678&spn=0.024126,0.076818&sll=59.940153,10.719241&sspn=0.01206,0.038409&t=m&hnear=Oslo,+Noreg&z=14) and [Nationaltheatret](https://maps.google.com/maps?q=oslo,+norway&hl=nn&ll=59.919366,10.736818&spn=0.024134,0.076818&sll=59.940153,10.719241&sspn=0.01206,0.038409&t=m&hnear=Oslo,+Noreg&z=14) (places in Oslo), there is a small black spot in the network where internet connection dies. This is where the seed was sown for my yet to be launched website, MUST work on the mobile. (of course!) ###Starting Creation Taking a small feature of “Learnalist”, the personal list, I looked to copy it to my mobile, I was drawn and still am drawn by Titanium / Phonegap (Cordova) concept. Starting with Titanium, I took my website building skills and applied it to the mobile. Terrible mistakes were made with Javascript scoping issues, some on my part and some on leaks in the earlier versions of Titanium (incase you stop here. Titanium with the use of commonjs has really fixed many bugs and made a much cleaner and enjoyable way to code) The most important feature of Wordpoke is to remind you at certain times of new items to review. Therefore the reminder system is where I learnt the painful lesson the most that: * mobile is different from website. * non iOS code can have bugs which leads you to learning little parts of objective-c. * non iOS code may not have implemented the iOS code functionality (again improving all the time) * reading about the native functionality Please remember the following when coding on any 3rd party tool that promises development across multiple devices. * iOS is not Android. * Neither are B2G * None of the above are a website. * One size does not fit all. I tried to write my own “reminder system”, as you would have to do in a website. However, iOS has notification (localNotifications), Titanium supports it (has had bugs). Yet I only learnt both these facts after I tried my own. Reading the manual would have saved me a large amount of frustration and time. (Rushing to code, sometimes is a downside... pains me to write it, yet its true) Fully understanding asynchronous usage and how iOS is built on it, would have helped too. Back to the “native functions”. It helps to understand fully the concepts used for the mobile you are writing your application for. The day will come when Wordpoke will arrive on the B2G and Android. I will have a phone running B2G / Android and already know I have to adapt how the notifications system works with the “rules” of that device. I am okay with that. Reusable code is one thing, code where one size fits all, is still a little way off.... **This is copy of what is written at the top as it to me is the best thing about building Wordpoke.** --- The following is what took wordpoke from an idea to a finished product. At the start I could only work on Wordpoke for a few hours a day, after work. Knowing I had a few hours of computer time available, I would make notes around those hours and arrive knowing the task / goal / position I wanted to reach at the end of the day / hours. This lead to daily achievements and as soon as I could I made it so that each day the application must still function. If not, do not update the mobile. --- Using git, with branches, it makes the trivial. I had hoped to look back over the code and recompile and take screenshots etc. However with Titanium evolving overtime, some branches which worked. Since then have broken due to little bug fixes etc. Because of the nature of Wordpoke, for a long time, it was okay to accept the app could only add items. I could scroll down the list of items when I wanted to review them, yet equally knowing the vision (read aim) and seeing what it did today always helped fuel me to take it to the next task, the next goal to reach the vision, daily. This process really helped shape the development a lot more than I realised and has since been a huge takeaway for me in all aspects of my coding. The logo was created with Inkscape. The splash screen photo is a inland lake in the West of Norway looking towards Røldal. ###I launched. The app store did nothing for me, I had expected some level of traction / exposure from the App store and was quite surprised at how little there was. Many blog posts have been written about this aspect, so I will stop here. Demoralised... I was, how could the app store not suddenly make me rich. Did I really average out that poor hourly rate from building such an app... etc etc “Demoralised Developer walking”. I loved using my app, thinking up new ways to use it. I made no effort marketing the app. Even today, it surprises me, I know the problem, I have put the hours in to make a product and still I dont focus enough on the marketing. I know im not alone on this. ###Fast forward: * I had my 1 million sale.... (I lied, remember less than 30 sales!) * I wanted to update the app. * Turned on the Titanium editor, updated the sdk + version... * Compiled. * Nothing. ####What? Dug a little deeper, discovered Titanium had evolved, I had not. What do you mean I need a new apple sdk? In the time from launching to working, Titanium evolved. Apple released a new version of iOS and my app no longer worked from the same code that a binary was made, approved and sold from. ####Translated: More work for the developer. Working with html, evolves but you rarely have to worry that the “script” tag will disappear or something equally crazy. ###Fast forward: Now that the dust has settled and im looking to tidy up my bug fixes and add some new functionality to Wordpoke, this same issue has a risen. Accept it, move on. ###Links: * [Inkscape](http://inkscape.org/) * [Titanium](http://www.appcelerator.com/developers) * [iOS](http://developer.apple.com/) * Mobile Dead spot in Oslo Between [Majorstuen](https://maps.google.com/maps?q=oslo,+norway&hl=nn&ll=59.930119,10.717678&spn=0.024126,0.076818&sll=59.940153,10.719241&sspn=0.01206,0.038409&t=m&hnear=Oslo,+Noreg&z=14) and [Nationaltheatret](https://maps.google.com/maps?q=oslo,+norway&hl=nn&ll=59.919366,10.736818&spn=0.024134,0.076818&sll=59.940153,10.719241&sspn=0.01206,0.038409&t=m&hnear=Oslo,+Noreg&z=14) * [Photo looking towards Røldal high up in the mountains.](https://maps.google.com/maps?q=R%C3%B8ldal,+Noreg&hl=nn&ie=UTF8&ll=59.794071,6.770325&spn=0.096901,0.307274&sll=59.919366,10.736818&sspn=0.024134,0.076818&oq=R%C3%B8ldal&hnear=R%C3%B8ldal,+Hordaland+fylke,+Noreg&t=m&z=12) * [Wordpoke Sale Site](http://wordpoke.me/) * [Wordpoke on iTunes](http://itunes.apple.com/us/app/wordpoke/id471756627?ls=1&mt=8) #Thank You.
















