Hi, I'm Karl.

And this is Jambr...

... my attempt at documenting my adventures as a developer.

I regularly come across, or generally do quite interesting things in my day job, so when I have some time I try and write about them. Hopefully you'll find some of the Articles handy.

Karl Stoney


Migsql sql migration tool

A simple light weight mssql up/down migration tool

What's This?

A lightweight ruby bin executable to handle MS SQL migration (up/down/targetted version) within a CI environment.


I needed a simple way to manage up/down sql scripts within our CI environment for a bunch of existing, very old MS SQL servers.

If you read my blog enough you'll know that we use a set of ruby scripts in order to facilitate a lot of our build processes, so it made sense to incorporate it into there.

Once you've installed it with 'gem install migsql', you can create up/down migration scripts with the following simple commands:

  • migsql init
  • migsql create-migration some-name
  • migsql migrate
  • migsql migrate to <some-name>

migsql will handle the up/down scripts required to take your database to the desired version.


As usual, on my github https://github.com/Stono/migsql

Ruby, CI, SQL

Npmzor NPM Registry

An aggregating and caching NPM Registry

What's this?

A little NPM server that I made which does the following:

  • Allows your CI environment to host internal node.js npm modules.
  • Allows for multiple external node.js npm repositories.
  • Allows your CI environment and Development team to only have to point to a single registry.
  • Caches external modules on your internal network.


This project came about as the company I work for have a rather complicated proxy setup which makes development and CI environments a bit of a nightmare to manage. We also had the requirement to host modules which have been built internally on our CI environment available to the developers and builds of other modules.

I wanted the development team, and CI environment to be able to point to a single point, and that single point would serve up internal modules, as well as traversing external registries if required via the relevant proxy and returning the result, and caching those results where possible.


On my github, naturally https://github.com/Stono/Npmzor

Enjoy :)

Node.JS, Node, NPM

Mewzik, Mongo and Elastic Search

A new site to play with new things


I've recently been playing with some new technologies, primarily MongoDB and ElasticSearch.

Now the way I learn a new technology is to give myself a project to do, and make it, in this case I've made a lyrics/tab/music video site called Mewzik.  I'm actually pretty happy with it, especially it's performance, there is no caching used at all because quite simply, it doesn't need it!

MongoDb, ElasticSearch

Clockwork Mod Recovery - Odin Flashable

For those of you who don't have linux or Cygwin

What this is

This is the latest ( touch recovery for the Samsung Galaxy S3 (I9000) in an Odin flashable tar file.
​You can download it from Here.

How to flash

  1. Open Odin (I've tried 1.85 and 3.04).
  2. Click the PDA button and select the tar file from the link above.
  3. Leave everything else as it is when you open odin, then click flash.
  4. It should take about 5 seconds, and then your device will reboot.

Creating the Tar File

These are the steps I took using Cygwin to create the tar file, should you wish to create your own Odin flashable tar file for a different device:

  1. Download the relevant image from the ClockworkMod Recovery site.
  2. Rename the file to recovery.img
  3. Open up Cygwin and navigate to the folder the image file is in and type:
    tar -H ustar -c recovery.img > recovery.tar
  4. And that is it, you can flash the recovery.tar image using Odin as described above

Barclays mobile banking on rooted android

How to get it working!

The problem

Barclays mobile banking does a whole host of checks to ensure that you're not running the app on a rooted android device.  This is very annoying for the vast majority of android power users!

I've been messing around for ages, trawling forums, trying to get it working and finally I have, and wanted to share how it is done.  

This is tested on my phone which is CM10.1 Android 4.2.2 on Samsung Galaxy S3 (I9300).  

The solution

Follow these steps

  1. Download a root file explorer and editor from the market.  Something like ES File Explorer or Root Explorer is fine.
  2. Navigate to /system and mount it as R/W
  3. Open build.prop for editing
  4. Remove the two lines:
  5. Change the following line:
  6. Download SuperSU from the Play Store, run it and accept the binary update if you need one
  7. Go to the setting tab and do "Full unroot", and then reboot your device
  8. When your device comes back to life you're completely un-rooted, download and install Barclays mobile banking app, register as normal :-)
  9. Now to get your SU back, download this file and flash it in ClockWorkMod Recovery http://puu.sh/372bd.zip
  10. Re-download SuperSU and do the binary update but do not do anything else (ie move to the system directory)
  11. You should still be able to load Barclays banking, and have a rooted phone!

I understand why Barclays want to protect their customers, but they're alienating a large number of Android power users.


Jambr redesigned

A new cleaner look and feel, faster too!

So I decided to completely redesign Jambr.  

The old version felt far too templated, and also a bit "old", I decided to strip it down to the rather basic, but very clean and fast loading layout you see in front of you now.

It isn't just a visual redesign either, I've started a new project at work which is primarily C#, as you can tell from my other posts I generally use VB, therefore I decided what better way to get back into the C# syntax mentality than to recode this entire site from top to bottom in C# 4.5.

Naturally i've made some improvements along the way.  The site loads extremely fast (sub 100ms with caching disabled) and scores an attractive 95/100 on the PageSpeed Insights (the other 5 points are Googles fault!).

I also took the opportunity to try out some of the new lightweight ORM's that are knocking about since .NET 4.0, I've ended up adopting Dapper.NET, I'll probably do a quick article it when I get a minute as it is excellent.

Any bugs, please leave me a comment.

Site, Jambr

Fixed Login with External Login Providers in Firefox

You can now login with Firefox, sorry!

Well it turns out that you have been unable to login using External Login Providers (such as google, facebook, twitter and so on) if you were using Firefox.

Basically, when you have an image input button in your form, like this:

<input type="image" src="/path/to/your/image.png" name="postname" value="postvalue" />

In firefox (and possibly some other browsers), the value isn't posted back.

I had to switch it out to a standard image, which relies on javascript to submit the form, like this:

function submitimg(myvalue)
<input type="hidden" name="postname" id="postname" />
<img src="/path/to/your/image.png" onclick="submitimg('postvalue');" />

Whats happening here is when you click the image, javascript sets the hidden form field to the value for the button, which is the definitely posted back!

So to summarise - sorry if you have been unable to Login!

Site, Jambr

IE7 and IE8 fixes

The bane of any my life (IE) strikes again

As the tag line says, the bane of my life strikes again!

It was brought to my attention that the site wasn't rendering correctly in IE7 or IE8 any more, I found the cause of the problem and fixed it so all should be working again.

I do however strongly recommend that you Upgrade your Browser to something else if you're on either of these version of Internet Explorer!

Site, Jambr

News Section has been brought up to speed

Added comments and RSS

The news section of Jambr has been updated, it was lagging behind the Articles slightly.

You can now subscribe to the news RSS feed and post comments on posts.

I've also fixed a few bugs in the Facebook login process which meant users were unable to register.  Please let me know if you experience any more issues.

Site, Jambr

More Login Methods Added

More ways to log in and start commenting!

Well as promised, I have added more login methods to Jambr to save you from creating an account directly.

You can now log in using any of the following:

  1. Facebook
  2. Twitter
  3. Windows Live
  4. Google

Please let me know if there are any others you would like me to add that implement OAuth or OpenID and i'll get them added!

Why not log in now and start posting some comments on our Articles!

Site, Jambr

Comments on Articles

You can now add comments to Articles

I have just added the ability for you to add comments to Articles posted on Jambr.

As mentioned in my previous post, you do need to Log In to do this.  You can either create a Jambr account, or you can log in with another service provider (currently I have enabled Google and Twitter, Facebook login will be coming very soon).

I look forward to hearing your thoughts on the Articles that I post!

Site, Jambr

Create an Account

You can now register at Jambr

Well development is in full flow here, you'll notice Articles are now SEO friendly URLs and "Blog" has been changed to "News" as it is more suited to the task.

Within the next week you'll be able to comment and discuss on articles that have been posted, but in order to do this you'll need a Jambr account.

Naturally this can be done by Registering, but I will also be adding the ability to login via Facebook, Twitter or Google.

I've just finished the Google implementation today so head over to the Login page to create your Jambr account by linking to Google.

Site, Jambr


Finally, some content!

I finished the Articles section of Jambr today.

You can't add comments yet! But I can start posting articles you may find interesting.  

I've started with a quick post on Setting up and Installing MiniProfiler, so why not have a read.

Site, Jambr

Jambr is Live!

As of 17:00 today, Jambr is Live

As of 16:06 on 18/12/2012, Jambr is officially live!

Those of you who know me, know that I have been developing for almost 10 years, but due to the nature of my work I haven't been publically able to show what I do.

I decided that needed to change, that I needed to give myself an online presence, and in doing so Jambr was born.

Site, Jambr


Recent Articles

Recent Blog Items