Mobile Apps and Web Solutions

Total Remote Working

I’m now doing almost all of my computing remotely (and “device independently”), so I thought I’d share what I’ve done and a few roadblocks I had to avoid along the way.

Accessing my Mac remotely

My first attempt to access my Mac Mini from outside my home was via VNC and the built-in screen sharing (plus No-IP and opening up a few ports on my router). This worked just about OK, but all of the VNC clients I found were all a bit useless.

Now I’ve switched to using LogMeIn, which has proved pretty good so far. There is a nice native client on my iPad, plus a Chrome extension for access on any PC.

Windows VM on Azure

One of the excuses I used to buy my new iPad Mini was to save me taking both a Kindle and my personal PC laptop on the road.

However I still need PC access for a few ASP.Net sites I do the odd bit of work on now and again, so I’ve setup a Windows VM on Azure using the credits I get from my MSDN subscription.

It’s running Windows Server 2008 so setting it up with everything I needed was a little fiddly …

Setting up Google Drive on an Azure VM

I keep a backup of my business documents and a few Excel spreadsheets on Google Drive, so need access to them via a PC. However I just couldn’t get the Google Drive Windows client working on the Win2K8 VM.

The solution was found in this discussion group, where it turns out you need to install the x86 Microsoft Visual C++ 2008 SP1 Redistributable Package - even though the servers are amd64 machines for the Google Drive client to work

Access on 64 bit machine via IIS

One of my really old sites still uses an Access database to hold the data (yes I know!), but it turns out there are no native 64 bit drivers for Access.

As explained on this page, the solution is to set the Application Pool to enable 32-bit applications, and all is right in this old fashioned world!

Doing everything in the cloud?

I’m pretty happy with almost always using my small but high-resolution iPad Mini to do the odd bit of development when away from home. The iOS Remote Desktop client is truly excellent (as is the MacOS one), and the times when I’m opening up my Windows laptop are less and less.

I’m thinking off possibly getting a small bluetooth keyboard - as extended typing on the the screen is pretty painful - but other than that it’s working surprisingly well.

Storing most of my data across a combination of DropBox, Google Drive and SkyDrive, code in Git at BitBucket and Github, and any odd notes in Evernote, really means I can now be pretty platform agnostic for most tasks, both on where the work is being done and the screen I’m viewing it on.

N.B. This blog post has now moved to https://writingontablets.com

Starting with XCode

I’ve been trying to spend an hour every day getting up to speed on iOS development, which has meant exploring XCode.

I’ve done some Windows Phone development before and spend a good deal of my life in Visual Studio, so it’s really interesting to compare the different tools.

Working through the Getting Started guide on the Apple development site, it been fascinating how easy it is to develop nice looking UIs almost out of the box.

Compared to WP8 development (and the disappointment of Eclipse for Android coding) it seems really powerful, and other than getting used to the still slightly bizarre Objective-C syntax, I’m looking forward to developing some magically beautiful apps :-)

N.B. This blog post has now moved to https://writingontablets.com

Day One with my Mac

So I finally gave in and decided to buy a Mac Mini - to start doing some iOS development.

It’s been a long time since I did much on a Mac - probably 1991(!) on a Mac Classic with a tiny screen - but I have used them a bit in various jobs since.

Other than the initial strangeness of finding my way around, it’s been quite fun so far. Using a Windows keyboard probably isn’t ideal, and I’m still trying to decipher some of the control key combinations. Also the scroll wheel on my mouse works in the opposite way than in Windows, which is also taking a bit of getting used to.

Setting up my various dev projects has been fine so far. Having Ruby already installed helped me with my Jekyll-run blog, and installing node.js was trivially easy too. Heroku toolbelt gave me Git along the way, and the Azure CLI tools work via node so they work nicely too.

One slightly tricky thing was getting a local copy of MongoDB running. This mainly meant going into UNIX mode and hacking a couple of config files post un-TARing the downloaded files, but there was enough support on the web to make that reasonably understandable.

I’ve also setup VNC so I can remote in via my Windows laptop if necessary, so I think I’m good to go with starting with XCode and the horrible syntax of Objective-C!

N.B. This blog post has now moved to https://writingontablets.com

Daily Optimiser Alpha Release

So the side project I’ve been working on is finally just about ready for public viewing.

It’s called Daily Optimiser - “a light-weight, daily schedule app that steers you away from some of the typical pitfalls of daily to do lists, and helps you create and maintain a realistic plan for the day”

It’s been fun learning new skills whilst building out the app. As I wrote in a previous post, the initial version is a web app written mostly using AngularJS, although I’ve replaced Firebase with a custom backend that stores the data in MongoDB at MongoLab

I’ll probably write more shortly about some of the things I learnt now that the app is public, but for now it would be great if you gave it a go and let us know what you think.

N.B. This blog post has now moved to https://writingontablets.com

Client-side development with AngularJS and Firebase

I’ve been busy over the last couple of months building out a prototype of a web app/business idea - unfortunately it’s not quite ready for public viewing just yet, but hopefully not too long now.

What I did want to write briefly about was how much fun it was to write a single page app using AngularJS. I’ve been meaning to try Angular out for a while, and I’ve been really impressed on how easy it is to get up and running, as well as how well its functionality maps to real world applications.

The documentation is a little ropey at times, and the code examples aren’t great - although as ever Stack Overflow is your friend. Once I grasped the overall concept of how to structure your code, I’ve been really productive and very happy with how quickly I’ve been able to iterate in the prototype.

My app also needed a datastore to hold information, and I’ve been trying out Firebase. It’s a realtime backend that natively stores JSON, and has client libraries for many platforms including Angular, which made it very simple to get up and running.

The realtime synching between multiple browsed logged into the same account is truly impressive, and I’d definitely recommend taking at look to see if it matches what you need.

For me, it was great to be able to have a datastore I could access form client-side code without having to write my own intermediate API data layer. However, once the app moves into production the true realtime synching may be overkill for my particular needs - especially if the app gets any traction - so I may end up rolling my own solution for cost benefits more than anything else.

N.B. This blog post has now moved to https://writingontablets.com