iPad

Assembling an iOS development environment

Justin James shares details about the first step in his process to learn iOS development: what he purchased to set up his environment.

Welcome to my inaugural post about iOS development. The topic may seem like a bit of a shock to readers, considering my focus on WP7 in TechRepublic's App Builder blog and .NET-related technologies in the Software Engineer blog. The truth of the matter is iOS development in the last couple of years has shifted from a niche skill to a "must know" for a lot of people. I have left a lot of work on the table because I lacked iOS experience. Here is what I am doing to start my path on iOS development.

The first thing you need is a Mac. I am funding this endeavor 100% out of my own pocket, which means that saving money is important. While Mac's are more expensive than PCs, there are still a number of good, inexpensive choices. I put my attention on the Mac mini series, which start at a very low price ($599). It was a tough choice. All of them can be upgraded in RAM (do it yourself to a save a fortune). There are two desktop models and a server model. I was stuck choosing between the higher-end desktop model (discrete graphics card) and the server model (quad core CPU and faster hard drives) and opted for the server. Between the iPhone/iPad emulator, compilers, and possibly running VMs down the road, a quad core made the most sense. It comes with 4 GB of RAM and two 500 GB drives; I will likely be upgrading to 8 GB or even 16 GB of RAM in the near future.

Credit: Amazon.com

I also ordered a Magic Trackpad to help use the iOS emulator as closely as possible to an actual iPad or iPhone. To start, I will be using an iPad to verify application operation, so I ordered a basic, 16 GB WiFi-only new iPad (aka iPad 3). Down the road I will also get an iPhone for testing. Finally, I ordered a copy of Learning iPad Programming: A Hands-on Guide to Building iPad Apps with iOS 5 by Kirby Turner and Tom Harrington.

Of note, I ordered everything through Amazon. Amazon gets it out the door a bit quicker than Apple with two-day shipping via Prime. In addition, Amazon is able to not charge sales tax while Apple will, which saved significant amounts of money. The tradeoffs are that Amazon has a 15% restocking fee on returns of the Mac if it is not liked/needed/etc. (Apple has a 14 day, 100% money back return policy, regardless of the reason), and that Amazon cannot customize the package like Apple can. If this were not my money, I'd order from Apple instead.

Once I got everything in, I hooked it right up to my DVI KVM. No need for any special adapters, an HDMI-to-DVI adapter comes out of the box. If I want to connect a second screen (which I will, if I decide the Mac replaces my Windows machine for primary use), then I will need a Mini DisplayPort-to-DVI adapter as well (you might not need to, depending on your monitors). The Mac works fine with a standard Windows keyboard layout and mouse. You will want to print out the Mac keyboard shortcut list.

Initial configuration was simple, even considering that it was establishing server settings that a desktop would not need. I added Xcode (the free IDE for Apple development, available in the App Store), Chrome and Firefox (with Chrome as the default browser), Microsoft Office, the Twitter client, Sky Drive (to sync stuff with my Windows PC), Vienna (RSS reader), and MenuTab (Facebook client). The App Store is a great place to find things, but most of the interesting apps cost money, and some cost a lot of money. I was happy that Office was bundled in a Remote Desktop application, which was critical. Getting my printer hooked up was a snap (it even detected it before I looked for it).

Something that needs to be made very clear here: I have used Mac OS in the past (well over 10 years ago), but not OS X. I have been a Windows-only person, other than some command line *Nix work. I am not an "Apple fanboy" and other than buying gifts for my wife, this is the first time I've ever given Apple money for anything (I don't even use iTunes). I have taken issue with many of Apple's policies in the past, but at the same time, I don't "hate" Apple or anything like that. All of this being said... other than readjusting to the new keyboard shortcuts, the Mac is very usable. It is fast (of course, my Windows PC is loaded down with a million tons of databases, Web servers, and other development tools). While I intended to use the Mac for development only, there is a very real chance that the Windows PC will be relegated to "development only" instead. The Mac will get a fair evaluation, but that is a topic for another time and another day.

The total cost to get started (including the book) was $1,628.72, not including a few extra bucks I spent on one-day shipping from Amazon or the $99 iOS developer membership (on par with an App Hub membership for WP7 and probably Windows 8 development - not needed until you are ready to deploy to a device or put an app in the App Store). Is that expensive? Compared to a Windows box with equal hardware specs, definitely. But compared to a Windows box plus Visual Studio ($499 for Professional Edition with "MSDN Essentials" or $1,199 for Professional Edition with a true MSDN subscription) it is a pretty even comparison unless you can make do with the Express editions of Visual Studio (any decent developer machine will run roughly $1,000 for a desktop in my experience). And don't forget, that price includes the iPad!

If you are a Windows developer looking to get your toes wet with iOS development, putting together a development package is not as expensive as you might think. You can save a bundle of money by getting an iPad 2, opting for the slower desktop model, etc. In fact, a base desktop model ($599) and an iPad 2 ($499) is a very acceptable combination, and comes in at the cost of a good Windows PC.

Stay tuned next month as I show you how to get started with your first iOS project!

J.Ja

About

Justin James is the Lead Architect for Conigent.

14 comments
chris.smith
chris.smith

Justin, this is a good read. I did a similar thing a few years ago but decided to go all in on my iMac and the original iPad. Question though, what do you think about objective c and its funky syntax? I've been developing mobile apps and I've found it really hard to justify learning objective C when I can do 70% of the same thing in HTML5. The other 30% that HTML5 can't do seem more like bells and whistles that objective C can give you - a bit more responsive UI and special things like working with the graphics libraries, game development, specific things to the hardware etc. Just curious your thoughts since your getting into the thick of things.

entnow
entnow

Hi I recently upgraded my late 2009 mac mini with a 120gb ssd and 8gb bets thing I did very fast now and much more usable than with a 320gb 5400rpm drive boost in 2 second and launches apps in like 5 seconds no lag in development either

mbaumli
mbaumli

1. Check out the Apple refurbs, occasionally get can get a good deal on a Mac Mini which will put you in at a few dollars less than before. Keep in mind the inventory is always shifting on their site so just because you don't see what you want, check back a few hours later. They will generally knock off about $100 off of a refurbished Mac Mini. 2. An iPad 2 runs $399 new or $349 on the refurb market. Some places such as MicroCenter or Walmart even have been running new models at $359. For development purposes though one should probably choose to save on the Mini and splurge getting an iPad 3 to get the IPS resolution.

kevpartner
kevpartner

I went through a similar process last year but my focus was even more on saving money. I bought the base Mac Mini (the 2.3Ghz model) along with a 3rd party 8GB upgrade. The original came with 2GB and the difference once I'd added the extra RAM was breathtaking - so much so that I'd say the Mac Mini as shipped is unusable. I've found it more than adequate for my purposes developing and compiling iOS apps. It is underpowered compared with a PC of the same price but my existing PC was getting a bit long in the tooth and the Mac Mini is so quiet I now tend to use it more or less exclusively. I got a mini DisplayPort adaptor to power a second monitor and it's a nice environment. I'm not especially fond of the (in my view) childish design of the UI but otherwise it's been fine. I also purchased a refurbished iPad rather than a brand new one (it has no moving parts, after all) and an iPod Touch for iPhone development. These choices saved hundreds. One piece of advice - don't wait until you're ready to deploy your app to register as an Apple developer and pay your $99. If you're registering as a company, this can take up to two weeks to get sorted as you find yourself having to fax (yes FAX!) documents to them - this can be extremely frustrating!

BradutDima
BradutDima

I believe that spending over 1000$ on hardware may be intimidating for someone who only needs to give iOS development a try??? Fortunately, Virtual Box can run Mac OS X well enough to allow iPhone development to the point someone can decide whether is worth or not to continue that way and purchase a true Mac environment. Just my 2cts

rgreenlaw
rgreenlaw

Since you bought the server version of the Mac Mini, apparently to get the 4 core cpu and second hard drive instead of the discrete graphics, I wonder if having the additional server parts of OS X complicates life? Basically, does it stay out of they way if you aren't using it?

Justin James
Justin James

O-C doesn't make any sense until you read the history of it and get a handle on the technical underpinnings... the idea that OOP was bolted on via pre-compilation processing and it is just standard C under the hood drives most of the strangeness of it. *For me* it is not bad, but in large part that's because 1) I'm starting now as opposed to a few years ago, so I get ARC and don't need to worry as much about pointers and such and 2) my early programming experiences were with systems like COBOL, Pascal, and a touch of C, so much of this is a "fond memory" for me, not, "I miss C# or Java!" If I had been taught programming in the last 10 - 15 years, I'd be complaining that this feels primitive, but I think that they managed in many ways to retain the comfort of old school imperative programming, while dragging much of it (albeit kicking and screaming) into the modern world. Interface Builder is a good example of that... J.Ja

Justin James
Justin James

... isn't great. I looked at that route, I'd be saving minimal money compared to a new model, in exchange for the potential issues with refurbs (many refurbs have undetected hardware issues which is why they were returned for being "flaky" but just got an OS wipe and new box), and the refurb market on Macs is crazy. A lot of times I looked, I'd see a model 2 years old selling for almost as much as the new stuff! Same for the iPad, saving $50 isn't worth the headaches of refurbs, IMHO. My angst with refurbs is driven from working on a hardware help desk, I saw first hand how the refurb process worked. And from owning cell phones... once you end up with a refurb phone, you will not have a working phone again... J.Ja

Justin James
Justin James

Out of the box, it is all turned off, and it's pretty minimal stuff (a lightweight, not-so-capable Web server, a basic, limited capability mail server, and a few other components). So now, it's not interfering! Down the road, I will also be using this box for Ruby and Ruby on Rails development, the *Nix underpinnings of OS X mean that things will work more like the tutorials and such than they will on Windows, and a lot of Ruby folks gravitate to Mac so there seems to be more support for it than on Windows! J.Ja

chris.smith
chris.smith

I actually started out with C years ago as a teenager but ofcourse I've been in the C# world for the last 10 years. Going back to C isn't too scary of a concept and I'd actually welcome the ability to malloc() my memory and not depend on garbage collection collecting my memory whenever it feels like (i.e. large DataSets). I'm more curious though on WHY you would learn OC and not use html5 instead for your iPhone projects? This is something I've wrestled with and I always end up going html5+jQuery, not because I'm more comfortable with it (I'm a total hack at jQuery for sure) but because it seems like html5 (especially used in conjunction with Phonegap) does so much, why learn this whole new (hacked) language? I would think you've wrestled with the same idea?

Justin James
Justin James

Good question. For four reasons, really: 1. To get a full feeling for the developer experience that Apple advocates, including getting a handle on XCode. Who knows, maybe I'll fall in love and start writing OS X apps too? 2. I don't enjoy HTML + JavaScript too much. 3. I have been jonesing to go to something more... old school... lately. Ruby + Rails has been attractive to me too (and it's something I'm trying to find the time to squeeze in) for the same reason, all those command line tools! 4. For the purpose of writing articles, people will likely be more interested in an experience that isn't something they already have familiarity with, or isn't iOS specific. I know, none of these are reasons that I would bring to a manager and say, "look, I gotta do it this way because..." But as my own manager on this particular project, my logically weak arguments work just fine. :D J.Ja

Editor's Picks