The online home of John Pollard

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.

Bedside Clock removed from App Store

As I mentioned a while back, I’ve stopped developing my Bedside Clock Windows Phone app a while back after I got rid of my Windows Phone.

However, I just realised from a couple of reviews that the Yahoo! location services I was using to power the app are now no longer available :-(

This is a real shame, but as there are no obvious free alternatives - and I don’t want to go through the pain of reconfiguring the stupidly complicated Hyper-V setup used for the Windows Phone emulator without being able to test the fixes on a real phone - that I’ve decided the best thing to do is to pull the app from the store.

I don’t think that will affect any existing users, but apologies if it does.

If any developers are interested in fixing the issues, feel free to get the code from Github and do what you want with it!

Sky Anytime, Routers and 3 Home Signal

Still been busy prototyping with NodeJS and MongoDB (nothing too interesting to show yet), but had a couple of things happen in my home network that I’d thought I’d share in case they help anyone suffering with the same issues.

Problems with Sky Anytime and my Netgear Router

I’d bought a wireless connector for my Sky box so I could use the on-demand services of Sky Anytime, but whatever I tried it wouldn’t connect to my home network - which made it worse than useless.

I’ve got a fairly old Netgear DG834GT router that has always worked fine for me with my BT Broadband connection without any issues, so thought it was unlikely there was a problem there.

I spoke with the usually very helpful and knowledgeable Sky support, but other than saying a few people had also reported similar issues, they had no idea what to do.

I’d almost given up on finding a solution, but then I happened upon a support forum where someone mentioned they’d changed their ADSL multiplexing method to “LLC-based” rather than “VC-based” and that had managed to fix the connection issue.

I was very doubtful that could be the problem, but after I switched I immediately made a connection, and can now use BBC iPlayer, 4OD and other services direct from my Sky box.

To be honest it still doesn’t make sense how the ADSL connection type can affect how the wireless network connects to the box, but hey, it worked for me!

3 Home Signal

I’ve been very happy with my iPhone since I got it a few months ago, and reasonably happy being on the 3 network except for one thing - the phone signal in our house was very patchy and much worse than I used to get on Orange.

Now living in a small town (Hexham) in a valley in the country means it’s not totally unexpected we get a weak signal - we only just about get free-to-air digital TV - and our house has pretty thick stone walls. However it’s still not exactly the middle of nowhere, so pretty disappointing to only get a connection in the house about 50% of the time.

However, I’d read that 3 have a solution called Home Signal that they will ship for free if you qualify. It’s basically a Femtocell connector that gives you a private phone network to connect your calls via your broadband router.

The tip I found online - which I will share here - is not to ask 3 directly for a Home Signal box, but simply tell technical support you are having problems, let them test the signal and then they will suggest Home Signal if you qualify for one.

It has definitely worked for me, and now I get at least 3 bars everywhere in the house and don’t miss any calls any more.

Developing for Heroku and Node.js on Windows

So I’ve been playing about with some hopefully interesting ideas I’ve been having for a new app - more soon when we have a bit more traction - and have been hacking about using Node.js and MongoDB on Heroku.

It’s been great fun learning some new things, but as ever things have been slightly harder because I’m developing on Windows rather than on a Mac or Linux laptop. Anyway, I thought I’d capture a few things I had to figure out along the way (mainly via Stack Overflow) here, both so I don’t forget them and in case they come in useful to someone else.

Installing MongoDB drivers for node.js

This stumped me for a while. In theory, it should be as simple as running:

npm install mongodb

However, the module has a dependency on the bson module, which will compile itself on install. In theory this shouldn’t be a problem, but out of the box npm is looking for the Visual Studio 2010 C++ compiler, and I only have Visual Studio 2012 installed - and definitely don’t want to install an earlier version as well.

After much searching, I found that there is an option to use VS2012 by using the command:

npm install mongodb --msvs_version=2012

… and everything installed and worked like a dream.

Running Heroku’s Foreman on Windows

I’ve been pretty impressed with the Heroku stack so far. It’s really easy both to deploy your changes by a Git push, and the command-line tools you get make it easy both to configure and monitor what’s going on.

One of the tools was slightly problematic, as Foreman - basically an easy way of running your apps locally - didn’t actually work properly.

Thankfully this was a known issue in version 0.62.0, and the solution was to use 0.61.0 instead which can be installed using:

gem install foreman -v 0.61

… making sure you’ve uninstalled it fully first (using the uninstall command)

Bedside Clock code now on Github

A few weeks in with my iPhone and I’m very happy with my choice.

The iOS interface is fine, and although I do miss the “Metro” interface of my Windows Phone, having a massive choice of good and interesting apps makes up for that by far.

A perfect example is being able to use Instagram. I’ve really enjoyed taking some gratuitous photos and sharing them with the community there. Nothing unusual there for most people, it’s just it’s still not available as an app for Windows Phone.

Anyway, that means I’m definitely not going to be developing my Bedside Clock any more, so I thought I’d share the code on Github so if anyone does want to extend the app they can do.

This was originally a project just for me to learn about developing for Windows Phone, and to replace the better built-in clock I was missing from my Android phone. You can probably tell this with some of the slightly gratuitous features I added (phase of the moon calculations anyone?)

It’s done reasonably well at the App Store with around 14,000 downloads as of April 2013 - which is far more than I ever dreamed of! I learnt a lot building it, and I used it every night when working away in London, so it definitely had at least one satisfied user.

If any of you are interested in forking the code, extending the app or fixing any bugs you spot, I’d be very happy to help get them merged into the code base and releasing the out into the wild.