A passion for the web and clean code.

A profile picture of author Paul Heasley

about the author Paul Heasley

I’m a .NET Technical Lead with a interest in UX / interface design. I have excellent communication skills, proven leadership ability and I’m passionate about producing products that are a joy to use.

I’m also a Microsoft Certified Professional Developer and Certified ScrumMaster.

Contact Me

Advanced Redux in Xamarin Part 3: Database Middleware

posted on 21 July 2017 in programming with 0 Comments

In this final post in the series on advanced Redux in Xamarin, we'll look at how to integrate a local database with Redux, we'll write Middleware that intercepts CRUD Actions and applies them to our database.

Read Article

Advanced Redux in Xamarin Part 2: Persistent Actions Middleware

posted on 20 July 2017 in programming with 0 Comments

In this second post in the series on advanced Redux in Xamarin, we'll look at how to persist Actions so application state can be restored when the app restarts. We'll do this by creating Middleware that will intercept each action and save it to a persistent store, then rehydrate the application state from that store on app startup.

Read Article

Advanced Redux in Xamarin Part 1: Action Creators

posted on 11 July 2017 in programming with 0 Comments

Redux is an implementation of the Flux architecture that manages UI changes through a single global State object that can only be mutated by dispatching Actions. It provides a way to easily reason about state changes and to share that state across multiple separated areas of the UI.

Originally developed for React in JavaScript, it’s now finding its way into other languages, there are a number of implementations of Redux in .NET (e.g. Redux.NET, YAXL.Redux and Reducto). Rather than rehashing the basics of how to use Redux in Xamarin (there are plenty of good articles), in this post series we’ll look at some more advanced concepts, starting with Action Creators.

Read Article

No iOS code signing key matches provisioning profile

posted on 06 July 2017 in programming with 0 Comments

Recently my team have come up against this error a few times building a Xamarin app using Visual Studio 2017 both on the Mac and PC, and it took a bit to work out the fix.

No iOS code signing key matches specified provisioning profile ‘xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx’

Read Article

Two's company, three's a mob: Mob programming

posted on 26 April 2017 in programming with 0 Comments

First there came pair programming, a development disciple that promised team collaboration, improved quality, inbuilt mentoring and redundancy. Now the development community is taking it to the next level - mob programming. Mob programming, or mobbing, is where the entire team works together on a single problem, sharing one PC, one keyboard and one mouse.

Read Article

Starting a promise chain to handle exceptions correctly

posted on 04 January 2017 in programming with 0 Comments

Here’s a little promises quirk that I’ve overlooked for a while. Generally we all write promises like this:

doSomething()
  .then(doSomethingElse)
  .then(doSomethingFurther)
  .catch(handleError);

And we know that any exception raised will skip to the catch handler. Except for the initial doSomething() call. If an exception is raised here it will be treated like a normal exception and stop executing all the rest of your code. So how do you deal with it?

Read Article

Increment project version from Travis

posted on 29 November 2016 in programming with 0 Comments

Can you effectively use GitHub and Travis for continuous delivery? You sure can, but managing the version number can be difficult, here’s a way to automatically increment the patch number on every deployment from Travis.

Read Article

Adding font-awesome (or any SVG) to Google Slides

posted on 12 May 2016 in general with 0 Comments

Getting images into Google Slides is simple right, just upload the image and voila. What if instead of images you want icons? You can always take a screenshot of an icon and upload that, but then you’re stuck with the size because resizing that thing is going to make it ugly. There’s a better way.

Read Article

Using Grunt with Pebble Build to create scalable PebbleKit JavaScript

posted on 09 November 2015 in programming with 0 Comments

Pebble watchapps communicate with the phone via PebbleKit, a sandboxed JavaScript environment that runs within the Pebble phone app. It's pretty simple to setup the interactions on the JavaScript side, but what happens when the JavaScript starts to get more complex? Using Grunt we can manage a scalable JS app, including running linters, bundling and running unit tests.

Read Article

Replace your CMS with GitHub Pages, Jekyll and Grunt

posted on 23 September 2015 in programming with 0 Comments

For years I’ve used Wordpress to host my site, which has been great but it’s overkill for what I need. I’d be happier to write the HTML myself if it wasn’t such a maintenance pain keeping consistency across all the pages. I hated having to update WordPress continually to ensure my site is secure. In order to keep all my site source in Git I have to synchronise the changes that happen automatically on the server, like updates and uploads / media files back to my working copy to commit them. And it doesn’t enable me to keep any of my content in Git, which is most important, I have to take regular database backups for this.

Read Article