Mobile Software Development, Then and Now
In life, love, and mobile software development, each generation’s coders might be doomed to repeat the mistakes of their predecessors. See what you can learn from those who have gone before.
A mobile system’s user interface and memory management, as compared to their desktop cousins, were always top-of-mind for the programmers of early portable microcomputers, just as they remain so today. Yet, while mobile development is getting easier in some ways, in others it’s becoming more tedious.
Those are the takeaways from my recent round of interviews with mobile developers old and young, whether they developed for the Osborne suitcase computer, circa 1981; the Apple Newton and Palm Pilot, from the mid-1990s; or modern Apple iOS and Google Android devices.
“The mobility aspect of the Osborne dictated two things that sometimes caused issues for people: the smaller display and the use of 5.25-inch disk drives,” said Thom Hogan, who served as Osborne Computer Corp.’s director of software and publisher of its Portable Companion magazine.
Hogan reminisced about writing software for the 23-pound computer. Display issues were handled by displaying 52 characters at a time on a virtual scrolling 80-character screen. Users could run standard desktop software on the Osborne’s CP/M 2.2 operating system, but they had to keep panning the view by using arrow keys; “zoom” didn’t exist.
Some developers used a loophole in that feature to make virtual screens up to 132 characters wide and also past the Osborne’s 24-character vertical image, Hogan added. But in general a CP/M program written for a desktop computer would run as-is on an Osborne – just as a modern Windows or Mac program runs the same on a large-screen desktop computer as on a small laptop.
Users of primitive laptops in the mid-1980s made similar compromises. Tandy’s Model 100 was a popular computer, giving you eight hours of battery life on four AA-size batteries, while weighing just a few pounds. Built-in programs included a BASIC interpreter, in an era where computer magazines typically included source code; and you could get others by purchasing connecting to another computer via serial cable or purchasing an optional external cassette or disk drive. Programmers could also use the internal file system and could map commands to function keys. They’d be in good company: “Part of my nostalgia about this machine is this was the last machine where I wrote a very high percentage of the code in the product,” Microsoft’s Bill Gates told a Smithsonian historian.
Community matters… and development communities change. A decade later, even though Apple offered a desktop IDE and various other professional tools, “Developing for the Newton seemed far more ‘Let’s do this and see what happens’ than appears to be so for iOS, which seems much more tightly controlled,” explained programmer Nicholas Summers. Contrasting that Newton programming experience with his current iOS projects, “The Newton development community was far more inclusive – an actual community, more like an extended, world-wide special-interest group [SIG] than seems to be the case with iOS,” he added. “When I looked into programming for the iPhone, I was completely turned off by its complexity and cost; at least the Newton was relatively approachable.”
Ben Combee’s perspective picks up with the Palm Pilot series. “Mobile development has always been hard. Not only do you have a platform that’s much less powerful than your desktop computer, you have the challenge of managing two different computer systems, since you very rarely develop just using the target device,” he noted. “The development environments have always been derivatives of the common desktop environments. Microsoft leveraged Visual Studio for Windows CE; Palm used the CodeWarrior environment they were used to on Mac OS; Apple reused Xcode for iOS; and Google used the Java tools they were already using for server work and targeted them for Android.”
One advantage modern mobile developers have is the foundational OS features. “It was a bit simpler to get basic PalmOS apps written than basic Android and iOS apps, but those programs also had much less functionality,” Combee continued. “It’s amazing to think of how much effort a couple of programmers took to get a basic word processor going on Palm OS, compared to the ease of making such a product now on iOS, where much of that functionality just comes with the OS.”
Young programmers may not have that context, said David Zafrani, a Rutgers University undergraduate who co-founded and serves as president of the school’s “RU MAD” mobile application development club. “In my computer science courses, prior devices weren't given much or any thought... The only consideration given toward the devices running these programs is efficiency and memory, which becomes better each year due to the advances in hardware,” he stated.
Zafrani acknowledged that the cyclical nature of innovation might force him and his peers in RU MAD to think more about mobile development strategies: Samsung’s flagship device, the Galaxy Note 3, is about the same size as a Palm Pilot and it even uses a stylus.
Today, the world knows swiping, icons, and browser-based cloud computing, just as it once knew arrow keys, function buttons, and so-called “luggable” computers that were little more than all-in-one desktops. So the next time your code has some obstacle inherent to device mobility, consider seeking an answer from the past instead of trying to engineer something new.