Welcome, I guess?
It’s been a minute since the last time I blogged. Like a steaming hot minute. But here goes nothing. In the unlikely chance you arrived here and you are mildly interested in what I have to say, I can only assume it’s out of sheer curiosity for Autonome.
I’m assuming you’ve read what the app is all about and you are looking for something else. I mean, you’re into geeky stuff and want to know the ins and outs of Autonome. So here’s my promise to you. You’ll get what you want. After all, that’s the name of this journal: Something else.
Let me break the ice by saying I am, by no means, an expert. I started this journey around Valentine’s Day 2024, although to be honest my first contact with programming was in 2022, when I coursed a bootcamp on web development, but that’s a story for another day.
However, I’m stubborn. In these 9 months, I’ve dedicated over 400 hours to hone my coding skills. With highs and lows, of course, but I haven’t stopped doing things (I’ve paused from time to time due to life). Autonome is the culmination of this process, an idea I had almost 2 years ago, when I was finishing my bootcamp. During three quarters of 2023, I kept Autonome in the back of my mind and didn’t rescue it until August 2024, when I decided I wanted to make it real.
And now it is.
Autonome was launched in the morning of 24th Nov 2024. I didn’t announce it because I decided I wanted to add a few extra polishes, something else, which I also did between 19:21 and 22:21 on 24th Nov 2024. So now I’m waiting for the new version to be approved by Apple to go wild with social media posts.
Before I said I assume you know what Autonome is about. Are you curious to know what Autonome was all about? And also how I came to be here? If you are, join me in a brief journey.
Feb - March 2023
Right after I submit a proposal for my bootcamp’s final project, I decide I want to create a platform that streamlines a freelancer’s most tedious tasks. That is: taxes and productivity management. I bang my head against my table for not coming up with this idea before.
I tell myself I’ll finish the bootcamp and then I’ll start to develop Autonome. I even pitch this idea to some of my colleagues at the bootcamp.
However, around this same time, my boss (surprise, I have a 9 to 5) tells me they want me to move to a completely new position within the company.
F*ck me.
Sep 2023
I see Coursera offering an iOS Development course by Meta. It looks promising. I start it and, at the same time, I also start learning Swift through Codecademy’s iOS career path. Neither sticks. To be honest, I don’t take either thing seriously, and my enthusiasm just fizzles out.
Feb 2024
I’m kinda drowning in my 9 to 5 and decide to take a walk. I end up in a cosy place where a good friend assures me the best bikinis in the world are made. Bikini is the Catalan word for a grilled cheese with ham.
While I eat it and confirm my friend’s claim, I start looking into iOS development again. I end up in Mouredev’s Discord community, where a very nice and friendly person, Raúl, tells me how to start.
That same afternoon, I go to Paul Hudson’s 100 Days of Swift and start learning. Later on I’ll switch to 100 Days of SwiftUI, because in my haste I don’t even stop to read the recommended approach.
This time something is different. Or maybe I am. Because I decide I do want to take the process seriously instead of half ass it. And I eventually want to develop Autonome.
So I open a Toggl account to track the time I dedicate to the process and I decide I’ll code every day for at least one hour. If I can’t code, I’ll do something related to it, like reading, learning, etc.
It. Sticks.
Aug 2024
OK, so during July I don’t do much. My partner and I are moving from Barcelona to her hometown in Galicia. A little after we get settled, I start coding again. I can either keep learning or I can go for Autonome. I choose the latter.
What do I want Autonome to be? My first answer is a tool to keep track of your taxes as a freelancer, which is a constant pain for me (I know, I said I have a 9 to 5 and I do, but since the company is in a different country, I am registered as a freelancer in Spain).
I start the development and everything looks promising, but since I’m still a rookie, I don’t implement a proper system to store data and I end up restarting the process after 2 weeks to add SwiftData.
By this point, Autonome has 4 different data models: UserInformation, Quote, MoneyElement (incomes and expenses) and Invoice.
Sep 2024
I have constant issues with SwiftData. I release a first beta testing version around the 15th and it crashes right after a user adds an expense or an income. Promising.
Let’s break the last paragraph down:
It’s not that SwiftData fails. I mean, it kinda does, because I can’t get it to show data (not mock data, but data added by me when testing the app). For some stupid reason, all I see is a white screen. But sometimes (and here comes what’s driving me crazy), it does show the data. W. T. F.
The app crashing is totally my fault because I don’t anticipate that the way I’ve coded things, the app will try to access the different non-existing indexes from an empty array. So it bails out instead of frying my phone. And I can’t blame her for it.
I want to quit but I don’t.
Vlad Smolyanoy, a very nice guy who also founded SwiftyLaunch, guides me in the right direction with his feedback and his tips.
I don’t know what the problem is. I blame it on SwiftData.
I decide to move to Core Data and restart the project once again (by this point I’m in my 3rd attempt). I get a book on the subject and also a video course and dedicate the next 10 days or so to learn.
Oct 2024
I finally manage to see what the issue is and even though I’ve spent a lot of time going back and forth, I’m happy I learnt Core Data.
However, I don’t know you can’t brute force your way around a data storage system. Basically, I can’t replace SwiftData with Core Data without a proper migration (feel free to correct me if I’m wrong here), so I create a new project, but by this point I have so many bundle IDs and repositories named “Autonome” (or a variation of it) that I start to go a little crazy.
I decide to rename the project as “Pecunia”.
Surprise: the name is already taken. I go back to Autonome and pray that I can still use it in App Store Connect because the first beta testing from September had that same name and I bet Apple won’t accept duplicates that easily.
By this point the app has changed a little. At the beginning of the month I decided to scale down on functionalities and focus on one thing: creating quotes and sending them in PDF from the app. This means having 2 data models (or entities in Core Data jargon): Quote and UserInformation (for the user’s data and their clients’). But there’s a very important milestone for me: I detect what the issue was (the empty array thingy).
For some strange reason, I make the app work and I launch a new beta testing at the end of the month.
It works.
Nov 2024
There isn’t much to be said about the first 19 days of November. There is a family emergency that keeps us close to the hospital (all good now) and my 9 to 5 tends to get intense during this month. Around the 18th of November, I finally get some time to code again and I give myself a deadline to release Autonome: early December.
I end up adding an extra functionality through a new data model: Tarea. I want a to-do list in my app. A simple one that I’ll build on in future versions of the app. So now I have three data models: Quote, UserInformation and Tarea.
On the 21st, I create this site along with ~100 mockups of the app. I also look into the process of submitting the app, what else is required from me, etc. And I start adding stuff to App Store Connect. After uploading v 1.0.0, I get a rejection because the app lacks the option to delete a user’s account. On the 22nd, I implement it (it was in the to-do list, tbh) and I wait.
Finally, in the morning of the 24th, I see Autonome on the App Store.
But it’s not really ready yet. I create a new branch to add a feature that I think will make wonders to improve the user experience: linking the Quote to both UserInformation and Tarea through the client’s name, so users don’t have to add that information manually every time they create a new quote or a new task.
And by 22ish p.m. of the 24th, I submit v 1.0.2 for review.
What happened to v 1.0.1? I’m too ashamed to tell you now, we’ll go back to it later.
If you reached this point, thank you, you lived through the same I did, but in a condensed way.