Technology Obsolescence

783841-R1-036-16A_016A few weeks ago I decided to brush up on my iOS development skills and start planning a new iPhone application project. The latest version of Xcode required the latest version of OS X, neither of which I had installed, because my ancient copies of Avid Pro Tools 10 and Sibelius 6 were rumored to not be fully compatible with the newest OS X. Additional research suggested that, with the most recent minor updates on OS X, any incompatibilities would be non-issues for me, so I went ahead and upgraded to OS X Mavericks and installed Xcode 6.

Apparently just in time for Apple to release OS X Yosemite, which will surely come with its own set of potential incompatibilities with older software packages. Hopefully nothing will compel me to upgrade to Yosemite anytime soon…

While perusing the other latest announcements from Apple, I thought maybe setting up a Mac Mini as a dedicated music production computer could be a good idea: about as much power as my laptop, and I could do software development on the laptop instead, without concern of new OS updates from Apple wreaking havoc on the music production software. But wait! What happened to the FireWire 400/800 connection on the Mac Mini?

I guess I’ve been sleeping through the recent technical specification changes from Apple, as none of their current computer offerings come with built-in FireWire connections. Hopefully their FireWire to Thunderbolt adapter actually works, or I might have to replace my FireWire audio interface whenever I eventually get a new computer.

But why should I get a new computer? There was a time when it made good sense to replace your computer every two or three years, because over that time period, processor chips became significantly faster, and both memory and hard drive space became less expensive and more abundant. The basic computing specifications for today’s MacBook Pro are nearly identical to those of mine from four years ago. My computer is, essentially, still up-to-date. It’s mainly the software that is still constantly changing, with operating system updates driving updates in application software that you don’t necessarily want to upgrade just yet.

Technology obsolescence has been going on ever since technology has existed. I wouldn’t expect to still be using the video genlock I had on the Amiga 3000, nor the MIDI I/O card from the Apple IIe, nor the Borland C++ compiler that I used on Windows NT 4. But sometimes it appears that technology which is still perfectly up-to-date is being made arbitrarily obsolete, and that you don’t have to use your computer for much besides browsing the web and listening to music to experience it…

2014 Honda CR-V

20141011-honda-cr-v-5.jpgAfter seven years and 92,000 miles we traded in the 2006 Honda CR-V for a 2014 model. What has seven years of design revisions given us? The most notable changes include a rear-view camera and corresponding display in the dashboard, which is automatically activated when you shift the car into reverse; a switch for turning on and off a mode for better fuel economy (which sucks resources from other areas of the car and makes acceleration take longer, so it actually does make sense to turn off the better fuel economy at times); and Bluetooth connectivity to your mobile phones / tablets / whatever, offering the ability to place phone calls through the car interface and play music from your portable device.

Since you can so easily play your portable MP3s through the car sound system, the 2006 six-disc compact disc player has been scaled back to a single-disc player. Unsurprisingly, the cassette player has disappeared entirely. I first bought an Apple iPod about ten years ago, and started using an iPhone six years ago, but have still listened mostly to CDs. After two days driving around with the iPhone-to-car-stereo interface, I can readily imagine that Honda will ditch the CD player altogether in a couple of years, and I for one won’t object.

A myriad of other smaller updates also make the car generally nicer: passenger doors that open wider; back seats that fold down automatically at the pulling of a lever; extended field of view on the driver-side mirror; a little bit more interior space, both for passengers and cargo.

The owner’s manual (p238) offers some good advice:

If you get stuck, carefully go in the direction that you think will get you unstuck.

Sound words for driving, and perhaps for life in general. And in case the temperature warnings on cups of McDonald’s coffee aren’t enough, the manual (p134) also advises us:

Be careful when you are using the beverage holders. Hot liquid can scald you.

20141011-honda-cr-v-2.jpgBut most importantly, how does Samantha the border collie enjoy the 2014 CR-V? Seemingly just about as much as she enjoys every other vehicle she has been in, which is to say, not at all. After sitting in the passenger seat for a few minutes, she much preferred going for a walk over going for a drive!

PHP-FPM failures with Nginx

Following the news about a security flaw in GNU bash, I made sure to update everything on my web server. I had been using Nginx for serving web pages for over a year now, moving to it after many years of using Apache. After doing the various software updates on the server system, I began noticing web pages responding unusually slowly, and then eventually failing altogether, with a “502 Bad Gateway” error.

I traced the problem roughly to something odd with PHP-FPM, finding log results complaining about insufficient allowance for child processes and the service terminating. I had never seen anything like this before, and combed through any related Google search results to try to find a solution. I tried several things that appeared to make sense, but the situation did not improve.

Finally I reasoned that I had never seen this problem with Apache, and I’m finding lots of people who are experiencing this problem with Nginx. It does not appear to be a problem with Nginx itself, but perhaps with some interaction between PHP-FPM and Nginx. So since I really wasn’t doing anything Nginx-specific to run some web pages, I just switched back to using Apache. So far, all seems well again.

Writing software is hard. Writing software that always interacts correctly with a bunch of other software is even harder. I strongly suspect there is still something that I could do, either in editing configuration files, or in modifying source code, or in upgrading or reverting some piece of the puzzle, and continue using Nginx. But I have other things to do besides fiddle with web servers for a few days. Sometimes the easiest solution for a user is to just swap out one software component for another.