Another milestone has been reached in my quest to update my development skills and technical knowledge—I bought a MacBook Pro laptop! After giving it a lot of thought, a Mac proved to be the best choice based on my learning goals and potential ROI. I bought my first PC clone in mid-1980s and my first Mac, a Mac II, in 1988, so I have a history with both systems. Until 2000, when I began working on client/server development with SQL Server and Windows NT, I used Macs and PCs daily. After that transition, owning a Mac no longer made economic sense. LAN-based client/server was the way to go with software development in 2000, and Microsoft made it easy. Even so, I missed having a Mac.
Fast-forward eight years and things in the world of software development began to change rapidly. By 2008, everyone realized that the iPhone was not a fluke, and Amazon web services, which were barely two years old, had demonstrated the viability of cloud computing. LAN-based client/server finally had viable challengers.
Along with the arrival of mobile and cloud computing came NoSQL data stores, and together, these three developments ushered in the next generation of computing technology and made me want to see what all the fuss was about. This is where my new Mac comes in…
In 2000, Apple introduced the OS X operating system, which is UNIX-based. The significance of this– from a development standpoint — is that every Mac comes with a POSIX-compliant, UNIX-based operating system that can run thousands of programs that target UNIX systems. In one of my earliest blog posts, I mentioned wanting to set up a Linux workstation so that I could dabble in the UNIX world. The Mac solves this problem. I now have a fully-functional UNIX workstation that I can use from the command line when I am wearing my geek hat while gaining access to great Mac software for those times when I don’t want to know how anything works. But there is more…
Apple provides a utility called Boot Camp that supports installation of MS Windows on Macintosh computers. Having grown quite fond of Windows 7, I was loath to change to Windows 8 for all the reasons that others are rebelling against it. Using Boot Camp, I installed a copy of Windows 7 Professional and now I can boot my laptop as a Mac, a Win 7 machine, or while logged into the Mac partition, open up a terminal window and plug away at my UNIX workstation. Now, I have a dual-core i5 Mac/Win7/UNIX laptop with 4 GB of RAM and a 500 GB HD!
The really surprising thing is how well Windows 7 runs on this system. It boots directly into Windows 7 (controlled by a configuration setting), and runs everything I have thrown at it well. Oddly, this is the best Windows laptop I have ever owned, and I get to keep my beloved OneNote!
Being able to run Windows is great, but I am more interested in the UNIX-side of things for the near future. Even though there are Windows versions of many open source packages, the mother lode is UNIX-based. Often, installation on UNIX is easier than Windows and new things tend to appear first on the UNIX side. Already I have tried Neoj4—it was a snap to get going. MongoDB is a permanent resident, and I plan to test Cassandra and OrientDB in the coming weeks. In reading through the OS X Mountain Lion documentation, I found that many development tools are standard on the Mac. Curious, I opened up a terminal window and typed “Python,” which brought up the interpreter for Python version 2.7.2—nice!
The final development challenge, mobile apps, is still a ways off for me. However, when I am ready, all the tools for iOS development are readily available. Yes, Macs cost more than other laptops, but being able to kill three birds (four if you count iOS development) with one stone makes the price a non-issue.
When I started EHR Science, I set up a learning schedule that covered topics arranged in four groups. Most of the topics on that list have served as subjects for blog posts: discrete math/workflow/graphs; web development (HTML, CSS, MVC); software architecture/design; data stores—especially NoSQL; and programming languages (PHP, Python, Prolog refresher). Twenty months or so later, the final major item on the list, becoming comfortable with command-line UNIX, is about to be realized. The fact that I’ll do so on a Mac makes it that much sweeter.