Programming on Hard Mode: The Challenge

Reid Case
4 min readOct 22, 2021

Click to read Part 1 New Devices

Click to read Part 3 Defining an MVP

Previously, I wrote to introduce my current state of device replacement. I am attempting to consolidate the utilities of both my old laptop and tablet into one device, the iPad Pro 12.9". I am challenging myself to embark on a dev project using this iPad as my dev environment.

Of course, I will need to make use of hosting and cloud services for this project to live, but I hope that most of the development work can be done with the iPad. At least within a reasonable range of what can be done on traditional personal computer operating systems.

Hardware is locked in. The previous post contains two benchmark results for CPU and GPU across my devices. The iPad Pro slots in perfectly, just below my desktop. Yes, I could’ve gotten more in a laptop. And my reasoning behind making this leap were mostly impulsive. Really, though, Apple is signalling their intent to blur the lines between their traditional computer devices and their mobile devices. It is 2021, and while there is a lot of performance to be had in a laptop — and the laptop platform does seem more modern than a big old boxy home built desktop — I feel like a powerful tablet is a better Swiss Army Knife for computer tasks. I expect a device of this level, with “Pro” moniker to handle the same volume and types of tasks I would perform on a laptop. I can travel with this device much easier than a laptop. The interface is far better suited to casual web surfing and streaming than a laptop.

Why shouldn’t development work and the interfaces we use be just as easy and casual to navigate?

It’s a loose and poorly founded opinion, I know. I am also aware that there isnt full support for mobile devices when it comes to common and required software development tools. The tide is changing though. GitHub is trialling their Codespaces service. Notebook instances are available thorugh cloud service providers. Internet connections are fast, even mobile internet. Its never been easier to build to cloud services.

So, what are the requirements of a modern development project that are or are not met by the iOS applications and web services available?

At its most basic form, coding is just typing text and then saving that file. Maybe you will have to compile it, or maybe its a scripting language that simply needs to be interpreted. Sometimes a virtual machine to run the code is required, other times just a browser.

Can I type text and save files on my iPad?

Yes…

Can I do whats needed with those files to get them to a point where they coudl be considered a program?

Maybe…

Runtime environments, interpreters, compilers and etc. These are all dependent on the particular language, or sets of languages I choose to use. I guess its time to decide what the scope of this little experiment will be so I can make some choices and figure out if any of this is feasible or if I should start saving for a fancy M1 max MacBook to lug around. Am I going to make a traditional program, a mobile app, or build an entire system for some purpose?

What I have decided is that, to stick with the theme of “hard mode” I will make a game…

😆

I have a little bit of casual experience doing this. Not much though. Just enough that even with the perfect working development environment and tools I still may not finish it.

Not just any game, a multiplayer game…

😆

One with persistent and indefinite game states, that can support many players playing at once… Oh yes, the worst idea for someone who can’t finish anything, a mini-multiplayer-online game… An RPG? Maybe, but I’m thinking more of an arena style RTS. Honestly, I have no clue. I do know that these intentions are wildly ridiculous and pretty cliché.

Really, I am going to be building a system — if I ever finish — that has a few bunch of moving parts. Primarily a client for the player, a website, and a “backend.” I will need an authentication system, logging, load balancers, hosting, client platform, some set of databases for game data, some set of services to bridge between the players and everything else, something to run NPC logic (if there are any), somethign to manage the overall world state, the list goes on.

A microservice architecture will be appropriate, I think. Hosting through one of the cloud services will be necessary, whether it be a big player or a small shop tailored specifically to game devs is still up in the air. The player client, I’m thinking, will probably need to be browser based as I know that I’ll not be able to test on this device otherwise (already making compromises).

None of that even covers game design, story and characters. Most importantly, I will also need assets — visual and audio. Actually, these may be easiest to develop on the iPad. Those may be my last words.

--

--