Technological Debt, Mistakes… and Apple

Apple is a bad dude. He’s a bully at times. Sure he can be nice at times, even sweet. When things are good with Apple, computers can seem amazing, fast, clean, and safe. But all that comes with a hefty pricetag. Apple needs you to update constantly, both hardware and software, and this can be challenging to lots of people out there.

I work on a hackintosh, so I have to be very careful about updating my OS – it could cause breaking changes to my system. And after reading a little about updating to Mojave to the most current version, I decided to forego updating to the last possible moment.

Unfortunately, I couldn’t keep xCode up to date, and I had updated my iPhone, so I couldn’t actually install my updates to HustleTime on my device.

I had to try to install the newest version of Mojave, and of course, I was met with intense resistance. It turned out I was using an older version of the Clover Bootloader, and had some older kexts that were causing display issues in the new update.

This issue took the better part of Friday and Sunday to fix. But with the help of some very good folks at /r/hackintosh, I was able to get up and running.

Now for the Debt Part:

I made the mistake of trying to code all of my ReactNative work for both Ios and Android out of the same directory. Being the noob that I am, I made some changes to the node modules in the process of trying to get Android up and running and I ended up breaking the Ios implementation.

For android, the problem was really that I couldn’t get the emulator to run on my mac. I ended up creating an entirely new project on a windows machine and building it there from scratch (with lots of cuts and pastes).

As for the Ios version, I made some temporary fixes, and was able to get it running on a rudimentary level, but something was broken deep inside HustleTime and I didn’t know what. It manifested like this: I could run in debug mode, but I couldn’t actually build the project in release mode. This is obviously a big problem, and in order to move forward with developing I needed to be able to test the project in release.

I searched high and wide for fixes, but nothing worked. I ended up giving up on fixing, and decided to rebuild the project in a completely different repo.

There are a number of problems with this approach: first off- I can’t just rebuild projects every time I make a breaking change. I need a way to fix things. But this seems to be a little bit of a problem for react-native. It’s losing steam in the community and there are fewer and fewer up to date resources for help. Lots of code is old and it’s hard to find solutions.

In any case, after rebuilding the project, I can’t get an ad to appear in the new version of HustleTime – I keep getting an error stating that the GoogleMobileAds Module can’t be found. It’s tremendously frustrating to have to spend so much additional time on a piece I had solved for previously.

HustleTime will be cleaner and faster and fresher than ever, I just need to iron out a few of the new kinks…