The rEFIt bootloader showing options for (the large icons, from left to right) Mac OS X , Linux, and Windows. There are also other tools below the OS selection in smaller icons. (Photo credit: Wikipedia)

Recently, I set up a triple boot on my MacBook Air of OSX Snow Leopard, Windows 8 Preview, and Ubuntu Linux. This article will cover the basic steps.

Materials

rEFIt – This is the tool necessary to set up 3 or more boot disks on Mac. Download the Mac disk image here : http://refit.sourceforge.net/ and burn it to a disc (use disk utility on Mac or any number of options on Windows)

Ubuntu – This is my preferred desktop distro of Linux. Other distros can work. Grab the 64-bit or 32-bit ISO from here : http://www.ubuntu.com/download/desktop and burn to a disk

Windows 8 Preview – I wanted to give Microsoft’s latest a go. It’s going to be a good upgrade to Windows. Download the ISO here : http://windows.microsoft.com/en-US/windows-8/download burn to a disk and be sure to write the key on the disk

Procedure

BACKUP

If you care about the data on your Mac, back it up to another drive or a service. Simple solution on Mac is Time Machine.

SET UP rEFIt

Run the rEFIt package and Install

PARTITION and REINSTALL OSX

Boot your Mac with the OSX Install DVD

Once in OSX, select Utilities – > Drive Utility

Select your internal harddrive

Select Partition Tab

Click the + sign on the screen to create a total of 4 partitions. On my Mac, I did the following

At my company, a few months ago, we were in a situation to re-evaluate our cross-platform technologies. We had been using a commercial version of PhoneGap and through much soul-searching and research, decided to make the jump to Titanium. Thought I would take a few minutes and lay out my feelings on these two business app titans and what made us switch.

Strengths / Weaknesses.

PhoneGap

PhoneGap is HTML5 interpreted by the mobile device’s webkit. If you can write webpages, you can write apps in PhoneGap. If the target device can browse the web, it can probably run your PhoneGap app.

Because PhoneGap rides on top of webkit, it only has access to webkit’s capabilities. This has a few downsides. First, native APIs are largely inaccessible (and rightfully so! native access would break the deployment scale strength of PhoneGap!). Because of this lack of access, native controls are not available. For example, the “slot machine” spinner on iOS does not exist in PhoneGap. It can be roughly emulated in some HTML5 equivalent. Native eye-candy drawing effects are not available. These all have to be mocked-up in HTML5 (JQuery). The other downer, of course, to a lack of native access is performance. No matter how you cut it, webpages are slow compared to a native application. Doing a fade effect or a smooth swipe in on PhoneGap is painful. It just doesn’t feel right.

Titanium.

Titanium is a custom API layered on top of the native API of a discrete set of hardware. Currently, that hardware is limited to iOS, Android, and Blackberry (in beta). The Titanium API is accessed through Javascript that is interpretted at execution time. (No matter what you read elsewhere, Titanium DOES NOT create native code. Read up on Mono if you’re interested in that.)

Strength. Native Access!

Because the Titanium API is written on top of the native platform API, Javascript accessing Titanium is, in turn, accessing the native capabilities of the platform. This is a HUGE boon for performance and visualization. Titanium apps can look and feel native with the reaction time you desire. The controls, effects, and power your users expect is at your disposal. Obviously, performance takes a hit being run-time interpretted vs compiled, but the difference is slight in a practical sense for most business apps.

Weakness. Deployment Scale.

Because Titanium’s API is written on top of the native platform API, Titanium apps can only be built for platforms supported by the API. This is currently iOS, Android, and Blackberry.

Which is better?

Neither. What matters is : What do you want to do?

First off, cross platform development entails compromise. DO NOT go into any cross-platform development expecting to write once and magically build anywhere. You will be let down. Manage your expectations and find a path that works for your needs. In the end, you may discover native is really the choice for you.

If you are developing something that is really a webpage but in a mobile form-factor that you want to sell on the AppStore or Marketplace, or make available to the largest audience as possible with minimal customization, then PhoneGap is the choice. Building for multiple platforms is relatively simple. (check out PhoneGap’s site for demos). Whereas, Titanium requires work to move from platform to platform: business logic can remain the same (a significant savings) but display work has to be tweaked per each platform. That is simply the tradeoff for a native look-n-feel.

If you are developing something that is intended for a finite set of hardware (Droid and iOS) AND you require a user experience (UX) that feels native, then forget PhoneGap and start researching Titanium. Titanium development is not as cross-platform as PhoneGap. Any use of the word “native” implies customization for a platform, but the end result is something much truer to a native look-n-feel while minimizing rework between platforms.

If you are developing a game, DO NOT CONSIDER EITHER ROUTE! There are development frameworks specifically for games. Unity is my favorite. It leverages several programming languages and builds NATIVE apps. If this is your interest, check out http://www.unity.com

A few weeks ago at the Philly Unity User Group, we were talking about our favorite Asset Store Plugins. I’ll put together my list here:

#1 for me is PlayMaker – I really dig it for organizing my AI (Finite State Machines cover what I need). I’ve used Angry Ant’s stuff and it just doesn’t seem to have the intuitive feel of Playmaker. PlayMaker has a LOT of actions (scripts) for hooking to your states. Makes programming logic quick, easy to visually debug. Playmaker has some UI components, but they’re weak. Get it for structuring your logic.

#2 is PoolManager – instead of taking the performance hit destroying/instantiating objects over and over, just recycle them. PoolManager is well documented. Great support. Does the trick. Only issue I’ve had is how to properly reset physics when recycling ragdolls. If you have an idea, please let me know:)

EZGUI – It’s a bit hard to get into, but it’s powerful. Same author as SpriteManager 2. If you want to see what EZGUI does, see demo vids here: http://www.anbsoft.com/middleware/ezgui/ Author is one of the driest presenters I’ve heard, but he does give you the detail you need.

NativeToolkit – used this for a proof-of-concept I hacked together at work where I had to interact with a native Objective-CSDK and viewcontroller in my Unityproject. If you try it, just be sure to set the file permissions properly before you build. Does the trick.

JSON Object – extremely simple, but sweet. Used this for the same proof-of-concept where I was calling a restful API and parsing JSON. Hand it a string from your WWW object, it gives you an JSONObject with field, key, and random access. Easy. (free)

So… Back in August, my Joomla site was taken down by someone with little better to do than poke around for vulnerabilities and poison my database. After a few attempts at restoral, I decided to take the thing down. Now, a few months later, I’m firing up again, this time with WordPress underneath. Actually found a plugin to import my joomla DB. Nice. I’ve been hacking out a design in Illustrator, but for now, I’ll stick with something stock.