It’s August, and there’s nothing new in tech. Lots of concern over privacy and security: not new. Facebook and Google know too much about us: not new. Smartphones are the dominant lifeform in the universe: not new. Small businesses (for good reasons) are reluctant to embrace new technology: not new. Life may seem boring for a tech columnist.
But I have a new job. I’m working as a senior software developer for KIXEYE, a maker of mobile games like War Commander and Battle Pirates. These games are designed to play on your phone or tablet for five to 15 minutes at a time. They’re also free, which means that KIXEYE makes its money by enticing players to purchase extra features which speed up gameplay (like reducing the time to build things) or customize their experience (like one-of-a-kind items).
Since smartphones are ubiquitous, it seemed like a good idea to jump on the bandwagon, career-wise. I’m also getting to learn some new technology, which is key to remaining relevant as a software developer.
As you might also know, web applications—from Amazon’s online store to Google Mail—exist both in your browser and on a server somewhere in a data center, talking back and forth over your Internet connection. In the old days, the server side of a web app was written in a traditional programming language like C, PHP, or Perl. That meant companies needed both JS programmers and non-JS programmers, which means hiring and supporting the needs of two different kinds of developers. Netscape realized this early on, and offered JS-based programming on their web servers. But the open-source web server Apache became the dominant web server, and writing Apache server programs meant using Perl or PHP.
JS and node.js are the environment I work in at KIXEYE, helping to build the server-side part of our games. While I’ve done some basic browser-side JS programming over the past two decades, I’m now fully immersed in the JS world. Fortunately, I have 40 years of programming experience, during which time I’ve worked extensively in C, Perl, Python, and C++ (along with that smidgen of JS), so learning another programming language isn’t bothersome. It’s mostly a matter of learning how to express familiar concepts with a new vocabulary.
One of the goals with any computer program, regardless of language, is reliability. When the server side of a web application doesn’t work right, lots of people are affected. Writing reliable code of any type is easier when you work in a language that helps you avoid mistakes. One of the ways a programming language does that is by making sure you have the right number of things to work with, and that each thing is of the expected type. This is called “strong typing.”
For example, if you write code to add two numbers and return the result, using a language, which makes sure that you have exactly two things to work with (not one, not three) and that they’re both numbers (not text or some other type of object) means it will catch errors. It also makes sure that, if you said you were going to return a result, that there is a result, and that it’s a number. In a large program with many various functions (like our hypothetical addition function), these cross-checks are a huge help to a fallible human programmer.
Cows grazing along hillsides and in seaside meadows are a picturesque and familiar sight in Marin and Sonoma counties. Dairy farms have been a local presence for more than 100 years, but thes...