Corners of My Mind

I haven’t really been blogging much, as anyone who takes a cursory look at my blog can tell. I know that this past year has been pretty terrible for a lot of people, but my issues have been going on far longer.

This is probably going to meander quite a bit. I will try to go back and edit so this isn’t a slog, but I am making no promises.

I got excited about programming because I wanted to make things. If you follow me on Twitter, you know that I bake a lot and that I do a lot of crafting, specifically cross stitch. I consider myself a creative professional. I have a degree in Video Production/Motion Graphics. When I got involved with iOS programming, I saw things like Core Animation and Core Graphics as a way to more fine tune my visual expression beyond making things in Adobe Illustrator or After Effects.

Two years after I started programming, Swift was announced. I love Swift and I think it’s an improvement over Objective-C, but it really changed the tone of the iOS community. All of a sudden, we were getting a bunch of journeymen language nerds coming in who all had opinions about the “right” way to do things. I don’t mean to be a NIMBY about any of this because I definitely was a part of the initial influx of new people flocking to the green fields of iOS development at the end of the gold rush. But no one was talking about how to use any of the core frameworks anymore because they weren’t new and shiny.

With the open sourcing of Swift, there was a large push towards talking about how to make it work on everything. After it became obvious that it would not work on everything, the influx of people began to be more interested in cross platform stuff like Flutter so that no one would have to write multiple code bases for different platforms.

I have a full understanding of why all these things happened. I understand that businesses would rather just employ a single mobile developer instead of needing a specialized Android and iOS developer who can’t make the apps look the same because of different frameworks. But this isn’t why I got into programming.

I have spent years trying to find some happy medium between what I want to do and where the rest of the community is headed. I have been fortunate to be allowed to come to conferences to talk about Metal and graphics, but it took a piece of my soul every time I would have a conversation with someone that went along the lines of “What you do sounds super awesome, but I really need to go to a different talk because I need to learn something I can use at work.”

I foolishly thought if I evangelized the things I cared about enough that other people would care about them too. About two years ago I determined that they really don’t. Again, I understand why. The market doesn’t put a premium on well designed beautiful apps, so trying to make interesting designs is a waste of money.

All of this has been very hard for me. I spent my life feeling like I would never find people who got me and that I would always be this weird person in the corner eating my hair. When I went to my first conferences, I felt like I found all the other hair eating corner dwellers who all banded together to do awesome stuff. As the years went on, it was increasingly difficult for me to accept that this initial group of people all went off to Apple to think different and were replaced by people who just needed to crush code. I went to college with a guy who has been attending for twenty years because he doesn’t want the party to end and I was starting to feel like that.

I decided even before the pandemic to take a step back from the conference circuit and the community to find myself. I wanted to figure out what I actually want rather than what I think people want me to be in order to fit with the current zeitgeist.

I spent a year trying to write another book. It was an unpleasant experience and I don’t think I will ever write another programming book ever again. (Or host a podcast or do any kind of video course…) But one thing that I learned from that experience is that I am approaching things wrong.

I think very visually, but my drawing skills have always been bad. Well, not quite. I learned to draw twice before, but I didn’t stick with it for various reasons and I was terrified to try doing it again because I didn’t want to be bad at it. I kept buying art supplies, thinking one day I would make time to work with them and figure it out but it was never the right time. Around August of last year, burned out from the pandemic, I decided that now was the right time.

I decided not to work with code for the rest of the year and to just focus on learning to draw and paint. A part of my mind opened at that point that I didn’t realize I was holding shut. I have a limited amount of mental energy to engage with stuff and the programming part of my brain had been hoarding it. After I knew I would not need to work with code for a while, a bunch of stuff came unstuck in my head and I felt more myself than I had in a few years.

I have realized that one reason I was encountering frustration in my programming life was because I was trying to use programming as a tool for everything I was doing. I was so afraid to suck at drawing that I learned GPU programming and rendering because I thought there was some magical knowledge in there that would unlock all the stuff that was stuck in my head. By letting it go, I realized that there was an entirely different approach I should have been taking that I had closed my mind to.

All good things come to an end, and the end of my code exile approached. I have made peace with the fact that the iOS community is no longer in synch with what I want to do, and that’s fine. I miss all my friends and hope to see them again one day, but what I want to do isn’t where everyone else is headed. So I made a transition.

I had been tentatively exploring game development for the last few years. I was avoiding it because I had an internship with a game developer that gave me PTSD. I know it pays terribly and working for a studio is probably impossible with someone who has the issues I have. But I can make my own stuff. I can scope projects to be small enough and limited enough that I can do them on my own.

I have spent the first part of this year learning Unreal. I tried Unity but I don’t like the interface or design patterns. It’s just a personal preference.

I hope to publish a game by the end of the year. That is the goal I set for myself. I am trying to scope it as a very limited thing so that I can get practice making goals and setting milestones. I have more ambitious projects I would like to do, but I want to make sure I can finish something without burning myself out.

One thing I had trouble with before was working in 3D space. Again, going back to programming, I always tried to place things in 3D space using programming rather than getting comfortable with the tools and learning to think in 3D rather than in code. It is definitely a context switch, which is something I have difficulty with.

I have felt mentally paralyzed since I finished working on the Metal book. It somewhat burned me out and I never really dealt with it because I didn’t want to admit that it burned me out. I feel bad because I know that people were depending on me to add the sample code I wasn’t able to create while I was writing the book and updating the open source project I had with my husband. I can’t change any of that. It wasn’t that I disregarded people’s need, I simply could not deal with it anymore and I needed a break.

I wish I was a different person. I wish I was super excited about parsing JSON and arguing about reference vs value semantics. I don’t even know what the hell everyone has been arguing about for the last two years. Probably SwiftUI. I wish I was interested in the same things everyone else seems to care about. But I’m not. I came at this from another perspective and I am too old to change it. All I can aspire to be is the best version of myself.