Pastecard is a tiny notes app that I made for myself, because I wanted a notes app that fits the way I take notes: for little things I only need to remember for a little while, like a grocery list, or tasks to finish today, or a link to check out later. Something so bare bones it loads fast and it loads on any device, and since I’m offloading this stuff onto it so I don’t have to remember it myself, I also don’t want to have to remember some password for the app either. In 2008, I made a rough version of it that lived at a secret URL on my blog. In 2010, I polished that up and gave it its own domain name. In 2018, I made a rough version of an iOS app that only lived on my phone. And here in 2023, I’ve polished that app well enough to put on the App Store.
Apple made two moves that inspired me to attempt this for real: the introduction of SwiftUI in summer 2019 and the announcement of new price levels at the end of 2022.
Whether I can call myself a software developer depends on if you believe writing markup is programming. I like to think I’m pretty good at vanilla HTML and CSS, writing declarative statements like “make a rectangle that’s this wide, this tall, and this color.” That’s all web design is, if you want to be annoying about it: a series of rectangles of varying sizes, laid out in sequences dependent on the size of the screen, containing your content. I’ve had plenty of jobs where a designer makes something in Photoshop and hands it to me and says “turn this into code.” I love those jobs! I’m no good at designing things out of thin air, and I don’t enjoy the “make the logo bigger” reviews involved with that either.
Before SwiftUI, designing an iPhone app was more of the Photoshop way of doing things. Traditionally, you would lay out the components of your app visually, and behind the scenes Apple’s software would turn it into code for you. Except that code was a goulash of mixed-case alphanumerics, like if you ever opened a Microsoft Word document in Notepad. And that’s even before you do stuff like designing a button and then linking what happens when someone taps that button to a function in your “actual” code. For the first version of the iPhone app that I made for myself, I just blindly followed YouTube tutorials without understanding what I was doing. It worked, and it looked like I wanted it to, but if I came back a couple months later to tweak something I pretty much had to start over.
SwiftUI, instead, functions like the way I’ve worked on websites for my entire career. You make declarative statements right there in your code for how you want your rectangles and buttons to look and where you want them to go. I took a SwiftUI class online to really understand it, and came out of that as confident as I was with HTML & CSS, languages I’d been writing in for 20 years. That’s a testament to the wonderful effectiveness of the instructor, absolutely, but also the similarities between them.
As I write this, SwiftUI has only existed for less than 4 years. And Apple has more or less stated that all future apps for iPhones and MacBooks and iPads should be written in it. So I feel pretty good about setting down roots here. However! The flip side of getting in near the relative beginning is that there are plenty of kinks and outright missing features.
On the plus side, if you stick close to Apple’s recommended conventions, you get a lot of functionality for free. If you use the color palette built into the system to declare what color everything should be, then you get the dark mode of those colors automatically. Or if you use the system names for font sizes instead of numbers, they will automatically scale up or down for your older relative whose blue bubbles take up half their screen.
Then again, there are niche pieces of iPhone apps that don’t really support SwiftUI yet. One is the launch screen, which briefly appears after you tap the app icon unless you’ve used the app recently. Those are still only possible in the old storyboard way of doing things. The closest I could get was forcing a single (solid color) image across the navigation bar, which is gross and I look forward to being able to do better soon. The other is the temporary interface when you share something to the app, which by default still comes with a blank storyboard file that you have to override with SwiftUI code. And there was a third idea involving Home Screen actions that I couldn’t find a suitable override for, but I won’t say more in case it becomes possible later.
I’m charging the least amount of money possible for an app, which is now 29¢. Apple recently expanded their pricing options to every ten-cent increment, instead of only .49 or .99, and honestly if it were possible to charge nine cents, I would have. Really, I just want this to be not free. This is still an app I mostly made for myself, and now it’s in the store not really for the general public, but for hiring managers at potential future jobs to see. If it was free, any fool could download it, hate it, and blast me in the reviews. Or, heaven forbid, they like it and use it a lot, and now my server bill goes up. Or, worst case scenario, it attracts some malcontent who hacks into every part of my life and leaves me destitute and framed for crimes. The great thing about the imperfect human psychology is you can use it to your advantage. And for whatever reason, people hate paying for apps up front.
It’s mostly stupid, but I think also a little funny, to charge so little for something with a straight face. On top of that, Apple takes a 30% cut of every sale, which is 9¢ rounded up (and you know they’ll round up). At a take home of 20¢ per sale, we can do some fun cost-revenue analysis. For example, I would only need to sell two copies every year to break even on my server costs. They’re very low, and I’m proud of that. (Of course, they’d likely go up with more people buying the app and using it, but that’s math for a later day.) I would need to sell 60 copies every year to cover the cost of my domain name registration. And – this one is great – I would need to sell 481 copies of the app every year to cover the cost of what Apple charges me for the ability to sell it in the first place.
• • •
I tend to be self-deprecating about my programming abilities as a defense against rejection. If I say I’m not that good first, it won’t hurt as much when someone else tells me I’m not that good. So with that in mind, I want to honestly say that I know Pastecard is a very simple piece of software. It doesn’t attempt to do serious privacy stuff like authentication with passwords or encryption of text. (In addition to rewriting the app in SwiftUI, I rewrote the functional code to use the async/await pattern, but it’s not like I know what I’m doing there.) It doesn’t look fancy in any way. It’s the kind of project a good programmer could bang out in a day. It’s also not an original iPhone app idea at all. There are plenty of similar apps like Scrawl Notes, Quick Draft, Edit, or bigger players like Simplenote or Drafts.
But I think mine is done with just as much, if not more, care. And mine has an equally feature-complete website complement whereas some of those don’t. That means (even though, again, there aren’t passwords) I had to make functions for creating an account and passing that account through the system, whether you’re using this app or loading the website on your smart refrigerator.
The rush from working on a coding problem for a while and then finally getting it to work is the main reason I’m still on this career path. I’ve worked for big companies and tiny companies with iPhone apps in the App Store, and I’ve followed plenty of developers online who make their own. So I was familiar with the process of not only making an app, but also the roller coaster that is getting Apple to review it, approve it, and list it for sale. And now that I’ve gone through it myself, it’s almost just as big a rush and I see why everyone wants to write a blog post about their experience.
So even though this is still mostly just an app for me, I think I’m going to keep making it better both for myself and for everyone. I’d want to try making a Mac app next, because that’s what I have and use. And then maybe more outside-the-app hooks, like support for Siri or Shortcuts, if they make sense. Ultimately I want this to stand as a showcase that reflects what I’m capable of in a positive light, so as I get better (and SwiftUI gets better), so will it.
You can buy Pastecard in the App Store for 29¢, but please don’t.