Is It Necessary to Create a Website for Every App?

Is It Necessary to Create a Website for Every App?

Hello 👋👋. I’ve been away for a while, but I thought I’d get back into writing again. To ease into it, I decided to start by asking a question that’s been on my mind recently.

Does every app need to be on a website?

To give context to my self-indulgent question, I’ll start by saying I’m primarily a Web Developer. Whilst I’ve done a bit of systems programming, I do not claim to be deeply knowledgeable, and the bulk of my professional experience lies in Web Development and all it entails.

With this foundation in mind, it’s not unreasonable to say that I often find myself around other web developers and also consuming content on social media platforms regarding web development so that I always stay informed and up to date. From these interactions, I’ve naturally picked up on a fair number of often-said topics like serverless computing, the framework wars, micro-services vs monoliths etc and whilst there’s much to be said about any of these debates, I found myself in an interesting situation.

As I listened to these debates and seriously contemplated their ramifications, I noticed a growing group of people who seemed to believe that the only way to make apps was via websites. If you listened to this group of people, you’d think that if you were not spinning up lambda functions or deciding which service provider you’ll be saving your files to then you’re not doing real programming and your solution won’t scale.

I must confess, I didn’t arrive at this observation by some big-brain thinking or other nonsense. I came to it by realizing this mindset in myself when I was working on a side project.

To summarize a long story. Whilst working on my game engine, I got stuck in a rut. I didn’t know what features to add to it and a recent bug I’d discovered and fixed had made me question some of the foundational architectural decisions I’d made. Since I couldn’t find a way to break through, I decided to learn from others and see if I could get inspiration by looking at different more standard game engines. This led to me messing with Godot and making a few toy games to familiarize myself with the engine.

During one of these toy projects, I got inspired by the wild niche of stickman fight videos on YouTube. A few personal favourites of mine are Combat Gods, Combat Gods II, Animation vs Math, and Nhazul - Weapons Demo. All this led to me wanting to make a stickman fighter game that can try to replicate some of the crazy moves you see in the video clips.

I remember someone saying that Game Development is just solving a series of problems and boy were they right. I immediately ran into my first problem when I needed animations for my character. Luckily I got a great asset pack from itch.io which would do the job for me but there was a catch. I initially bought it thinking it used a Skeletal Animation rigging model which the pack does include. Sadly, I couldn’t get it working in Godot. Thankfully, he also included a bunch of image sequences which I could use with the traditional animation model but this also ended up being a problem.

It turns out, I had so many images for both my animations and the various skins that I effectively broke Godot and my editor became unusable because it frequently froze and crashed a lot. Naturally, I thought the simple solution was to just group all the separate images into a single or a few sprite sheets. After much Googling and begging on Stack Overflow, I eventually figured out how to write a basic program that could do this. At this point, I had forgotten about the game and was quite interested in this world of texture packing when I noticed that there weren’t any simple one-stop solutions that you could easily use to pack textures.

This didn’t mean that there were no solutions, there were plenty of command line applications that did it but I found my options quite limited if all I wanted was something that quickly and simply did what I wanted without going crazy in the configuration. So I figured, I already had a dodgy script that fit the bill, why don’t I polish it slightly and release it for free for people to use if anyone cared for it?

It was at this specific point in time I saw myself almost do something incredibly stupid. As I stated earlier, I didn’t intend to make any money with this tool, yet here I was about to spin up a website, deciding whether to use AWS or Azure for temporarily storing the files and all in all going crazy by thinking how to make a “simple” serverless solution to achieve all this. It was during these planning sessions that I came to a scary realization.

“I WAS PLAYING WITH FIRE!!!!! Why would I use all this services if I didn’t expect to earn any money?”

Maybe I’d gotten too used to the free tiers. I didn’t need to do all this. I had tricked myself into believing this was the only way to do things. The problem I wanted to solve would have led to lots of files being stored and significantly long processing times if the particular user had a lot of files of particularly high resolution. Both these things correlated with higher costs for bucket storage and serverless functions which meant if I had gone ahead with this incredibly idiotic plan I could have bankrupted myself if this site got any decent amount of traffic.

And so, I found myself wondering

Does every app need to be on a website?

The clearly obvious answer is

NO!!

Sometimes it’s worth thinking about the ramifications of what you’re doing and remembering any sufficiently complex task will have multiple solutions with pros and cons.

In my situation, the potential incurred costs weren’t worth it and so I decided to do a hard pivot and make my solution a desktop app instead of a web based app. This ironically led to a much simpler and saner solution which given the time constraints and budget allocated to it($0.00) left me satisfied. You can check out the app here if you’re interested. It’s very much a version 1 product but feel free to let me know if you like it and maybe I can improve it and add to it if there are enough requests.

So yeah, I thought I’d share this little story in case it might interest anyone. Although we rarely feel it sometimes, it is worth remembering that Software Development is a form of engineering and like any good engineer we should always assess the sanity of our actions if only for the sake of not giving our bank accounts a heart attack, especially in these economic times.