Part I: I lost my brand new iPhone ☹️

I lost my iPhone XS three weeks ago. I don’t want to buy a new one again any time soon. So I fished my old iPhone 5s out of my drawer. Setting it up, I noticed it is slow. To be accurate, it was too slow. Slower than when I was using it as my main device/phone. It’s unbearable. Why is it so? What happened in the last 2-3 months? Has Apple done some magic to persuade me to buy a new phone?

The answer is … No.

Apple hasn’t done anything to deliberately throttle my phone.

Part II: a craving to consume more

Probably you have blamed Chrome or Slack for using too much RAM too. But this is a wide and deep problem. It’s not easy to find a piece of software that is built with as much thought and effort put into making it memory efficent as developer used to do. Look at this supposedly tiny winy software that the only thig does is mirroring my screen on a conference room display. After keeping it open for 2 or 3 hours, it gets to the points:

Right now, I don’t have any important software open on my laptop and 11GB of RAM is already full. 6 years ago, my laptop had 2GB of RAM and it was enough!

What’s going on under the hood? Why do softwares eat too much nowadays?

Part III: a frame drops, an instrument rises

When was the last time you monitor the performance of the app you’ve been developing? Is it part of your everyday routine? Most of the time we use them when something is terribly wrong: app crashes, UI freezes, scrolling looks erratic, customer complains. Rarely benchmarking is integrated into our development process. It’s more like an occasional thing.

Barely you leave an interview haven’t answered some questions about big O notation. We can compare common data structures top off our mind. We know popular algorithms by heart. We can explain which ones outperform which ones. We all admit writing efficient software is precious. Yet everything in the market encourages use to leave old devices behind. The hardware industry goes forward fast and we’re trying to catch up. But it comes at a price: Old devices get ignored, their owners get forgotten. But soon or later, we realize that the number of ignored users are growing and maybe we should include them again. So this is why Lite version of apps is becoming a thing (Facebook Lite, Spotify Lite, Twitter Lite, Skype Lite, … and just recently Google Go Lite). Although many of them are nothing more than the existing product minus some features.

Part IV: Good Old Days

Last year I read Game engine black book: Wolfenstein 3D. It’s fascinating. To me, it is a treasure chest. As folklore and Code Secret are. Sometimes what you find on reddit or in an interview impresses you. They sound like fairy tales. When software development is more about crafting than wrestling with a bunch of technologies, tools, frameworks and sitting top of shaky stacks of unknown or hard-to-be-known layers. When people pay attention to each line of code they write and every byte of memory they use.

I felt over the course of time we, developers, are getting negligent and careless. We believe memory is a customer’s problem, not ours.

Part V: I won’t suck it up (at least for now)

I’ve decided to develop my next iOS side project for an old iPhone. I even tried to find iPhone 4, but no success yet. I’m curious to see what obstacles I will encounter and how I can find my way around them.