Graham's Blog

Reflecting on Building My First App

Feb 28th, 2023

I’m primarily a web developer. Everything I build, whether it’s for work or for fun, is destined for the web. I love it, building stuff for the web has been a part of my life since I first cobbled together a Star Trek fan site in my tween years. But I’ve also wanted to broaden my horizons a bit beyond the web, and create something for another platform I love; the Mac.

I’ve dipped my toes into building desktop apps in Electron with my app Classic Calc, but I wasn’t all that fulfilled by building it. It was a good exercise, but it felt inauthentic, like I was cheating, so I lost interest. That was about a year-and-a-half ago.

More recently, I decided to tackle building something more substantial. I started fiddling around with Swift Playgrounds on my MacBook, trying to use the built-in learning tools to create a basic UI. Coming from JavaScript, I found Swift as a language fairly easy to grasp the basics of. But when it came to SwiftUI, I quickly found myself struggling.

After a few days of this, I decided to try my hand at building a basic app: a Markdown text editor. Over the course of a couple nights (and one or two lunch breaks), I built Scrib. Is it something I’d suggest using? Nope. But to be fair, I’d readily suggest it over CSS Shadow Tool, one of my first attempts at an interactive web app.

I pushed this project aside too. Unlike my Electron app though, I wasn’t unfulfilled or bored. I was overwhelmed. SwiftUI can be a finicky beast for seasoned developers, but I’d never written a line of it until recently so I was feeling totally lost. I felt stupid. The pride I felt in creating a functional Mac app was replaced with harsh self-critique. So I dove headfirst back into web development projects, my comfort zone.

But the thing is, web development wasn’t always my comfort zone. I used to be scared, overwhelmed, at the prospect of building for the web. Hell, it still scares me sometimes, but it’s what I know. I don’t know Swift very well yet, and I certainly am not very familiar with SwiftUI, and I often forget there was a time I was in the same boat with JavaScript (not to say I’m an expert, far from it, but I think you get my point).

So what did I learn that I can apply to my future endeavors to build a Mac app? Honestly, it’s something I already knew, but maybe I just needed to be reminded of: Start small, and don’t try to do everything at once.

I made a mistake trying to just immerse myself in everything Swift, but, as a result, I feel like I actually learned very little. What I should have done, and will do when I’m ready to dive back in, is start at step one. I know the fundamentals of programming, but that’s like trying to speak a language when you know the grammar but not the vocabulary. So I need to just forget about SwiftUI and building functional apps, and just start with the core language and get comfortable with that. Maybe write some command line tools and work my way up from there.

It’s definitely hard for me when learning something new to not immediately put myself down for not being good at it on my first go. It’s unrealistic, and unproductive, but for some reason it’s my natural inclination. The boot camp format mitigated that a bit, between the structured lessons and interacting with people who were in the same boat of having no idea what the frick we were doing.

Learning MacOS Making Stuff Programming