Posts

This is not a blog

You might perhaps argue that a "blog" is a personal journal, published to the public internet. The term "blog" was coined many years ago by a number of different people, and is almost universally accepted to derive from the word "weblog" - which in itself probably isn't a real word.

So no. This isn't a blog. It's just a series of posts on a website that you might not really qualify as "pages" in their own right. I guess that gets into the whole classification of things though (time to hold my hand up, and admit that I read Foucault's "The Order of Things" years ago).

If you were hoping to discover my personal blog, you're looking in the wrong place. It doesn't take much detective work to find it though, so I'll leave that detective trail with you. Suffice to say, you'll probably be incredibly disappointed if you spend any time tracking it down - it's not *that* exciting.

So there you go. This isn'…

Riding the Elephant

In recent years I have been consumed by several sizeable software development projects encompassing a stack of different products and technologies - among them the .NET framework, SharePoint, Nintex, K2, C#, SQL, the Global Assembly Cache, Web User Controls, Server Controls, and a lot of object oriented code. While building such leviathans, I can't help noticing their performance - or rather the lack of it.
It brings to mind my experiences working on open source web projects with PHP and MySQL - the simplicity, the speed, and the flexibility of the LAMP (Linux, Apache, MySQL, PHP) platform. It's been a few years now since I've had the chance to work with PHP, and I have to admit I miss it.

While C# is a wonderful language, and the Visual Studio development environment is fantastic, you can't help noticing the amount of horsepower required to get things done. While waiting for the solution to build earlier, I found myself mentally comparing it to a new computer with Wind…

Nintex Forms Hyperlink Fields and Browser Tabs

One of the glaring issues with Nintex Forms (particularly in Office 365, given the time it takes for a form to load) is that when Hyperlink fields are in display mode, they open their link in the same browser tab as the form - so you lose the form.The following chunk of Javascript can be dropped into the "Custom Javascript" section of Form Settings in the Nintex Forms designer, and will add the target='_blank' attribute to the HTML anchor within a named field. Just change 'FieldName' to the name of the field you want to redirect.NWF.FormFiller.Events.RegisterAfterReady(function(){ NWF$("DIV[data-controlname='FieldName'] A").attr("target","_blank"); });

Using Python to convert an OPML file into a Blogroll

If you follow a number of blogs in a feed reader such as Feedly, or BlogLovin, wouldn't it be great if you could turn the OPML export from those services directly into nicely formatted HTML for a Blogroll in your own blog, complete with descriptions of each blog from the authors themselves. That's what I thought, so I wrote this Python script to do exactly that.It looks through each feed in an OPML file, loads the feed, and then reads the description before compiling them all into one outputted chunk of HTML - a list of links ready to drop into a page in a blog.# Example; # python opml2html.py wpcom-subscriptions.opml > html.txt import sys,urllib2 import xml.etree.ElementTree as ET # Prepare a blog object class Blog: def __init__(self,title,url,rss,description): self.Title = title self.URL = url self.RSS = rss self.Description = description # Prepare a blog list blogs = [] # get the filename passed in filename = sys.argv[1] print 'Processing ' …

How to Export Wordpress Posts to Text Files

If you've ever thought about backing up a self hosted Wordpress blog, or filing the posts into Evernote, or Google Drive, you probably want an easy way to export the posts to individual text files that can then be imported elsewhere. After finding nothing in the various plugins around the place, I ended up writing my own code to do it.Just put the code below in a text file (call it something like wp2htm.php), and upload it to the root folder of your wordpress install. Visit the page in your browser, and it will create a folder in the root of the install called "exported_posts", with all the posts in it. It stands to reason that you must have a self hosted wordpress instance to do this.If you are using Wordpress.com, you can easily download a Wordpress appliance from Turnkey Linux, export your posts from wordpress.com, import them into your virtual machine, and upload the exporter to there instead (hopefully that makes sense).The code below is simple enough that you shoul…

The Internet Explorer jQuery Change Event Puzzle

While working on a huge user interface development project over the last few weeks, I came across some strange behaviour from Internet Explorer 11 that I thought might be worth sharing. In simple terms, it seems the .change jQuery event handler does not work consistently across all browsers, all environments, and all situations.The user interface code I had written did something along the lines of the following:$(".container").append("<input id='field_a' type='text' />"); $("#field_a").change(function(){ // do something });Looks pretty straightforward, doesn't it. It worked in Chrome, Firefox, Internet Explorer (on my work laptop), and even on the version of Chrome installed within Raspbian on a Raspberry Pi. It didn't work in some cases on laptops used by the client on-site.I started digging, and eventually found some similar conversations at StackOverflow. I resolved the issue by changing my code to look like this:$(&qu…

How to make SharePoint mix up Folder and Document Set Content Types

When you create a document library, the document library (by default) has two content types - Document, and Folder. Folder is hidden from you - but when you list the content types of the library in Powershell, the following will be reported:DocumentFolderWhen you create a folder in WebDAV, the Folder Content Type is chosen by SharePoint automatically. Interestingly, if you use powershell to remove the Folder content type, and then create another folder via WebDAV, it will have NO content type listed, even though the folder will still work as a folder in the library.Here's the catch - and how you can confuse SharePoint:If you remove the Folder Content Type, and add a Document Set Content Type, and then go to WebDAV to create a folder, the folder will get the Document Set content type. The reason for this appears to be in the way SharePoint chooses the folder content type - Folders and Document Set IDs (GUIDs) both begin "0x0120". It looks like SharePoint finds the docume…