Retiring from App Maker Professional

The sunken cost fallacy is when one refuses to change their mind because they invested so much into their initial choice. Today, I had to acknowledge that I fell for this fallacy.

In November 2019, I came up with the idea of an "app to make apps" and began hacking together SwiftUI code to build an MVP. Like most tech projects, getting 90% there takes about 10% of the time. I uploaded my MVP in December to YouTube here. https://www.youtube.com/watch?v=WTN4_X4D6I4

App Maker MVP Dec. 2019

But things were quickly about to get out of hand. I decided the app should support importing Swift code. This increased the complexity of the code considerably. I needed to program a way to convert SwiftUI code into my own editor's model.

Code Exports in App Maker MVP

I chose SwiftSyntax to get an AST of the Swift code. Then I made increasingly more complex AST tree walkers. Before you know it, I added so many features that my AST walker could qualify as an AST interpreter!

App Maker now appears more like it does today, and there's a reason for that. The core of the app has not significantly progressed since late 2020.

App Maker Nov 2020


This comes from a screenshot from my demo video here. https://www.youtube.com/watch?v=qxqhFwDBvkg You can see it's a major improvement from the MVP. There's a code editor, iPad support, file browser, syntax highlighting, and @Binding support in SwiftUI!


And it makes sense that I made this sort of progress in 2020. We were in a full pandemic, and I had way too much indoor time on my hands. My weekends were spent tinkering with this toy app, something which happened less once Covid restrictions lessened.


But there is also a technical reason why the app peaked here. I wanted to add a proper drag-and-drop UI editor, also known as a WYSIWYG editor (what you see is what you get). But how do I build a WYSIWYG editor when everything is tied to an AST interpreter?


Well before solving that problem, procrastinated. Because programmers are really good at solving problems the business doesn't need to solve. Here's a particularly cool solution to a problem that didn't exist:

Live App

I realized that if I could interpret SwiftUI views at runtime, why not make an Xcode plugin that does just that? Well here that is and it looks so cool. But is it useful? No. Because it only supports a small subset of Swift and SwiftUI.

Meanwhile, the main editor was looking...pretty atrocious.

App Maker Visual Editor Feb. 2021

As you can see, it's just a view hierarchy. No drag and drop. No nothing! Basically just a more complicated version of the original MVP. But what was cool was that you could import and export code.


In my opinion, this is when I should have called it quits. The app had no obvious way of progressing without rewriting the interpreter to support a WYSIWYG editor (drag-and-drop editor). Furthermore, I started to realize that there were exactly 0 (that I could find) WYSIWYG editors that supported code imports. That should have made me stop and realize that there was a reason for that (the reason...it's hard). However, I decided to spend the rest of 2021 learning about interpreters and implementing my own interpreters for fun. I didn't touch App Maker itself for over 6 months!


And now I also had another project to worry about...Crate! https://crate.as


Crate


Now Crate was a real app. It had users...like active users and paying customers. And we had features that were actually being used. I had also recently quit my day job and was taking a long break. So most of my dev time went towards making Crate, and the rest was building toy interpreters.


By the time 2022 rolls around, things are looking grime for App Maker. I debated letting it go. I ended up rewriting a large portion of App Maker--only to not like the rewrite. And the new interpreter? Well, it never came. There was always something that made it either too hard to integrate into App Maker or make it unsuitable for the WYSIWYG editor. So 2022 ended up mostly being a year where I worked on Crate. I learned Vue, Typescript and made a web version of Crate, and shipped both a Windows and Mac app via Electron.


Meanwhile, my App Maker code remained unshipped and many times in an unbuildable state.

Now it's 2023, and Crate has been running stably without major issues for over a year. I also recently moved to Silicon Valley to work at TikTok as an iOS developer, so I have no time to pursue a crazy side project like App Maker (nor do I wish to).

I want to finish by thanking everybody who supported me in my journey making this app! You all were the best! Especially Taylor Lineman for helping me integrate her text editor Firefly! That little library saved me so much time. 

While App Maker will no longer be updated, I plan to open source my Swift interpreter later this year. If that interests you, subscribe to the Swift forums thread here! https://forums.swift.org/t/demo-of-my-swift-interpreter-that-uses-swiftsyntax/44379

Comments

Popular posts from this blog

Sass Responsive Interpolation

Follow Up on Corona Labs (now Solar2d)