I started writing computer code more than forty years ago, using a teletype and acoustic modem to attach to the Cincinnati Public School’s mainframe. Having thus learned Basic, I bought a TRS-80 Model 1 in 1977, thereby likely making me one of the first thousand people on the planet to have a store-bought personal home computer. That background in programming led to a lengthy career in developing mostly Windows programs, first in C and at the end in C#. In all of that time, I never once wrote a program that interacted with the physical world; it was always daemons or UI programming.
Then came the bargain-priced Arduino-based microcontrollers. At long last I was able to break through the fourth-wall of the monitor and make things happen in the real world! How exciting! Or it was, right up until I realized how expensive it was just to make simple little experiment-level systems. There had to be a better way to engage in brain-expanding coding in this new realm.
And then came Steam Summer Sale, 2017. Sure, I mostly bought toys, but I did find a true gem: Shenzhen I/O. Priced at a very attainable $11.24 (marked down from the just-as-attainable $14.99) it seemed well worth the expense to try it out.
It was. In fact, it was a bargain.
But before you run to your keyboard and buy it, here this: it is HARD. The learning curve, even for a mature software developer, is steep. To be fair, I tended to be very verbose in my coding, never doing in one gibberish line of anonymous classes, lambda expressions, and other contemporaneous dark-magic code, something that I could do in five or six lines of essentially self-documenting code. They teased me about it, but I left my most recent employer a vast body of code that can maintained and enhanced by a nearly entry-level developer. I called it coding at a 3rd grade level, but there was a point to it.
I only mention that because one of the hardest challenges I faced in Shenzhen I/O was completing the required functionality with very limited line count limits. Additionally, trading the vast universe of .NET functions for a language comprised of fifteen assembly language-like instructions was a like trading the camera in my iPhone for a Kodak Brownie. Yes, I’m old enough to have had a Brownie Super 27. I also dabbled in assembly language just enough to decide that a job opportunity I had at one point was not what I wanted.
So, dire warnings having been delivered, let’s dive into Shenzhen I/O.
First, and most importantly, you need to know three things about the instruction manual: first, there really isn’t one. Second, what acts as the user manual is actually part of the puzzle. Third, you absolutely have to read it.
In the game, Shenzhen is the name of the company that you, as the player, just started working for. The company is located in China because “we just don’t build things in America anymore.” Once attached to the company email, you start receiving poorly-defined requirements from your bosses, and a very well defined output trace to test against. From there you consult with the data sheets for the various electronic devices you will be coding to. These fictional devices are provided by various and sundry manufacturers, so the style and quality of the data sheets vary wildly.
In other words, the whole set-up pretty accurately models IT work in the real world.
As you would expect, the first couple of designs you are tasked to build are pretty straightforward. Increased difficulty comes in the form of trying to perform increasingly complex tasks with a limited number of lines of code, storage registers, etc. You are graded on number of lines of code, unit cost of the hardware components used, and the power used while the system is operating. There are often multiple solutions to each task, and once you get a solution working, you are presented with a bar graph that show where your solution lies with regards to the aforementioned metrics. On one of the jobs, I was happy simply to have gotten it to work, but when I saw that there was a more efficient solution to be had, I went back and tried again. Some simple algebra and the removal of a redundant part got me down to the most efficient solution. I couldn’t have been any prouder if I had designed a nuclear-powered autonomous lawnmower. I’m in the market for one of those, by the way, so if you ever see one…
I am extremely impressed with this game/puzzle. If you think you’ve got the chops to surmount the steep learning curve, I can highly recommend this as a challenging and rewarding way to sharpen your mind.
I've been fascinated with video games and computers for as long as I can remember. It was always a treat to get dragged to the mall with my parents because I'd get to play for a few minutes on the Atari 2600. I partially blame Asteroids, the crack cocaine of arcade games, for my low GPA in college which eventually led me to temporarily ditch academics and join the USAF to "see the world." The rest of the blame goes to my passion for all things aviation, and the opportunity to work on work on the truly awesome SR-71 Blackbird sealed the deal.
My first computer was a TRS-80 Model 1 that I bought in 1977 when they first came out. At that time you had to order them through a Radio Shack store - Tandy didn't think they'd sell enough to justify stocking them in the retail stores. My favorite game then was the SubLogic Flight Simulator, which was the great Grandaddy of the Microsoft flight sims.
While I was in the military, I bought a Commodore 64. From there I moved on up through the PC line, always buying just enough machine to support the latest version of the flight sims. I never really paid much attention to consoles until the Dreamcast came out. I now have an Xbox for my console games, and a 1ghz Celeron with a GeForce4 for graphics. Being married and having a very expensive toy (my airplane) means I don't get to spend a lot of money on the lastest/greatest PC and console hardware.
My interests these days are primarily auto racing and flying sims on the PC. I'm too old and slow to do well at the FPS twitchers or fighting games, but I do enjoy online Rainbow 6 or the like now and then, although I had to give up Americas Army due to my complete inability to discern friend from foe. I have the Xbox mostly to play games with my daughter and for the sports games.