Developing on an iPad using Azure

The IPad Air is an excellent sidekick development tool, with a fantastic screen, a smoking processor, great battery life and fast 3g/4g on tap without the dongles.

Until a Retina MacBook Air with with 4g comes along my Ipad will be my mobile dev machine of choice.

I use mine as a general development sidekick plus as a real dev machine when I can't be bothered to carry a laptop around. Development stacks I'm currently hacking on with my ipad include Meteor, Azure Mobile Services, .Net, Node Js, Ruby on Rails, Angular JS.

The secret to using an Ipad for proper development is to equip yourself with the following:

  • Bluetooth keyboard (I use the Logitech Ultrathin keyboard)
  • Approx 5gb/month data package (3mb/s and up works well)
  • ssh client on the ipad (Panic's Prompt is excellent)
  • Microsoft's free rdp client app
  • A remote machine or two to develop on via rdp/ssh
  • Somewhere to host dev, test and production applications

Setting up the first four should be straightforward, he last two will need some explanation below as there are a number of options to choose from.

Why Try Azure?

For the last few years I've been using a combination of Heroku and Digital Ocean for my rails and node needs. On the Microsoft front I used whatever my clients needed, including in-house IT departments and enterprise level external hosted vms.

Recently I've been investigating Microsoft Azure as a potential hosting option. I like the way I can host both Microsoft AND Linux apps on the same platform, plus you can't argue with the 3+ billion investment in datacentres that Microsoft have made. When I realised I had some Azure credits available via MSDN I decided to take the plunge and get going on my ipad.

After a few months of using Azure I've found it very capable, and a very good experience, even from the bus!

Getting Started

The Web Interface

To get a feel for the power of the Azure offering browse to the website to see what goodies you can spin up:

http://azure.microsoft.com

Once logged in and subscribed you should see the ability to add vms, websites, mobile services, databases, active directories.... the list is long and well featured.
Most impressively the vm section incorporates both Microsoft servers (e.g. Windows 2012) but also vanilla Linux boxes included Centos, Ubuntu etc.

Azure Dashboard on Ipad

One key feature is that machines are only charged for when they are switched on so this is perfect for development purposes where you turned them off when you aren't using them. (hint azure vm shutdown MyMachine)

To give you an example of the flexibility of Azure, recently I needed the following:

  • a Windows 2012 server with Visual Studio 2013 on for some c# coding
  • a 16 core beefy Sql Server box for load testing an 18 million row database
  • a suitable Windows machine with full desktop browser (Chrome) to enable coding some Node on Nitrous.io
  • a full version of Outlook 2013 to edit my incoming mail rules

I used my Azure subscription for all these tasks. The virtual machines were easy to setup, use, and dispose of when not needed anymore. The sql box was extra handy as I started with a 4 core and scaled it up to the 16 core offering to see how much speed improvement I could get by chucking more virtual hardware at the problem.

So down to getting started using Azure fully from the Ipad...

What's Possible from a Stock Ipad

Here's what we can do by default from the ipad using Safari (or Chrome):

  • Control Azure via the portal web interface at http://azure.microsoft.com
  • Test applications from the iPad Safari or Chrome
  • Edit code via an web based SSH client such as the one in Nitrous.io

What We Really Need

Here's what we really want to be able to achieve:

  • Command line tasks
    • Control Azure from the ipad command line
    • Edit code from the ipad command line
    • Deploy applications to Azure from the ipad command line
  • Full dev machine tasks
    • Edit code via a full IDE such as Visual Studio 2013
    • Edit code via a full web browser via the web IDE such as Nitrous.io or Cloud 9
    • Test applications from a full web browser such as Chrome, Safari, IE
    • Use full versions of business apps such as Outlook 2013

That's quite a lot, and happily all possible using a suitable combination of ipad and Azure.

Command Line Tasks

The Azure command line interface, also known as xplat, is an excellent way to undertake vm work from an ipad.

So the ipad won't be able to run the cli itself... but with a 3g/4g/wifi connection and a suitable remote dev machine you can merrily do everything the tool offers.

The steps are:

  • Install a ssh client on the ipad, prompt being my favourite
  • Setup linux and/or windows vms
  • Install node on the new vms
  • Using the node package manager npm install the cli

Setup a Linux and/or Windows VMs

For the initial vm setup I would recommend going with what you are comfortable with... a linux box for decent ssh if you fancy, and/or a windows development box if that is more to your liking.

Ubuntu Linux

I personally use a paid-for development Linux box from Nitrous.io as this is always on, and comes rigged up with all those annoying to install development tools such as github integration, mysql, node, ruby, rails etc.

If you want a Linux box but want to host it on Azure then here's a quick run through of creating an Ubuntu server:

  • Login to the Azure portal
  • Click on the Virtual Machine Tab on the left
  • Click on the + Add button, bottom left
  • Click on Compute, Virtual Machine, From Gallery
  • Select your Linux server of choice, I went for Ubuntu 12.04 LTS for this example
  • Enter the vm config, including your server name, username and strong password
    • For improved security go for the SSH key method, this is slightly complicated to setup so we'll go for pw only for brevity purposes in this article
  • Allocate the vm to the correct sub and choose where you'd like it deployed
  • Finally click on the check icon to build that new vm!

Windows

In addition to the Linux box I also have a 2012 Server hosted on Azure that I turn on and off when I need it. I use Microsoft RDP client to remote into the Windows VM, then fire up the command line prompt

Note: This vm will also do you well as the one you can use for Visual Studio or for a full web browser such as Chrome.. See further down for details on the full desktop installation steps.

Install Node

So now you have a command line to work with it's time to connect using SSH and install the Azure tools, which are dependent on NodeJS.

Ubuntu Linux

Fire up Prompt and enter the ssh destination, username and password and click connect!
With any luck you should be into your Linux server.

The Node install is remarkably straightforward:

sudo apt-get update  
sudo apt-get install nodejs  
sudo apt-get install npm  

Windows

For Windows, follow the instructions on the official node site for downloading and running the installer.

Install the Azure Cli

For complete installation instructions on the cli pop along to the project doc homepage.

Or dive straight in and install using NPM with...

npm install xplat-cli  

Next you need to download your azure credentials file from the Azure website.

  • Note: this is easiest on a windows or mac machine as you need to save the download and copy it across to the dev box.

On the remote vm you wish to use the cli from use the credentials file to setup authentication.

azure login [username] [password]  
azure account download  

Which should provide you your setting file to import and allow access to your azure account without repeated username and password authentication.
To import:

azure account import [path to .publishsettings file]  

Now you should be able to do such things as list your vms...

azure vm list  

Or fire one up

azure vm start YourVmName  

By this point we should have the ipad setup and connecting in to the remote vm via ssh or rdp.
The vm should have Node installed and the Azure cli tool installed and configured.

Now you can control your army of Azure vms and websites with the power of the command line.

Full Dev Machine Tasks

For full dev machine tasks (e.g. Visual Studio 2013 Development) I've been using the Windows Server 2012 R2 Datacenter vm.

Create this from the azure portal following the steps below:

  • Login to the azure portal
  • Select the Vitual Machines tab
  • Click on the Add button (bottom left)
  • Go for Compute - Virtual Machine - From Gallery
  • Choose the image you want, e.g. Windows Server 2012 R2 Datacenter
  • Enter the server name, vm size, username and password
  • Update any config items, e.g. url
  • Go!

Once azure has built your vm use the ipad rd client to login and you are now hooked up ready to install chrome, visual studio, webstorm etc... all your favourite dev tools.

Happy hacking!