Part One - The Birth of Giga-Ball
By James Harding, Developer of Giga-Ball
I always had an ambition to do something beyond my day job, by myself, for myself, on my own terms. I love my job as a Product Design Engineer, but the freedom to be creative and be solely responsible for producing something appeals to me greatly. It's a novelty you don't often get in the workplace, even as a product designer.
I’ve had many ideas over the years but never really fully committed to anything. The idea that I kept coming back to was to develop an app. It appealed to me on many levels; an unquenched passion for programming, already having the tools to get started, the ability to pick it up and put it down whenever and wherever, and being the sole producer without needing to rely on anyone else.
Since my mid-teens I’ve been obsessed with Apple's products, philosophy and ability to continue to create products you never thought you needed yet can't live without and software that integrates so seamlessly and intelligently into your life. I remember getting my first MacBook and instantly falling in love, making any excuse I could to use it. It ignited my passion for product design and solving everyday problems with sleek solutions and beautiful products aimed at improving the users' lives.
I have watched the Apple keynotes religiously since 2006 when I first got that MacBook. I was fascinated by the developer tools that they would show off. Throughout school I was never exposed to computer programming, so assumed it would be near impossible to pickup on my own, however those Apple keynotes gave me glimpses of how I could learn and what I could create. I was curious and wanted to create software, but I didn't even know where or how to start.
I studied Product Design Engineering at university and as part of my studies, I completed a couple of courses which gave me my first exposure to programming. I learnt the basics of Python, C# and Visual Basic, and first experienced the logical way of thinking, the frustration of trying to get something to work and the joy of turning an idea into reality.
After this, on a handful of occasions I attempted to complete the free online courses that Stanford University deliver on developing for iOS. I thought that I could get by with my basic programming knowledge from university, but quickly realised that I was out of my depth and gave up frustrated. I continually tried to jump in at the deep end and each time, gave up pretty soon after realising that the content was just beyond my grasp. There was a clear gap in my knowledge, which I was too impatient to fill as I just wanted to get started and create my own app.
In my day job, I tried where I could to integrate programming into my work, making basic programs using Excel VBA to help automate data processing, learning MatLab and Python again. But it still didn’t satisfy the itch I had for programming and a project of my own.
Being a diehard Apple fanboy, I regularly listen to podcasts about the company, their new products and software and occasionally stories around the creation of their products. One such podcast, Accidental Tech Podcast, were advertising an audiobook, Creative Selection by Ken Kocienda, a former Apple Software Engineer, this sounded right up my street. In the audiobook, Ken described the software development process for the original iPhone, specifically the development of the iPhone's software keyboard. His stories about the challenges and the excitement of getting something to work, even if it is cobbled together, re-enthused my motivation once again.
By this time, Apple's Swift programming language had been around for a couple of years and a whole load of resources were available for beginners. I thought over all the times that I had tried and failed, and told myself that this time would be different. I wouldn’t rush or pursue an idea, I would just learn. I would start at the very beginning and learn from scratch with no goal, the only motivation being the enjoyment of learning and programming. So, in winter 2018 on my 10.5 inch iPad I downloaded Swift Playgrounds and followed the tutorials, finally starting to fill that knowledge gap.
At first, it was a little tedious as I was already familiar with the basics of programming; if statements, while loops, variables and constants, it was all old news. But Swift Playgrounds was different to the learning resources I'd previously used. It showed me the potential and gave me a glimpse of the power of what I already knew and how it could be applied to make something beyond data analysis tools or a web scraper.
I completed the first three stages of Swift Playgrounds over the next few weeks, ensuring that I put an hour or so into it everyday. I would take fairly extensive notes, creating a personal library of useful information that I could refer to going forward. I’m very much of the belief that my brain is a terrible way to store and manage data, so writing things down allows me to learn without the fear that I will forget.
It was approaching Christmas by this time, and I happened to stumble across a sale for an iOS development course on Udemy, called The Complete iOS App Development Bootcamp. The course was hosted by Dr. Angela Yu from the London App Brewery and seemed extensive. It covered all sorts of topics, not just coding, from the complete basics through to how to submit your app to the App Store, and everything in between. For £10, I figured that there wasn't much to lose, so it was worth checking out and seemed like the obvious next step.
Again, the course started with the, by now, well-understood basics, but I maintained my patience and persisted with it, as I had with Swift Playgrounds. Although a lot of the content was familiar, it was exciting. I was in Xcode, programming, and pushing basic apps that I had built whilst following along to my phone, within a matter of days. I felt like I was making progress quickly and got really into the course. I set my self a target of doing at least a couple sessions a week, taking my time and continually updating the personal library of notes that I had started during the Swift Playground days.
After around six months of progressing through the course, I still felt a bit reluctant to start creating my own app. There seemed to be an almost endless ream of new things to learn, meanwhile I felt that it was still beyond my ability to actually implement the things that I had already learnt. I was reading a blog post by someone else who had learnt to program in a similar manner, and they warned of falling into a 'tutorial trap', enjoying the safe learning environment and never feeling ready to actually step out alone. Their advice was to take a leap and start a project, continuing to learn in this practical way whilst working towards your eventual goal.
The problem was that I didn’t really have an idea for an app that I would want to develop, and that my goal up until this point was primarily to learn. While completing the Udemy course, I had spent some time outside of the course structure developing a basic air quality app. It tapped into some global air quality APIs and displayed an air quality index. I was really proud of that app, but it wouldn’t be worth releasing as it was so simple. I wanted something simple, achievable and worthwhile, putting my months of training into practice.
The idea I came up with initially was a unit conversion app. Being aimed at mechanical engineers would be its USP. I had a few novel ideas for the app, but after a couple of months my motivation was dipping fast. I was spending most of my time building UITableViews and wrapping my head around protocols and delegates. I’d been over it a hundred times and I still didn't know which code was supposed to go where. Thank god for my extensive library of notes and code examples! The app failed to excite me, and I stopped working on it, taking a break from programming for the first time in nine months.
Whilst staying at a friend's house in London, who happens to be a web developer, we got talking about what I had been doing. I'd had the idea of building a game in the back of my mind for a while, one based on a game that I used to play on my computer as a kid but assumed it would be way beyond my level of skill, despite my nine months of training. I brought this idea up in conversation which made me realise how enthused I was by it in comparison to the unit conversion app.
As a kid at school we had an old Macintosh in the break room that we would play whenever the opportunity arose. We’d scramble around for the floppy disk of Megaball and take it in turns to play. We loved that game. Despite having hundreds of games to choose from, that was the one that we always came back to. It was a brilliant balance of fun, frustration and competition.
Nowadays I really enjoy playing casual games on the iPhone, but it's a rarity to find a game that I love. I felt like a breakout-style game, similar to Megaball, would lend itself perfectly to the iPhone format, however, searching the App Store left me disappointed. Either the games felt amateur, were poorly made or were full of ads and in-app purchases. Even those by the big players felt devoid of any real fun. I felt that there was a gap in the market that I could fill with a throwback nod to a game that I really love.
Back to that night in London, trying desperately to get to sleep on the sofa, I couldn't get the idea out of my head. I kept thinking about the game and how much fun it would be to make. Unable to sleep, I ended up on YouTube in the early hours of the morning, watching tutorials by Archetapp on how to make a basic Pong-style game. It was similar enough to Megaball but super simple and a good starting point. I was so impressed at how easy it seemed to use Apple's SpriteKit API. I was excited again, maybe this was within my reach. As soon as I got home from that weekend away, tired and with a sore back, Giga-Ball was born.
For more information:
Read part two of the story, as Giga-Ball moves on from concept to launch.
Go behind the scenes of the evolution of Giga-Ball through each stage of its development.
Find out more about James' setup and the resources he used to develop Giga-Ball here.
Meet Brendan Lawton, the man behind the music, here (coming soon).