The Night Technology Betrayed Me: A Halloween Horror Story
It’s the night before Halloween and a major Solar Storm is on it’s way. I have been on a quest to see the Northern Lights this year and it finally feels like this might be the chance. Unfortunately, the forecast shows that it likely won’t be active until 2–5 AM. It’s 10PM now, so let me tell you a story and see where we end up.
Phone Has No Service
My phone has been unable to get cell service since sometime this afternoon. I didn’t notice while I was at home, but then I went for a walk and all of a sudden I was slammed with technology failure after failure.
I opened my phone and then tapped the PWA version of engram (an app I have been building). It successfully opened, but I was met with the familiar offline symbol — something I added after losing notes in the past when I didn’t realize I was offline.
While it correctly is able to store messages offline, I have yet to beef up the reverse sync when it finally comes back online. What usually happens is I log back in and all my offline notes get obliterated.
I pause, take a deep breath, and then remember that I built the iOS app version in an offline first manner, which means I could use that to capture my thoughts while out for a walk.
Strike two — I go to open the app and get a notification that tells me my “engram Beta Has Expired.” For whatever reason, I was still running the beta version of one of my deployments and didn’t realize that eventually they expire and full on disable the app. I stop in my tracks as I attempt to not throw a hissy fit.
I open Apple Notes, my previous go to place while on my phone. Stumble for a few seconds while I try to find the compose button. Then I finally get a note open and it has me on the title line. My shoulders tense up, I don’t have a title for what I’m about to write…I just want to start writing. The first thing that comes to mind to appease Apple Notes is “Phone has no service.”
I have now completely lost track my original thought, but I finally have my note open.
“Don’t trust engram offline”
Is the next thing I type. Only about an hour before another engram thought reads:
“funny how you become traumatized by software”
Prior to my walk, I was thinking about how I don’t trust my own app to do what I want it to do. Writing software is a sobering reminder of how often we are wrong. A piece of software does everything exactly as you told it. If it does something wrong, that’s because you did something wrong.
I have long struggled with this as a developer, but it gets better when you realize that everyone is fighting the same battle.
Writing perfect software is hard
I might even say impossible. Every decision you make while building an application has implications for anything else that’s already there.
I think the core Apple, Microsoft, and Google apps are, technically speaking, quite solid — I don’t often worry that one of them will let me down. But there is also lots lacking with their products.
My brief anecdote above about Apple Notes reveals a bit about why I don’t like Apple Notes for certain kinds of note-taking.
I have faced this challenge again and again while developing engram. “It would be really cool if it did X” is how most conversations around it go. Each one of those new things adds a new link hidden behind some menu for you to find (or not).
Releasing software to the public often means that whatever functionality is added must be included forever. Even if only 4% of the people using the app use a certain piece of functionality, it has to stay (or risk angering pockets of your audience).
This poses a challenge for quick iterations and making substantial changes. For this, and many other reasons, I have little desire to fully release engram. I’m ok knowing that sometimes I write something and later I won’t find it there. But that’s not a risk I expect others to be super keen on.
The advantage of this is that I can make drastic changes and try new things freely without the pressure of an audience seeing the things that don’t work well.
In the middle of my walk I wrote:
“Rewrite engram for iOS”
After a lengthy uphill climb to learn iOS development earlier this year, I ran out of juice. I had something functional, but the creepers (tiny bugs that slowly reveal themselves) made me not want to jump back in.
That’s a fairly long pre-amble to the fact that re-writing engram for iOS is exactly what I plan to do tonight. It will be nothing fancy, just a simple app that allows me to write a quick note and stores it on the device.
I will start from scratch and attempt to capture screenshots along the way for how to set this up yourself. With proper instructions it probably won’t take you more than 30 minutes. I’m all kinds of rusty, so we’ll see how long it takes me.
Step One: Open up XCode
This is where things start to get interesting. I’ve now selected the default iOS app supplied by Xcode and yet I open it up and there are errors that show up immediately. Not the most fun thing to start with. I’m starting to remember why I dreaded having to make updates.
I figure the errors will go away once I change some code so I run to grab a cable for my iPhone. I think about where my USB-A to Apple Lightning cable is. I realize it’s plugged in at the office and I’m at home. Then I remember I have a USB-C to Apple Lightning cable in my room — better yet I don’t have to dongle up to use the USB-A.
While this is a true recollection of my thought process, I can’t help but point out how utterly ridiculous that sounds. Despite having what feels like millions of cables, I have a precious 2* that are able to connect my phone to my laptop. The asterisk is because one of them requires yet another peripheral to actually connect.
I hope you didn’t think this was going to be an iOS tutorial post. I genuinely thought it might be, but the software gods are angry tonight. At this point, I audibly laugh. I snag a screenshot to add to this post and then Alt+Tab back to Xcode to Install the update.
If you’re thinking that would be too easy, then you know how this goes. The popup has magically disappeared. I Alt+Tab around some more and then Alt+` to see if there’s some other window hiding. Nothing to be found.
I didn’t have enough time to read the message, and assumed it meant that I needed to update my phone. So I go to my settings there and see no update available. I then start to worry that it means a MacOS operating system update. A colleague of mine just had their laptop brick from the most recent one, so wasn’t really in the mood for that.
Thankfully, I realized I just needed to update Xcode. No problem, I head to the App Store to update.
Ha, you thought this was going to be easy?! “We could not complete your update” a popup alerts me. Again I assume I need to upgrade the operating system, but after reading a bit further it claims I don’t have enough memory.
I don’t store all that much on this device except for code, so I was surprised to learn that I had exhausted all 512 GB. The numbers don’t lie, I guess. I proceed to clear out my Downloads folder and then empty my trash and cross my fingers that this is enough space for the 12 GB update.
I full on did a double take. 12 GB?! How on earth does Xcode take up 12 GB? Maybe I genuinely don’t understand the complexity of the full Apple toolchain, but that seems like a steep number for the base installation.
Apologies for the tangent, but I’m still here waiting for it to finish downloading, so you are going to have to sit through my complaints.
40 minutes have elapsed since I first opened Xcode
I’m surprised by the number of files the trash appears to be deleting. At first I’m amused so I take a screenshot to share here. Then I decide to watch to see what the final total is. It keeps going up to 90,000, before I begin to worry that something’s gone horribly wrong. Maybe I accidentally deleted the wrong folder and now I’m flushing work down the digital toilet. I panic and hit the x button to stop.
I see the Finder window behind still open and breathe a sigh of relief as I confirm that I correctly cleared out my Downloads folder. Still shocked at the number of files deleted, but the computer seems to still be running so can’t be that bad, right?
I check my disk space and find that I now have 55 GB available. Should be enough to get back to this Xcode update.
I have plenty of time so I decide to peruse the Xcode page on the App Store. A solid 2.7 out of 5 stars. “Very unstable and buggy” and simply “Buggy” are the top two headlines.
I’m now staring at the download progress ring, wondering how long it’s going to take. It’s just over 3/4 full, but has been stuck there for a while. Wasn’t some kind of time estimate something we standardized on a long time ago? Is it even downloading anymore? Is it my internet? Is it their servers?
I decide to take a look at more recent Xcode reviews.
This is a fairly representative distribution of the reviews I see. Difficult to install, flaky, frequent crashes, and the occasional person saying “hey it’s not so bad compared to Visual Studio”.
I go to check my internet speed and registers 268.8 Mbps (Supposedly I pay for 300…but “something something up to 300Mbps”)
If I can still math correctly, 12 GB is 96,000 Megabits. 96,000 / 268 = 358.2 seconds or 6 minutes.
I can’t say for sure, but I’m pretty sure I’ve been stuck at the same spot for 6 minutes, not including the 10–15 minutes it took to get there.
I ponder whether clicking stop and then resume will make it go faster. But maybe doing so completely breaks it and then I’ll have to start over again.
I muster my courage and click the stop button.
Hmmm, nothing seems to have happened. I saw the button flash, so it definitely registered my click. But nothing indicates that it stopped.
I started this article with a full charge and am already down to 40%. I’m on a 2015 13" Macbook Pro, that is supposed to have around 10 hours of “web browsing”. Don’t even get me started on how much slower this laptop is than when I first got it.
I have a new theory about why it’s taking long and also not allowing me to stop it. It’s no longer just downloading the file, but potentially in the middle of installing. I had been debating restarting the computer, but if it’s mid-install who knows what terrible state that would leave things in.
The Activity Monitor confirms my suspicion. My little CPU is working it’s butt off to install Xcode.
It’s now 11:34PM, I’m going to put up some tea while I wait for Xcode to do its thing. Maybe that’ll help me let off some steam so I can make this post a little less grumpy.
I’m nearly done my tea now. It’s 12:04 AM. If you pull out your monacle (something you can barely find info about on the first page of google results for “monacle”) you can see in the image above the loading bar appears to have made some movement. I’m 95% complete but have 0–120 minutes left.
I started writing this post with energy and excitement. I intended for it to be a play by play, but I didn’t really foresee the nightmare that was about to unfold.
Over two hours ago, I set out to write what probably amounts to 20 lines of code so I could make my own frustrating app a bit more reliable.
12:36 AM: Xcode is still installing
1:00 AM: Xcode has finished installing
I’m hopefully near the end of this installation process (and this post), but miraculously I still had more to install after the install completed.
I’m in! I can successfully get started now. It only took the entire night.
Wrapping this up
It’s increasingly looking like the Northern Lights won’t make an appearance tonight. I guess I wasn’t the only person with a hopeful forecast that didn’t quite come true.
I have plenty more to say about why software can be such a nightmare sometimes. I was hoping I could blame all these technology troubles on the solar storm like in movie Superintelligence, but even nature seems to be “unreliable” at times.
Now that I have a functional Xcode, maybe my next update will actually include something of substance.