Category: Development

Centering a CGPath in Swift

Recently I was trying to work out how to center a CGPath in Swift, and Google was failing me. I found a pretty quick and easy way to do it so I thought I’d drop it here for others to find.

Read More

The Web

Microsoft’s WCF DataContractJsonSerializer sucks!

Anybody who has tried to write a RESTful JSON service in WCF will have hit a wall of hurt as soon as they try to do anything beyond returning a simple string. Enums don’t work how you would want (returning a string instead of the integer value), and error messages are still returned as either XML or (even worse) HTML.

There are some partial solutions online, particularly a great starting point provided by Jeroen Hildering on his blog post, however I found there were still a few further issues I wanted to solve.

Read More

Patch for JavaScript errors from the nav bar in CRM 2015 with Update 0.2

With the CRM 2015 on-premise update 0.2, Microsoft have introduced a bug with the navigation bar at the top of the page. The steps to reproduce it are:

  1. Hover over the top-level node, e.g. Sales, to bring up the second level navigation.
  2. Within the second level navigation, click on the downward pointing chevron next to an item, for example “Contacts”, to reveal the third level navigation showing the recently viewed items.
  3. Select one of the recent items.
  4. After the page has loaded, repeat from step 1.

As soon as you open the nav bar the second time a JavaScript error will occur, causing the whole navigation bar to become stuck on the page.

I have managed to identify the problem and have developed a simple patch for the JavaScript file in question.

Read More

Photo of the Chrome 38 bug Knowledge Base article

Patch for Chrome 38 lookup error in Dynamics CRM 2013

With huge thanks to Guido Preite’s blog post on the problem, I have developed a patch for this, and I thought I would share.

The crux of the problem is that the code is trying to access an element of an array, and Chrome 38’s JavaScript implementation provides this element already as a feature of the base language. The fix is to simply use the ‘hasOwnProperty’ method to check to see if the array element we are checking actually belongs the object, or is inherited from the prototype.

Read More

Running uTorrent as a service on Windows

So I have recently set up my own Windows Server 2012 box to replace my old NAS. There was nothing wrong with the old box particularly, I just wanted a bit more control over it all, and I wanted to be able to run Plex, which the old box just wasn’t powerful enough to handle. One of the features of the NAS box was that it has a BitTorrent client, accessible via a web browser, and I was keen to replicate this functionality on my new set up.

The popular µTorrent client seemed like a good solution, as it includes a web-based user interface out of the box. Unfortunately, there is no built-in way to get it to run without being actually logged into the server at the time. The usual trick of setting up a scheduled task to run at start up unfortunately didn’t seem to work, and all of the guidance I could find on the internet suggested that I use the Windows Server 2003 Resource Kit to create a service, which unfortunately seems to be incompatible with Windows Server 2012!

So, in the end I gave in and came up with my own solution, and I thought I would write about it here in case it is of any use to anyone else trying to achieve the same thing.

Read More