Originally posted on my old blog

Let’s do this “episode” style:

Episode 0 (Because no true programmer would start a list with 1)

In fourth or fifth grade, a friend told me about all the cool things he was doing with his jailbroken iPhone.

This is EXACTLY like your friend telling you about how fun and awesome competitive programming is.

I wasn’t impressed.

Episode 1

Five years later…

After doing some TI-Nspire, Wii U, and Switch hacking, I set my eyes on my lowly iPhone 6s with a cracked screen that I’m procrastinating to fix. The time was ripe for some iOS jailbreaking!

Hacking a TI-Nspire, Wii U, or Switch involves going on GitHub and downloading some files. But for iOS jailbreaking, I was clueless on what to download, especially since there are so many different iOS jailbreaks, so I searched for “iPhone 6s 12.1.4 jailbreak”.

DON’T DO THIS! You get a bunch of junk results like random YouTube videos, so I followed one and it was really sketchy. Like, extremely sketchy. I had to install a bunch of apps from the app store before the jailbreak could begin, and, well, it was sketchy.

Plus, it didn’t work.

This is EXACTLY like a weird, sketchy greedy algorithm that you doubt is going to work, and you implement it, but… it doesn’t work.

Episode 2

Yeah, that didn’t work. Let’s try something else. So, I did some research, and found a different, actually legit jailbreak. But it was still sketchy, because I didn’t know a thing about sideloading .ipas, so I installed some kind of enterprise app thingy? DON’T DO THIS! You’ll get pwned instantly, so yeah, don’t install untrusted and sketchy apps. Thankfully that hasn’t happened to me yet… or maybe it has. Who knows.

But somehow, it worked!

This is EXACTLY like a weird, sketchy greedy algorithm that you doubt is going to work, and you implement it, but… it does work somehow.

And I could finally play WII SPORTS on my phone. YEEESSS!!!

Episode 3

A few weeks later, I made the horrifying discovery that not only did I have to do the jailbreak again every time I rebooted my phone (I should have anticipated this one), but that the sketchy enterprise app I was using got taken down!

NOOOOOO!!!

Time to find another jailbreak…

So I did some research, and it seems like unc0ver is the leading iOS jailbreak. Fortunately, it supported my phone model and iOS version, so I proceeded to follow the instructions on their website. Unfortunately, AltStore, the preferred sideloading method these days doesn’t work on iOS 12.1.4, so I considered my other options: Cydia Impactor, requiring an overpriced $99 Apple developer account, or Xcode.

The first option was obviously off the table, but the second was more interesting. The thing is, Xcode is macOS only, and I don’t own any Apple computers.

Well, actually, I do have one, issued by my school, but it’s extremely locked down. Also, I don’t own it, the school does.

So, my only option was to set up a macOS VM.

I never liked VMs. They’re slow, hog disk space, and NEVER work. But somehow, against all chance, it worked! I was able to get a macOS VM running slowly, but smoothly, on Windows using VMware Player. Unfortunately, my disk space reached critically low levels at that point, so I loaded up Xcode onto a USB drive.

And it worked! Somehow.

It took forever because the VM was so slow, but in the end, I could play WII SPORTS on my phone again!

This is EXACTLY like a complicated, convoluted, overkill algorithm that takes 10 hours to implement and somehow passes a few milliseconds under the time limit. Like maybe 2D segment tree, plus Aho-Corasick algorithm, plus heavy-light decomposition, plus divide-and-conquer DP or something, all in the same algorithm. But it works. Somehow.

Episode 4

But my good luck didn’t last. Fast forward another week, and Windows update murdered my USB drivers.

Yeah. That was one of the main reasons why I switched to Linux soon after. Not just that incident, but several other updates crippled my computer.

Since I had such a bad experience finally jailbreaking my phone with a macOS VM, I tried to keep it from shutting down for as long as possible.

But one day…

It ran out of battery.

NOOOOOO!!!

So, I started researching macOS VMs again. I tried every combination I could. VM on Linux using KVM, VM on Windows using VMware, VM on Windows using VirtualBox, VM on Linux using VMware, VM on Linux using VirtualBox…

But nothing worked. Even when the VM ran smoothly, it would always fail when I tried to do a USB passthrough for NO REASON.

Yeah. VMs suck.

I was going to tear my hair out and smash my iPhone with a hammer when I realized…

This is EXACTLY when your complicated, convoluted algorithm runs half a second over the time limit, after you’ve taken 10 hours to implement it.

Episode 5

I use Linux!

I use Linux!

Why am I trying to set up a macOS VM? Why am I trying to use the unc0ver jailbreak when there’s like a million other ones?

So, I search this time for “iOS jailbreak for Linux” and sure enough, I got plenty of interesting and useful results. I tried the first result, the checkra1n jailbreak, downloaded it, and loaded it up on my computer.

Two minutes later…

I had accomplished it! It worked, obviously! After over 20 hours of sweat, blood, and toil with macOS VMs, I forgot to just take a step back, and look at my alternatives. Why did I keep on trying to drill into an infinite wall of bedrock, when the solution was just a few steps BEHIND me?

This is EXACTLY like when you’re stuck on a programming problem for 10 hours because you’ve been trying the same wrong thing over and over. But when you take a step back, and consider your other options, you realize the elegant solution wasn’t that far away. Just in the other direction.

Epilogue

iOS jailbreaking sucks. Just going to get that out of way. I’m never buying an iPhone again, this experience was so bad.

So does the world sometimes. It sucks.

The world is just a programming task.

I’ve been doing too many programming problems.