Welcome to my blog ?, I plan on posting on here regularly in the coming months but in the mean time let me tell you about myself. My name is Stewart but my friends call me Stew, I’m an iOS engineer working for a small software agency based in Edinburgh, Scotland.
In this day and age it seems like people are getting into programming at an ever younger age and so in comparison I found my passion for programming at the comparably senile age of 17 whilst doing visual basic of all things, I had done a crash higher (Scotlands equivalent of an English A-Level) in computer systems during my last year of High School and found that making software was one of the most enjoyable things I had done in my 5 years of high school up until that point.
Haven gotten my first iPhone that same year, It was an iPhone 3G and I was the envy of my school for being the only person to have one, I remember a teacher getting one a few months later and being all smug waiting to show it off until he had the smile wiped from his face when no-one was interested saying “Nah we saw one of those months ago.. Stew’s got one” I will remember the way he looked at me forever ?, anyway I digress…
I got my iPhone right as the App Store was launched and all the stories of single developers making games & apps and having them become sensations over night. I really wanted to make one but I didn’t have a Mac (I also didn’t have any where the knowledge of how to make them but I learnt that later).
After saving up for a year working at a local Supermarket I finally managed to buy an entry level MacBook Pro just before going to University.
This is when I realised that I was woefully unequipped to make apps, I had an iPhone, I had a Mac, I even had Xcode but I definitely didn’t have the knowledge of writing code! Turns out learning visual basic doesn’t set you up for a career in “real” programming languages.. who would have guessed ?
Anyway, after leaving school I attended the University of Abertay Dundee where I studied Computer Games Technology and attained a BSc (Hons) for my efforts… not that those efforts were particularity good.. although what I learnt I put into good work.
During the summer break after my first year of uni, a full two years after getting my first iPhone and wanting to make apps I finally had the equipment, time and most of importantly the knowledge to start making an app. I wanted to make something simple and so I wrote an app for helping people attend music festivals as non of them had their own apps. It covered several of the biggest music festivals in the UK and it contained lineups, travel info and site maps/info.
Needless to say I was very proud of my work despite the app being horrendously coded… I didn’t even use asynchronous networking so every time the app downloaded one of the lineups (which it did every time you viewed them) it would hang indefinitely ? It truly was awful but I was so proud to have released something on the app store after all that time.
The following year was when my biggest success came, I had decided to make a game and again I wanted to make something as simple as possible so I made an infinite side scrolling run and jump game, I used the Doodle style that was all the rage back then with games like Doodle Jump and Doodle God topping the app store charts. I called it Doodle Sprint and after a month it had done nothing… then all of a sudden the downloads started to pick up, one day it would be 200 download, the next was 400, then 800, 2000, 5000, and before I knew it I was into the top 25 free games around the world, I simply couldn’t believe it! My simple little game was taking the world by storm! I continued to watch as it soared up the charts and I was thinking when will it stop? will it stop? surely I couldn’t make it to the top of the charts… I had purchased a subscription to a side called Applyzer which collated all the chart pos
itions from the app stores around the world, I was watching as it got to 5th and then 4th thinking how could I possibly beat Temple Run and Angry Birds, but then for a magical 5 mins it did!!!
I was astonished that anyone would be interested enough in my game to h
ave downloaded it enough for me to make it to the top of the charts but it had happened, I had done it, #1 free app and you had better know I took a screenshot! ?
Anyway after that it was all downhill, I tried to reproduce the success but ultimately couldn’t. After releasing several apps and games as an indy developer I decided to move into full time employment and found a job working for the company that I now work for.
It was a tough introduction for me, I knew that I had a good understanding for iOS and ints frameworks but I was extremely inexperienced when it came to real app development.. I hadn’t even considered things like app architectures and testing when I was making my own apps, so when I started working in an actual development environment I found it really tough to find my footing.
This was compounded by being given possibly one of the worst projects to find my feet.. when I was hired the company was needing to find a developer to come one at short notice and work a project that they had kicking off in a few weeks, I think the fact I could start almost immediately was the reason I secured the position, otherwise I would probably still be looking ?
The project in question was for the BBC and it was a mammoth! Entirely written in Obj-C which I was happy about as I didn’t know any Swift at the time, it was an extremely complicated application and even looking back now I think it was massively over engineered.
The BBC had invested in a framework they assumed would be used as a platform for writing all their future apps; it was called the Mobile Application Framework or MAF for short and it was actually quite cool once I got my had around but but at the start it was almost impossible to understand, here’s a link to an article about it from it’s launch. I think I spent more time right clicking and hitting “jump to definition” or “view call hierarchy” than actually doing any work.. everything inherited or conformed to something, it was great for enforcing architectural patterns but resulted in a lot off empty classes and jumping through about 5 or 6 separate files to find out what called what and where that property came from.
I remember trying to get my head around the app on my first week and thinking “I can’t do this”! I seriously thought about packing it in and giving up on being an app developer. I knew I liked making apps but at the time I couldn’t see myself working on projects like that… I even went home one weekend to see my parents and told them I don’t think I can do it and that I wanted to leave… I was extremely close to telling my boss that I wanted to leave and that I couldn’t see myself as an app developer any more, I think he kinda knew that I was struggling with the project and doubting myself a lot, he routinely pulled me aside and asked how I was getting on, I didn’t want to come across as being out of my depth as he had put faith in me by giving me the position but I also couldn’t lie I told him it was a lot to take in and he agreed, he said it was an app that he wouldn’t want to give anyone new but that he believed I could get my head around it, so I persevered and sure enough I eventually started to understand the intricacies or the app, although even after working on it for several months I still had areas of the app that I hadn’t even touched.
Looking back the framework was definitely overly complicated for the size of the app however it was really nicely implemented for enforcing architectures, the framework required that every page class be registered at launch, along with a view model, a service and a service locator.
Without one of those you wouldn’t be able to load the page. the app also made use of operation queues to implement an event queue, this event queue was used for all sorts of messages but the biggest one was the apps navigation, it was a very android way of doing things bit you would send off a navigation event and pass in a page type and service locator, the app would then use the service locator to load a service object, inject the dependancies, load the view controller and view model associated to the page type.
It meant that every view controller needed to have a view model and service, however it took a lot of boilerplate code just to add an empty page, you’d need to crate a view controller, service, model, locator and ensure they all conformed to the correct protocols. then you needed to make sure each saw set up to load in the correct components so as each of them would work together, if any of them were configured wrongly it would result in an blank screen. Once you had all the components then you needed to ensure that each component was registered at launch and that the page type was added to the navigation coordinator, only then could you actually call the page.
Also don’t forget this was Obj-C… that means that each page required a whopping 8 files just to load the page, then it was convention to add categories for the view controller, the app didn’t use storyboards or xibs as there was no provision for it in the MAF system, so all layout was done in code, that was the first category; then add another for styling, and finally a 3rd for accessibility… so now your super simple view controller requires 14 files to display it in all it’s glory….
It wasn’t really an issue in practice as the .h files could usually be ignored however it really does make you appreciate swift and it’s single file approach.
So after working on that for several months and almost jumping out the window on several occasions I moved onto a new project and a completely new IP. It was commissioned by the accountancy firm PwC and they wanted to develop an app that would allow small business owners to better managed their tax returns and be reminded of deadlines.
I worked alongside another a more senior developer on this project, I was mainly tasked with the UI and navigational aspects of this app. We decided to do this project in Swift form ground up as not many of our devs had experience with the language, I was happy to jump on the Swift train as it was something I had been wanting to learn but hadn’t ever had the commitment or time to learn it. I spent the first week or two just getting used to the differences of swift having come from a purely C based background.
Once I got into it I really started to like the language, there was some oddities such as structs that act like classes but are value types.. that was wired as I had always seen structs as something that only contains values… and don’t even get me started on enum functions….. ¯\_(ツ)_/¯
However having now used the language for many projects I wouldn’t use anything else! all hail Swift and may it take over the world!
Since then app I have worked on new and established projects from small startup companies to bigger organisations such as STV (the scottish version of ITV) and PwC again, I have also worked on projects in both Xamerin and ReactNative but those are stories for another day.
I continue to work on personal apps and Ideas but many for personal research and development reasons, I do have the desire to lunch more apps and business ideas so I’ll keep this space open as I haven’t finished my journey yet.. I’m only just beginning.