BBC News – Alfredo Moser: Bottle light inventor proud to be poor

Excellent article on a very simple but profound solution to a common problem.

Alfredo Moser combines water and chlorine in a soda bottle to create a “solar” lamp which is currently affecting lives around the world.

BBC News – Alfredo Moser: Bottle light inventor proud to be poor.

Triple Booting Mac with OSX, Win8, Linux

The rEFIt bootloader showing options for (the ...

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

  1. 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)
  2. 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
  3. 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

  1. BACKUP
    1. 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.
  2. SET UP rEFIt
    1. Run the rEFIt package and Install
  3. PARTITION and REINSTALL OSX
    1. Boot your Mac with the OSX Install DVD
    2. Once in OSX, select Utilities – > Drive Utility
    3. Select your internal harddrive
    4. Select Partition Tab
    5. Click the + sign on the screen to create a total of 4 partitions.  On my Mac, I did the following
      1. 150 GB for OSX
      2. 20 GB for Linux
      3. 4 GB for Swap
      4. 20 GB for Windows8
      5. Rest left as freespace
    6. Click Apply
    7. Quit Disk Utility
    8. Install OSX using the partition you created for OSX as the target.
    9. On restart, OSX should be operating.
  4. INSTALL UBUNTU
    1. Insert the Ubuntu LiveDVD and restart
    2. rEFIt will display on startup, select to run Linux from DVD
    3. Select to install Ubuntu and choose to custom partition your machine
    4. use the #2 partition as your “/” mount
    5. Install
    6. After install, on reboot, rEFIt should show both Mac and Linux bootable from the harddrive.
  5. INSTALL WINDOWS
    1. Restart the machine with the Windows 8 disc inserted
    2. Select the #4 drive for install.  If windows asks to create another partition allow it.
    3. Install
    4. On reboot, all three OSs should be selectable from the rEFIt menu.
TROUBLESHOOTING
  1. If, after installing rEFIt, the bootloader does not appear on reboot, try holding Alt/Option on Mac on restart, and select the various boot disks as you install.

Cross Platform Mobile Development : Titanium vs PhoneGap

Image representing Apple as depicted in CrunchBase   
The official online color is: #A4C639 . ???: ?...

 

 

 

 

 

 

 

 

 

 

 

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.

Strength.  Deployment Scale.

PhoneGap’s web-centric technology enables deployment across a plethora of hardware including iOS, Android, Blackberry, and Windows Mobile.

Weakness.  Lacking “native” hardware and API access.

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

Hope this was helpful.

 

Unity3D – Best Plugins on the Asset Store

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. #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.  #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:)
  3. Sprite Manager  2 – ROCKS!  Simplifies sprite (2D animation) creation.  Automatically creates texture atlases (this in itself is incredible).  Simple GUI and extensive script access.  Documentation/support for SM2 is excellent.
  4.  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.
  5. NativeToolkit – used this for a proof-of-concept I hacked together at work where I had to interact with a native Objective-C SDK and viewcontroller in my Unityproject.  If you try it, just be sure to set the file permissions properly before you build.  Does the trick.
  6. 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)

Joomla Become WordPress

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.

Reach out and make a friend