Disabling comments for all posts on a WordPress blog

This content is 13 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

Long-time readers of my blog will know that I used to manage the Fujitsu UK and Ireland CTO Blog (which we’ve recently closed, but have left the content in place for posterity) and I’m still getting the comment notifications (mostly spam).  Many of the posts have HTTP 301 redirects to either mine or David Smith‘s blogs (I found a great WordPress plugin for that – Redirection) but, for those that remain, I wanted to turn off comments.  Doing this individually for each post seemed unnecessarily clunky but there is, apparently, no way to do this from the WordPress user interface (with database access it would have been straightforward but I don’t have that level of access).

There is a plug-in that globally disables all comments – named, rather aptly, Disable Comments – except that the blog is part of a multi-site (network) install and I’m not sure what the broader impact would be…

No bother, I found a workaround – simply set all of the posts to close comments after a certain number of days. The theme that someone has applied to the site (since I stopped working with it) doesn’t seem to respect that, and still leaves a comment button visible, but anyone with a well-developed theme should be OK…

Handy WordPress URL re-write

This content is 13 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

Last week, I accidentally advertised a blog post using two different URLs (I edited the title, which changed the WordPress slug, but forgot to edit a draft email to refer the new URL). With Twitter advertising one URL to potential customers, and our internal newsletter advertising another, I needed both to work.

I don’t have access to the server (only to the WordPress application), so playing around with IIS/Apache URL re-writes wasn’t an option. I started to look for WordPress plugins but couldn’t find any – and then I found out why…

Although there is no mention of it in the Codex, when you change the title of a post, WordPress automatically creates an HTTP 301 redirect from the the old URL to the new. I’ve seen this on my own blog but Johannes Pille describes it beautifully on StackExchange:

“The previously used slug(s) are stored in the database in the wp_postmeta table. Check for _wp_old_slug in the meta_key column (the actual slugs being stored in the meta_value column). Hence should you ever want this default behavior not to happen in a particular case, this is where to delete a value.”

I also found that the URL (and hence the slug) is not set until the post is published. I had edited the title whilst the post was in a scheduled state, so there was only one slug recorded (the new title). By editing the slug post-publish, I was able to prevent the HTTP 404s that some people were seeing.

Adding extra social sharing services to WordPress with JetPack (ShareDaddy)

This content is 13 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

Last night, as part of the rebuild of this site, I reinstated the social sharing links for each post. In the old site they had been implemented as bespoke code using each social network’s recommended approach (e.g. Twitter or Facebook‘s official button codes) but presentation becomes problematic, with each button having a slightly different format and needing some CSS trickery to get it right.

I looked into a variety of plugins but they all had issues – either with formatting or functionality – until I stumbled across reference to WordPress.com’s social sharing capabilities.  If only I could have that functionality on a self-hosted (WordPress.org) site…

…As it happens, I can – WordPress.com’s social sharing is based on the ShareDaddy plugin, which is part of a collection called JetPack. ShareDaddy is also available as a freestanding plugin but now I have JetPack installed I’m finding some of the other functionality it gives me useful (and it’s not possible to activate ShareDaddy if you have JetPack installed).

I need to make some changes (like working out how to hack the code and turn off the count next to my Tweet/Like/+1 buttons – it’s embarrassing when the number is small!) but I’m happy enough with the result for now.  One thing I did need to do though was to add some services that are not yet in the JetPack version of the plugin (one of the major advantages of ShareDaddy is how simple it is to do this).

Rebuilding my site: please excuse the appearance

This content is 13 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

Regular readers may have noticed that this site is looking a little… different… right now.

Unfortunately, my hosting provider told me last night that they had a disk failure on the server. Normally that wouldn’t be a problem (that’s why servers have redundant components right? Like RAID on the disks?) but it seems this “server” is just a big PC. I can’t get too mad though… the MySQL database backup scripts have been failing for a month and it was my sloppyness that didn’t chase that up, and it was me who hadn’t made sure I had a recent copy of the file system…

So, as things stand:

  • I think I have restored all posts from 2004 until almost the end of August 2011;
  • I need to restore the later posts and comments (using copies from FeedBlitz, Google Reader, etc.);
  • There are no plugins (so things look odd); Some of the plugins have been reinstalled (but things may still look odd);
  • There are no graphics (they were hosted outside WordPress) I’ve restored all most of the graphics and other external media but there are still some I need to track down;
  • I have not restored the theme (so I’m using the WordPress defaults and there is no mobile theme);
  • The theme I’m using does not specify UTF-8 encoding so lots of  characters; Still some spurious characters appearing on some pages…
  • There are no fewer ads (which you might be happy about, but I do still need to pay the bills).

Please bear with me whilst I get things back… it may take some time as it needs to fit in between other activities but it might also be a good thing (new theme has been long overdue and I might even get smarter about my backups…).

And, if you spot another problem, please let me know.

[Updated at various points as the site has been restored]

Failing WordPress updates fixed by enabling FastCGI

This content is 14 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

For months, although it feels like years, I’ve been struggling with WordPress upgrades and it’s been driving me mad.  Each time I’ve attempted an in-app update of a plugin (or WordPress itself), it’s asked me for FTP credentials and then, usually, failed.  I’ve got used to re-installing WordPress but it shouldn’t be this way.

The problem, it seems was a combination of WordPress file ownership/permissions. I had to set the wp-content/upgrade folder permissions to 777 in order to successfully update plugins and that just didn’t feel right.  Luckily, I’m on good terms with my hosting provider and they started looking into the issue for me.  It seems (I think) that Apache was running as nobody and that was presenting some issues with WordPress. Changing the owner on my /blog folder (to nobody) fixed WordPress, but it meant I couldn’t FTP any content to the folder using my own username, so we went back to the drawing board.

I can’t claim to understand all the technical details but I’m told the fix was to enable FastCGI on the server.  It was originally disabled because it’s memory-hungry (spawning child processes for each user) but wow, FastCGI is a good name. Now my WordPress upgrades take seconds. I updated twice yesterday (to 3.1.4, then later to 3.2) and I was amazed how quickly things happened. That is good.

WordPress theme update prevents access to administrative pages

This content is 14 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

For days now, I’ve been banging my head against the wall on a problem with a WordPress website (not this one). I used an agency to develop a theme for me, but every time I applied it to the site, I lost access to the /wp-admin pages (in most browsers I saw a blank page, except in Firefox, where I could see the following characters: ). I only have access to the WordPress application (no database administration, or access to the web server itself), so the only way out was to ask the server administrators to restore the WordPress folders from backup, which takes time and gets embarrassing after a second attempt.

I’d seen John MacMenamin’s WordPress WP-Admin blank page fix post and thought I’d removed all whitespace from the top/bottom of functions.php but, after Alex Coles suggested that I look at the differences between Unix-style linefeeds and Windows carriage-return/linefeeds, Could this be the culprit in the case of the blank /wp-admin pages?I spotted the same strange characters at the head of the file (they showed up in windiff.exe as I was performing a file comparison). I don’t know how it got there but, each time I get a theme update, I have to manually remove what appeared to be a single byte from the head of the file using the nano editor on my Mac, which presented it as white space (I’m sure vi would do the job too), because not all text editors can see the offending character (certainly not Notepad on Windows, or TextEdit on a Mac).

This cost me a lot of time (and probably delayed the launch of the website too), so I thought it might be useful to flag up for others to benefit from my experience.

Rebuilding WordPress…

This content is 14 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

This post comes with an apology – to Alex Coles, who often helps me out with the development of this site, and who, after encouraging me to update it to the latest version of WordPress (late last night, at a pub, over a 3G mobile connection) was the recipient of my frustration when it failed with an HTTP 408 error and a message that said something about a slow connection. Sorry Alex.

Despite having been given a torrent of abuse, Alex was gracious enough to give me the advice that allowed me to rebuild the site. I was lucky that it had stayed up, albeit in some kind of weird state that said it was WordPress v3.0.1 but was probably still v2.9.2; however, attempts to reinstall WordPress were futile – and a failed plugin update left the site stuck in maintenance mode (the answer to which seemed to be wait a few minutes, although I also found advice which suggested deleting the .maintenance file).

So, this afternoon, I set about rebuilding the site, by installing a parallel copy of WordPress, although the database has not been changed (I do have a backup of that, if it becomes necessary to restore it).

  1. The first thing to do was to download the latest copy of WordPress. I’m on a Linux host so I downloaded the .tar.gz version but Windows users may prefer a .zip.
  2. After extracting the archive to a suitable location on my webspace (the web root was fine, as the extraction automatically created a /wordpress subdirectory).
  3. I then copied over the customised elements of the old site from /wp-content including themes, plugins, uploads and other data that my blog uses (for example, images that are not in my uploads folder, and JavaScript that I use to run some of the advertisements on the site).
  4. Next, I copied some of the critical files that control the WordPress configuration: wp-settings.php, wp-config.php and .htaccess.
  5. Finally, I renamed the old /blog folder, and renamed /wordpress to /blog before testing site access.

With everything working well, I can delete the old /blog subdirectory but I’ll leave it for a while, “just in case” – although it’s probably worth editing /robots.txt to stop search engines from indexing the old site alongside the new one.

I should probably breathe a big sigh of relief now, but I’m in the mood for site development so, if you see the site theme change a few times over the coming weeks, bear with me!

Adding a Facebook Share (or Like) button to a self-hosted WordPress blog

This content is 14 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

A few weeks ago, I wrote about adding a Tweet button to a self-hosted WordPress blog, and followed up by writing about using a little CSS trickery to align the Tweet button (thanks to Alex Coles).  Whilst I was implementing the Tweet Button, I also went about putting a Facebook Share button on each post.

There are plug-ins to do this for me but why use a plugin when the answer is just a single lines of code in two files within the template?

In the same paragraph as the Tweet button (i.e. styled with the same class), I used this code, generated using the Facebook Share Button generator:

This time, the code is identical for both index.php and single.php as, unfortunately, Facebook doesn’t seem to give me any control over the title of the link (it just takes the </code> tag from the page). <a href="http://askville.amazon.com/add-Share-Facebook-button-webpage/AnswerViewer.do?requestId=1539369">There is another method, using query string parameters in the URL</a> but I chose to stick with Facebook’s recommended method.</p> <p>Incidentally, I chose to Share, rather than <a href="http://developers.facebook.com/docs/reference/plugins/like">Like (which can be implemented by following these guidelines)</a> because they have subtly different purposes and <a href="http://daggle.com/facebook-button-facebook-share-keeping-1792">each is represented in a slightly different manner (as Danny Sullivan describes in his post on the subject)</a>. After reading Danny’s post, I agree that Share is best for linking to a single post, whilst Like is more suited to the site as a whole (someone might <em>Like</em> markwilson.it and <em>Share</em> one or more posts from the site).</p> </div><!-- .entry-content --> <footer class="entry-footer"> <span class="cat-links">Posted in Uncategorised</span><span class="tags-links">Tagged <a href="https://www.markwilson.co.uk/blog/tag/social-networking" rel="tag">Social Networking</a>, <a href="https://www.markwilson.co.uk/blog/tag/wordpress" rel="tag">WordPress</a></span><span class="comments-link"><a href="https://www.markwilson.co.uk/blog/2010/09/adding-a-facebook-share-or-like-button-to-a-self-hosted-wordpress-blog.htm#respond">Leave a comment</a></span> </footer><!-- .entry-footer --> </article><!-- #post-## --> <article id="post-1979" class="post-1979 post type-post status-publish format-standard hentry tag-social-networking tag-wordpress"> <header class="entry-header"> <h2 class="entry-title"><a href="https://www.markwilson.co.uk/blog/2010/08/more-on-implementing-twitters-tweet-button.htm" rel="bookmark">More on implementing Twitter’s Tweet button</a></h2> <div class="entry-meta"> <span class="posted-on">Posted on <a href="https://www.markwilson.co.uk/blog/2010/08/more-on-implementing-twitters-tweet-button.htm" rel="bookmark"><time class="entry-date published" datetime="2010-08-26T18:51:56+01:00">Thursday 26 August 2010</time></a></span><span class="byline"> By <span class="author vcard"><a class="url fn n" href="https://www.markwilson.co.uk/blog/author/mark-wilson">Mark Wilson</a></span></span> </div><!-- .entry-meta --> </header><!-- .entry-header --> <a class="post-thumbnail" href="https://www.markwilson.co.uk/blog/2010/08/more-on-implementing-twitters-tweet-button.htm"> </a> <div class="entry-content"> <div class="juiz-outdated-message jodpm-top">This content is 15 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.</div><p>A week or so back, I wrote about <a href="http://www.markwilson.co.uk/blog/2010/08/adding-a-tweet-button-to-a-self-hosted-wordpress-blog.htm">putting a Tweet button onto a self-hosted WordPress blog</a>. The method I used was fine – it works – but I was struggling to place the button within my page (I knew where to put it in my code but it seemed to display in the wrong place sometimes, as a result of some of the floats that the stylesheet applies).</p> <p>That’s when I called in my buddy <a href="http://www.alexcoles.com/">Alex</a>: XHTML and CSS wizard; and fixer of many things on this site.</p> <p>He spotted that, even though <a href="http://dev.twitter.com/pages/tweet-button">Twitter gives us three options for implementing the Tweet button: JavaScript, IFrame, and roll your own</a>, the <a href="http://platform.twitter.com/widgets.js">JavaScript implementation</a> also uses an IFrame.</p> <p>The trouble with this is that IFrames are bad. Well, not really bad, but certainly deprecated for Strict HTML and XHTML, and certainly not the direction I want to be heading in for a compliant site. Ideally, I would find another way around the issue but rolling my own Tweet button doesn’t look great) and Twitter’s implementation uses several images in one file, just showing the appropriate section of the image. I could use this, with image replacement techniques for hover and click (which is what Twitter do) but, to be honest, that was a little out of my league, so IFrames it is…</p> <p>Alex helped me style up the button – if you want to do something similar, this was the CSS that he used:</p> <p><dirtycode:noclick>p.social-media {margin-top: -15px;}<br /> iframe.twitter-share-button {float: left; margin-right: 1em;}</dirtycode></p> <p>Together with adding <code>class="social-media"</code> to the <code></p> <p></code> tag in the code to display the tweet button so that it now reads:</p> <p><dirtycode:noclick></p> <p class="social-media"><a href="http://twitter.com/share" class="twitter-share-button" data-url="<?php the_permalink(); ?>” data-text=”<?php the_title(); ?>” data-count=”none” data-via=”markwilsonit”>Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></p> <p></dirtycode></p> <p>When I asked him how this works, he explained that the class on the <code></p> <p></code> is just to close up the top margin; the real magic is floating just the Tweet button (which cured the CSS float issues that had been frustrating me).</p> <p>Of course, there may be plugins to display buttons like Tweet, Facebook Share/Like, etc. but when something only takes a couple of lines of code, I’d rather implement it natively than add to the list of plugins running on my WordPress installation.</p> </div><!-- .entry-content --> <footer class="entry-footer"> <span class="cat-links">Posted in Uncategorised</span><span class="tags-links">Tagged <a href="https://www.markwilson.co.uk/blog/tag/social-networking" rel="tag">Social Networking</a>, <a href="https://www.markwilson.co.uk/blog/tag/wordpress" rel="tag">WordPress</a></span><span class="comments-link"><a href="https://www.markwilson.co.uk/blog/2010/08/more-on-implementing-twitters-tweet-button.htm#respond">Leave a comment</a></span> </footer><!-- .entry-footer --> </article><!-- #post-## --> <article id="post-1972" class="post-1972 post type-post status-publish format-standard hentry tag-social-networking tag-wordpress"> <header class="entry-header"> <h2 class="entry-title"><a href="https://www.markwilson.co.uk/blog/2010/08/adding-a-tweet-button-to-a-self-hosted-wordpress-blog.htm" rel="bookmark">Adding a Tweet button to a self-hosted WordPress blog</a></h2> <div class="entry-meta"> <span class="posted-on">Posted on <a href="https://www.markwilson.co.uk/blog/2010/08/adding-a-tweet-button-to-a-self-hosted-wordpress-blog.htm" rel="bookmark"><time class="entry-date published" datetime="2010-08-13T11:59:34+01:00">Friday 13 August 2010</time><time class="updated" datetime="2010-08-14T15:06:47+01:00">Saturday 14 August 2010</time></a></span><span class="byline"> By <span class="author vcard"><a class="url fn n" href="https://www.markwilson.co.uk/blog/author/mark-wilson">Mark Wilson</a></span></span> </div><!-- .entry-meta --> </header><!-- .entry-header --> <a class="post-thumbnail" href="https://www.markwilson.co.uk/blog/2010/08/adding-a-tweet-button-to-a-self-hosted-wordpress-blog.htm"> </a> <div class="entry-content"> <div class="juiz-outdated-message jodpm-top">This content is 15 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.</div><p>Yesterday, Twitter launched their official button for websites and keen-eyed observers will have noticed that markwilson.it now sports a shiny new “tweet” icon at the head of each post.  It’s pretty easy to do (<a href="http://twitter.com/goodies/tweetbutton">Twitter generates the code for you</a> – and has an <a href="http://dev.twitter.com/pages/tweet_button_faq">FAQ for developers</a>) but there may be a couple of things to watch out for, <a href="http://mashable.com/2010/08/13/tweet-button-bloggers/">depending on your blog’s content management system</a>.</p> <p>I use self-hosted WordPress, and these were the changes I made to the site:</p> <ul> <li>For my single posts, I just added the Twitter-generated code to an appropriate position in the single.php file.</li> <li>For my main index page, I edited index.php, but didn’t want the generated link to be to the current page (my home page with several recent posts) – I wanted it to relate to the particular post that the viewer is tweeting from.  Adapting a tip from <a href="http://www.davidteng.com/">David Teng</a>, I added two parameters to the link code (<code>data-url="<?php the_permalink(); ?>"</code> and <code>data-text="<?php the_title(); ?>"</code>).</li> </ul> <p>Now, by clicking the Tweet button on this post, the link generated relates to the post – and not the home page for the blog.</p> </div><!-- .entry-content --> <footer class="entry-footer"> <span class="cat-links">Posted in Uncategorised</span><span class="tags-links">Tagged <a href="https://www.markwilson.co.uk/blog/tag/social-networking" rel="tag">Social Networking</a>, <a href="https://www.markwilson.co.uk/blog/tag/wordpress" rel="tag">WordPress</a></span><span class="comments-link"><a href="https://www.markwilson.co.uk/blog/2010/08/adding-a-tweet-button-to-a-self-hosted-wordpress-blog.htm#comments">2 Comments</a></span> </footer><!-- .entry-footer --> </article><!-- #post-## --> <nav class="navigation paging-navigation" role="navigation"> <h2 class="screen-reader-text">Posts navigation</h2> <div class="nav-links"> <div class="nav-previous"> <a href="https://www.markwilson.co.uk/blog/tag/wordpress/page/3" ><span class="meta-nav">←</span> Older posts</a> </div> <div class="nav-next"> <a href="https://www.markwilson.co.uk/blog/tag/wordpress" >Newer posts <span class="meta-nav">→</span></a> </div> </div><!-- .nav-links --> </nav><!-- .navigation --> </main><!-- #main --> </div><!-- #primary --> <div id="secondary" class="widget-area" role="complementary"> <aside id="search-4" class="widget widget_search"><form role="search" method="get" class="search-form" action="https://www.markwilson.co.uk/blog/"> <label> <span class="screen-reader-text">Search for:</span> <input type="search" class="search-field" placeholder="Search …" value="" name="s" /> </label> <input type="submit" class="search-submit" value="Search" /> </form></aside><aside id="categories-2" class="widget widget_categories"><h2 class="widget-title">Categories</h2> <ul> <li class="cat-item cat-item-768"><a href="https://www.markwilson.co.uk/blog/topic/business">Business</a> </li> <li class="cat-item cat-item-364"><a href="https://www.markwilson.co.uk/blog/topic/exercise">Exercise</a> </li> <li class="cat-item cat-item-697"><a href="https://www.markwilson.co.uk/blog/topic/lifestyle">Lifestyle</a> </li> <li class="cat-item cat-item-117"><a href="https://www.markwilson.co.uk/blog/topic/motoring">Motoring</a> </li> <li class="cat-item cat-item-764"><a href="https://www.markwilson.co.uk/blog/topic/music">Music</a> </li> <li class="cat-item cat-item-152"><a href="https://www.markwilson.co.uk/blog/topic/photography">Photography</a> </li> <li class="cat-item cat-item-838"><a href="https://www.markwilson.co.uk/blog/topic/published-elsewhere">Published elsewhere</a> </li> <li class="cat-item cat-item-811"><a href="https://www.markwilson.co.uk/blog/topic/retrospectives">Retrospectives</a> </li> <li class="cat-item cat-item-840"><a href="https://www.markwilson.co.uk/blog/topic/short-takes">Short takes</a> </li> <li class="cat-item cat-item-6"><a href="https://www.markwilson.co.uk/blog/topic/site-notices">Site notices</a> </li> <li class="cat-item cat-item-218"><a href="https://www.markwilson.co.uk/blog/topic/technology">Technology</a> </li> <li class="cat-item cat-item-758"><a href="https://www.markwilson.co.uk/blog/topic/travel">Travel</a> </li> <li class="cat-item cat-item-38"><a href="https://www.markwilson.co.uk/blog/topic/inane-waffle">Waffle and randomness</a> </li> <li class="cat-item cat-item-666"><a href="https://www.markwilson.co.uk/blog/topic/weeknotes">Weeknotes</a> </li> </ul> </aside><aside id="archives-2" class="widget widget_archive"><h2 class="widget-title">Archives</h2> <label class="screen-reader-text" for="archives-dropdown-2">Archives</label> <select id="archives-dropdown-2" name="archive-dropdown"> <option value="">Select Month</option> <option value='https://www.markwilson.co.uk/blog/2025/01'> January 2025  (3)</option> <option value='https://www.markwilson.co.uk/blog/2024/12'> December 2024  (1)</option> <option value='https://www.markwilson.co.uk/blog/2024/11'> November 2024  (5)</option> <option value='https://www.markwilson.co.uk/blog/2024/10'> October 2024  (1)</option> <option value='https://www.markwilson.co.uk/blog/2024/09'> September 2024  (3)</option> <option value='https://www.markwilson.co.uk/blog/2024/08'> August 2024  (4)</option> <option value='https://www.markwilson.co.uk/blog/2024/07'> July 2024  (1)</option> <option value='https://www.markwilson.co.uk/blog/2024/06'> June 2024  (2)</option> <option value='https://www.markwilson.co.uk/blog/2024/05'> May 2024  (2)</option> <option value='https://www.markwilson.co.uk/blog/2024/04'> April 2024  (2)</option> <option value='https://www.markwilson.co.uk/blog/2024/03'> March 2024  (1)</option> <option value='https://www.markwilson.co.uk/blog/2024/02'> February 2024  (6)</option> <option value='https://www.markwilson.co.uk/blog/2024/01'> January 2024  (7)</option> <option value='https://www.markwilson.co.uk/blog/2023/12'> December 2023  (2)</option> <option value='https://www.markwilson.co.uk/blog/2023/11'> November 2023  (2)</option> <option value='https://www.markwilson.co.uk/blog/2023/10'> October 2023  (2)</option> <option value='https://www.markwilson.co.uk/blog/2023/07'> July 2023  (2)</option> <option value='https://www.markwilson.co.uk/blog/2023/06'> June 2023  (1)</option> <option value='https://www.markwilson.co.uk/blog/2023/04'> April 2023  (1)</option> <option value='https://www.markwilson.co.uk/blog/2023/03'> March 2023  (1)</option> <option value='https://www.markwilson.co.uk/blog/2023/01'> January 2023  (1)</option> <option value='https://www.markwilson.co.uk/blog/2022/12'> December 2022  (1)</option> <option value='https://www.markwilson.co.uk/blog/2022/09'> September 2022  (2)</option> <option value='https://www.markwilson.co.uk/blog/2022/08'> August 2022  (1)</option> <option value='https://www.markwilson.co.uk/blog/2022/06'> June 2022  (2)</option> <option value='https://www.markwilson.co.uk/blog/2022/05'> May 2022  (1)</option> <option value='https://www.markwilson.co.uk/blog/2022/04'> April 2022  (1)</option> <option value='https://www.markwilson.co.uk/blog/2022/01'> January 2022  (1)</option> <option value='https://www.markwilson.co.uk/blog/2021/12'> December 2021  (1)</option> <option value='https://www.markwilson.co.uk/blog/2021/11'> November 2021  (1)</option> <option value='https://www.markwilson.co.uk/blog/2021/10'> October 2021  (1)</option> <option value='https://www.markwilson.co.uk/blog/2021/09'> September 2021  (7)</option> <option value='https://www.markwilson.co.uk/blog/2021/08'> August 2021  (1)</option> <option value='https://www.markwilson.co.uk/blog/2021/07'> July 2021  (2)</option> <option value='https://www.markwilson.co.uk/blog/2021/06'> June 2021  (2)</option> <option value='https://www.markwilson.co.uk/blog/2021/05'> May 2021  (2)</option> <option value='https://www.markwilson.co.uk/blog/2021/04'> April 2021  (5)</option> <option value='https://www.markwilson.co.uk/blog/2021/03'> March 2021  (6)</option> <option value='https://www.markwilson.co.uk/blog/2021/02'> February 2021  (2)</option> <option value='https://www.markwilson.co.uk/blog/2021/01'> January 2021  (1)</option> <option value='https://www.markwilson.co.uk/blog/2020/12'> December 2020  (4)</option> <option value='https://www.markwilson.co.uk/blog/2020/11'> November 2020  (1)</option> <option value='https://www.markwilson.co.uk/blog/2020/09'> September 2020  (1)</option> <option value='https://www.markwilson.co.uk/blog/2020/08'> August 2020  (2)</option> <option value='https://www.markwilson.co.uk/blog/2020/07'> July 2020  (1)</option> <option value='https://www.markwilson.co.uk/blog/2020/06'> June 2020  (2)</option> <option value='https://www.markwilson.co.uk/blog/2020/05'> May 2020  (6)</option> <option value='https://www.markwilson.co.uk/blog/2020/04'> April 2020  (7)</option> <option value='https://www.markwilson.co.uk/blog/2020/03'> March 2020  (2)</option> <option value='https://www.markwilson.co.uk/blog/2020/02'> February 2020  (1)</option> <option value='https://www.markwilson.co.uk/blog/2020/01'> January 2020  (1)</option> <option value='https://www.markwilson.co.uk/blog/2019/12'> December 2019  (1)</option> <option value='https://www.markwilson.co.uk/blog/2019/11'> November 2019  (2)</option> <option value='https://www.markwilson.co.uk/blog/2019/10'> October 2019  (1)</option> <option value='https://www.markwilson.co.uk/blog/2019/09'> September 2019  (1)</option> <option value='https://www.markwilson.co.uk/blog/2019/08'> August 2019  (1)</option> <option value='https://www.markwilson.co.uk/blog/2019/07'> July 2019  (1)</option> <option value='https://www.markwilson.co.uk/blog/2019/06'> June 2019  (1)</option> <option value='https://www.markwilson.co.uk/blog/2019/05'> May 2019  (1)</option> <option value='https://www.markwilson.co.uk/blog/2019/04'> April 2019  (2)</option> <option value='https://www.markwilson.co.uk/blog/2019/03'> March 2019  (1)</option> <option value='https://www.markwilson.co.uk/blog/2019/02'> February 2019  (1)</option> <option value='https://www.markwilson.co.uk/blog/2019/01'> January 2019  (1)</option> <option value='https://www.markwilson.co.uk/blog/2018/12'> December 2018  (1)</option> <option value='https://www.markwilson.co.uk/blog/2018/11'> November 2018  (1)</option> <option value='https://www.markwilson.co.uk/blog/2018/10'> October 2018  (1)</option> <option value='https://www.markwilson.co.uk/blog/2018/09'> September 2018  (1)</option> <option value='https://www.markwilson.co.uk/blog/2018/08'> August 2018  (1)</option> <option value='https://www.markwilson.co.uk/blog/2018/07'> July 2018  (2)</option> <option value='https://www.markwilson.co.uk/blog/2018/06'> June 2018  (4)</option> <option value='https://www.markwilson.co.uk/blog/2018/05'> May 2018  (3)</option> <option value='https://www.markwilson.co.uk/blog/2018/04'> April 2018  (3)</option> <option value='https://www.markwilson.co.uk/blog/2018/03'> March 2018  (2)</option> <option value='https://www.markwilson.co.uk/blog/2018/02'> February 2018  (4)</option> <option value='https://www.markwilson.co.uk/blog/2018/01'> January 2018  (1)</option> <option value='https://www.markwilson.co.uk/blog/2017/12'> December 2017  (4)</option> <option value='https://www.markwilson.co.uk/blog/2017/11'> November 2017  (4)</option> <option value='https://www.markwilson.co.uk/blog/2017/10'> October 2017  (5)</option> <option value='https://www.markwilson.co.uk/blog/2017/09'> September 2017  (5)</option> <option value='https://www.markwilson.co.uk/blog/2017/08'> August 2017  (6)</option> <option value='https://www.markwilson.co.uk/blog/2017/07'> July 2017  (12)</option> <option value='https://www.markwilson.co.uk/blog/2017/06'> June 2017  (2)</option> <option value='https://www.markwilson.co.uk/blog/2017/05'> May 2017  (4)</option> <option value='https://www.markwilson.co.uk/blog/2017/04'> April 2017  (3)</option> <option value='https://www.markwilson.co.uk/blog/2017/03'> March 2017  (7)</option> <option value='https://www.markwilson.co.uk/blog/2017/02'> February 2017  (7)</option> <option value='https://www.markwilson.co.uk/blog/2017/01'> January 2017  (14)</option> <option value='https://www.markwilson.co.uk/blog/2016/12'> December 2016  (13)</option> <option value='https://www.markwilson.co.uk/blog/2016/11'> November 2016  (11)</option> <option value='https://www.markwilson.co.uk/blog/2016/10'> October 2016  (6)</option> <option value='https://www.markwilson.co.uk/blog/2016/09'> September 2016  (11)</option> <option value='https://www.markwilson.co.uk/blog/2016/08'> August 2016  (6)</option> <option value='https://www.markwilson.co.uk/blog/2016/07'> July 2016  (3)</option> <option value='https://www.markwilson.co.uk/blog/2016/06'> June 2016  (2)</option> <option value='https://www.markwilson.co.uk/blog/2016/05'> May 2016  (11)</option> <option value='https://www.markwilson.co.uk/blog/2016/04'> April 2016  (4)</option> <option value='https://www.markwilson.co.uk/blog/2016/03'> March 2016  (7)</option> <option value='https://www.markwilson.co.uk/blog/2016/02'> February 2016  (3)</option> <option value='https://www.markwilson.co.uk/blog/2016/01'> January 2016  (5)</option> <option value='https://www.markwilson.co.uk/blog/2015/12'> December 2015  (3)</option> <option value='https://www.markwilson.co.uk/blog/2015/11'> November 2015  (10)</option> <option value='https://www.markwilson.co.uk/blog/2015/10'> October 2015  (16)</option> <option value='https://www.markwilson.co.uk/blog/2015/09'> September 2015  (30)</option> <option value='https://www.markwilson.co.uk/blog/2015/08'> August 2015  (17)</option> <option value='https://www.markwilson.co.uk/blog/2015/07'> July 2015  (15)</option> <option value='https://www.markwilson.co.uk/blog/2015/06'> June 2015  (5)</option> <option value='https://www.markwilson.co.uk/blog/2015/05'> May 2015  (11)</option> <option value='https://www.markwilson.co.uk/blog/2015/04'> April 2015  (8)</option> <option value='https://www.markwilson.co.uk/blog/2015/03'> March 2015  (5)</option> <option value='https://www.markwilson.co.uk/blog/2015/02'> February 2015  (6)</option> <option value='https://www.markwilson.co.uk/blog/2015/01'> January 2015  (2)</option> <option value='https://www.markwilson.co.uk/blog/2014/12'> December 2014  (4)</option> <option value='https://www.markwilson.co.uk/blog/2014/11'> November 2014  (4)</option> <option value='https://www.markwilson.co.uk/blog/2014/10'> October 2014  (9)</option> <option value='https://www.markwilson.co.uk/blog/2014/09'> September 2014  (3)</option> <option value='https://www.markwilson.co.uk/blog/2014/08'> August 2014  (3)</option> <option value='https://www.markwilson.co.uk/blog/2014/07'> July 2014  (5)</option> <option value='https://www.markwilson.co.uk/blog/2014/06'> June 2014  (7)</option> <option value='https://www.markwilson.co.uk/blog/2014/05'> May 2014  (2)</option> <option value='https://www.markwilson.co.uk/blog/2014/04'> April 2014  (4)</option> <option value='https://www.markwilson.co.uk/blog/2014/03'> March 2014  (6)</option> <option value='https://www.markwilson.co.uk/blog/2014/02'> February 2014  (7)</option> <option value='https://www.markwilson.co.uk/blog/2014/01'> January 2014  (6)</option> <option value='https://www.markwilson.co.uk/blog/2013/12'> December 2013  (4)</option> <option value='https://www.markwilson.co.uk/blog/2013/11'> November 2013  (5)</option> <option value='https://www.markwilson.co.uk/blog/2013/10'> October 2013  (4)</option> <option value='https://www.markwilson.co.uk/blog/2013/09'> September 2013  (5)</option> <option value='https://www.markwilson.co.uk/blog/2013/08'> August 2013  (1)</option> <option value='https://www.markwilson.co.uk/blog/2013/07'> July 2013  (9)</option> <option value='https://www.markwilson.co.uk/blog/2013/06'> June 2013  (3)</option> <option value='https://www.markwilson.co.uk/blog/2013/05'> May 2013  (8)</option> <option value='https://www.markwilson.co.uk/blog/2013/04'> April 2013  (2)</option> <option value='https://www.markwilson.co.uk/blog/2013/03'> March 2013  (9)</option> <option value='https://www.markwilson.co.uk/blog/2013/02'> February 2013  (8)</option> <option value='https://www.markwilson.co.uk/blog/2013/01'> January 2013  (12)</option> <option value='https://www.markwilson.co.uk/blog/2012/12'> December 2012  (8)</option> <option value='https://www.markwilson.co.uk/blog/2012/11'> November 2012  (16)</option> <option value='https://www.markwilson.co.uk/blog/2012/10'> October 2012  (18)</option> <option value='https://www.markwilson.co.uk/blog/2012/09'> September 2012  (7)</option> <option value='https://www.markwilson.co.uk/blog/2012/08'> August 2012  (14)</option> <option value='https://www.markwilson.co.uk/blog/2012/07'> July 2012  (9)</option> <option value='https://www.markwilson.co.uk/blog/2012/06'> June 2012  (13)</option> <option value='https://www.markwilson.co.uk/blog/2012/05'> May 2012  (17)</option> <option value='https://www.markwilson.co.uk/blog/2012/04'> April 2012  (12)</option> <option value='https://www.markwilson.co.uk/blog/2012/03'> March 2012  (17)</option> <option value='https://www.markwilson.co.uk/blog/2012/02'> February 2012  (13)</option> <option value='https://www.markwilson.co.uk/blog/2012/01'> January 2012  (9)</option> <option value='https://www.markwilson.co.uk/blog/2011/12'> December 2011  (15)</option> <option value='https://www.markwilson.co.uk/blog/2011/11'> November 2011  (23)</option> <option value='https://www.markwilson.co.uk/blog/2011/10'> October 2011  (10)</option> <option value='https://www.markwilson.co.uk/blog/2011/09'> September 2011  (11)</option> <option value='https://www.markwilson.co.uk/blog/2011/08'> August 2011  (11)</option> <option value='https://www.markwilson.co.uk/blog/2011/07'> July 2011  (17)</option> <option value='https://www.markwilson.co.uk/blog/2011/06'> June 2011  (13)</option> <option value='https://www.markwilson.co.uk/blog/2011/05'> May 2011  (15)</option> <option value='https://www.markwilson.co.uk/blog/2011/04'> April 2011  (14)</option> <option value='https://www.markwilson.co.uk/blog/2011/03'> March 2011  (17)</option> <option value='https://www.markwilson.co.uk/blog/2011/02'> February 2011  (11)</option> <option value='https://www.markwilson.co.uk/blog/2011/01'> January 2011  (7)</option> <option value='https://www.markwilson.co.uk/blog/2010/12'> December 2010  (9)</option> <option value='https://www.markwilson.co.uk/blog/2010/11'> November 2010  (13)</option> <option value='https://www.markwilson.co.uk/blog/2010/10'> October 2010  (11)</option> <option value='https://www.markwilson.co.uk/blog/2010/09'> September 2010  (14)</option> <option value='https://www.markwilson.co.uk/blog/2010/08'> August 2010  (10)</option> <option value='https://www.markwilson.co.uk/blog/2010/07'> July 2010  (2)</option> <option value='https://www.markwilson.co.uk/blog/2010/06'> June 2010  (11)</option> <option value='https://www.markwilson.co.uk/blog/2010/05'> May 2010  (10)</option> <option value='https://www.markwilson.co.uk/blog/2010/04'> April 2010  (10)</option> <option value='https://www.markwilson.co.uk/blog/2010/03'> March 2010  (14)</option> <option value='https://www.markwilson.co.uk/blog/2010/02'> February 2010  (13)</option> <option value='https://www.markwilson.co.uk/blog/2010/01'> January 2010  (8)</option> <option value='https://www.markwilson.co.uk/blog/2009/12'> December 2009  (7)</option> <option value='https://www.markwilson.co.uk/blog/2009/11'> November 2009  (10)</option> <option value='https://www.markwilson.co.uk/blog/2009/10'> October 2009  (19)</option> <option value='https://www.markwilson.co.uk/blog/2009/09'> September 2009  (19)</option> <option value='https://www.markwilson.co.uk/blog/2009/08'> August 2009  (21)</option> <option value='https://www.markwilson.co.uk/blog/2009/07'> July 2009  (25)</option> <option value='https://www.markwilson.co.uk/blog/2009/06'> June 2009  (19)</option> <option value='https://www.markwilson.co.uk/blog/2009/05'> May 2009  (19)</option> <option value='https://www.markwilson.co.uk/blog/2009/04'> April 2009  (26)</option> <option value='https://www.markwilson.co.uk/blog/2009/03'> March 2009  (24)</option> <option value='https://www.markwilson.co.uk/blog/2009/02'> February 2009  (24)</option> <option value='https://www.markwilson.co.uk/blog/2009/01'> January 2009  (26)</option> <option value='https://www.markwilson.co.uk/blog/2008/12'> December 2008  (25)</option> <option value='https://www.markwilson.co.uk/blog/2008/11'> November 2008  (34)</option> <option value='https://www.markwilson.co.uk/blog/2008/10'> October 2008  (36)</option> <option value='https://www.markwilson.co.uk/blog/2008/09'> September 2008  (50)</option> <option value='https://www.markwilson.co.uk/blog/2008/08'> August 2008  (36)</option> <option value='https://www.markwilson.co.uk/blog/2008/07'> July 2008  (38)</option> <option value='https://www.markwilson.co.uk/blog/2008/06'> June 2008  (17)</option> <option value='https://www.markwilson.co.uk/blog/2008/05'> May 2008  (25)</option> <option value='https://www.markwilson.co.uk/blog/2008/04'> April 2008  (22)</option> <option value='https://www.markwilson.co.uk/blog/2008/03'> March 2008  (25)</option> <option value='https://www.markwilson.co.uk/blog/2008/02'> February 2008  (24)</option> <option value='https://www.markwilson.co.uk/blog/2008/01'> January 2008  (14)</option> <option value='https://www.markwilson.co.uk/blog/2007/12'> December 2007  (16)</option> <option value='https://www.markwilson.co.uk/blog/2007/11'> November 2007  (23)</option> <option value='https://www.markwilson.co.uk/blog/2007/10'> October 2007  (22)</option> <option value='https://www.markwilson.co.uk/blog/2007/09'> September 2007  (14)</option> <option value='https://www.markwilson.co.uk/blog/2007/08'> August 2007  (27)</option> <option value='https://www.markwilson.co.uk/blog/2007/07'> July 2007  (44)</option> <option value='https://www.markwilson.co.uk/blog/2007/06'> June 2007  (16)</option> <option value='https://www.markwilson.co.uk/blog/2007/05'> May 2007  (23)</option> <option value='https://www.markwilson.co.uk/blog/2007/04'> April 2007  (17)</option> <option value='https://www.markwilson.co.uk/blog/2007/03'> March 2007  (26)</option> <option value='https://www.markwilson.co.uk/blog/2007/02'> February 2007  (26)</option> <option value='https://www.markwilson.co.uk/blog/2007/01'> January 2007  (11)</option> <option value='https://www.markwilson.co.uk/blog/2006/12'> December 2006  (16)</option> <option value='https://www.markwilson.co.uk/blog/2006/11'> November 2006  (26)</option> <option value='https://www.markwilson.co.uk/blog/2006/10'> October 2006  (12)</option> <option value='https://www.markwilson.co.uk/blog/2006/09'> September 2006  (22)</option> <option value='https://www.markwilson.co.uk/blog/2006/08'> August 2006  (17)</option> <option value='https://www.markwilson.co.uk/blog/2006/07'> July 2006  (26)</option> <option value='https://www.markwilson.co.uk/blog/2006/06'> June 2006  (15)</option> <option value='https://www.markwilson.co.uk/blog/2006/05'> May 2006  (39)</option> <option value='https://www.markwilson.co.uk/blog/2006/04'> April 2006  (13)</option> <option value='https://www.markwilson.co.uk/blog/2006/03'> March 2006  (8)</option> <option value='https://www.markwilson.co.uk/blog/2006/02'> February 2006  (33)</option> <option value='https://www.markwilson.co.uk/blog/2006/01'> January 2006  (42)</option> <option value='https://www.markwilson.co.uk/blog/2005/12'> December 2005  (19)</option> <option value='https://www.markwilson.co.uk/blog/2005/11'> November 2005  (21)</option> <option value='https://www.markwilson.co.uk/blog/2005/10'> October 2005  (38)</option> <option value='https://www.markwilson.co.uk/blog/2005/09'> September 2005  (15)</option> <option value='https://www.markwilson.co.uk/blog/2005/08'> August 2005  (32)</option> <option value='https://www.markwilson.co.uk/blog/2005/07'> July 2005  (31)</option> <option value='https://www.markwilson.co.uk/blog/2005/06'> June 2005  (17)</option> <option value='https://www.markwilson.co.uk/blog/2005/05'> May 2005  (28)</option> <option value='https://www.markwilson.co.uk/blog/2005/04'> April 2005  (8)</option> <option value='https://www.markwilson.co.uk/blog/2005/03'> March 2005  (22)</option> <option value='https://www.markwilson.co.uk/blog/2005/02'> February 2005  (29)</option> <option value='https://www.markwilson.co.uk/blog/2005/01'> January 2005  (8)</option> <option value='https://www.markwilson.co.uk/blog/2004/12'> December 2004  (17)</option> <option value='https://www.markwilson.co.uk/blog/2004/11'> November 2004  (8)</option> <option value='https://www.markwilson.co.uk/blog/2004/10'> October 2004  (25)</option> <option value='https://www.markwilson.co.uk/blog/2004/09'> September 2004  (36)</option> <option value='https://www.markwilson.co.uk/blog/2004/08'> August 2004  (22)</option> <option value='https://www.markwilson.co.uk/blog/2004/07'> July 2004  (8)</option> <option value='https://www.markwilson.co.uk/blog/2004/06'> June 2004  (8)</option> <option value='https://www.markwilson.co.uk/blog/2004/05'> May 2004  (6)</option> <option value='https://www.markwilson.co.uk/blog/2004/04'> April 2004  (3)</option> <option value='https://www.markwilson.co.uk/blog/2004/03'> March 2004  (2)</option> <option value='https://www.markwilson.co.uk/blog/2004/02'> February 2004  (6)</option> <option value='https://www.markwilson.co.uk/blog/2004/01'> January 2004  (2)</option> </select> <script type="text/javascript"> /* <![CDATA[ */ (function() { var dropdown = document.getElementById( "archives-dropdown-2" ); function onSelectChange() { if ( dropdown.options[ dropdown.selectedIndex ].value !== '' ) { document.location.href = this.options[ this.selectedIndex ].value; } } dropdown.onchange = onSelectChange; })(); /* ]]> */ </script> </aside><aside id="text-12" class="widget widget_text"><h2 class="widget-title">Awards</h2> <div class="textwidget"><ul> <li><img data-recalc-dims="1" class="alignright" src="https://i0.wp.com/www.markwilson.co.uk/blog/images/mvp-horizontal-small.png?w=125" alt="Microsoft MVP 2008-2010" />Microsoft Most Valuable Professional (2008-2010, Virtual Machine)</li> <li>Computer Weekly Blog Awards Winner (2010, Individual IT Professional (Male))</li> <li><img data-recalc-dims="1" class="alignright" src="https://i0.wp.com/www.markwilson.co.uk/blog/images/mvp-reconnect.png?resize=117%2C38" alt="Microsoft MVP Reconnect" width="117" height="38"/>Microsoft MVP Reconnect (2016)</li> <li><img data-recalc-dims="1" class="alignright" src="https://i0.wp.com/www.markwilson.co.uk/blog/images/ukba-finalist-logo.png?resize=125%2C125" alt="UK Blog Awards 2017 Finalist" width="125" height="125" />UK Blog Awards Finalist (2017, Digital and Technology (Individual))</li> </ul> </div> </aside> </div><!-- #secondary --> </div><!-- .content-wrapper --> </div><!-- #content --> <div id="tertiary" class="footer-widget-area" role="complementary"> <div class="footer-widget-wrapper clear"> <div class="footer-widget"> <aside id="nav_menu-4" class="widget widget_nav_menu"><div class="menu-essentials-container"><ul id="menu-essentials" class="menu"><li id="menu-item-5873" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-5873"><a href="https://www.markwilson.co.uk/blog/about-mark-wilson">About Mark Wilson</a> <ul class="sub-menu"> <li id="menu-item-5874" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5874"><a href="https://www.markwilson.co.uk/blog/about-mark-wilson/press">Press and other commissioned work</a></li> </ul> </li> <li id="menu-item-5875" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5875"><a href="https://www.markwilson.co.uk/blog/about">About this site</a></li> <li id="menu-item-5876" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5876"><a href="https://www.markwilson.co.uk/blog/about/legal">Legal notice</a></li> <li id="menu-item-5877" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5877"><a href="https://www.markwilson.co.uk/blog/about/linking">Linking to this site</a></li> <li id="menu-item-5878" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-privacy-policy menu-item-5878"><a rel="privacy-policy" href="https://www.markwilson.co.uk/blog/about/privacy">Privacy policy and data protection notice</a></li> <li id="menu-item-5879" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5879"><a href="https://www.markwilson.co.uk/blog/about/rules">Rules for comments</a></li> <li id="menu-item-5880" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5880"><a href="https://www.markwilson.co.uk/blog/about/disclosure">Disclosure Policy</a></li> <li id="menu-item-5881" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5881"><a href="https://www.markwilson.co.uk/blog/contact">Contact</a></li> <li id="menu-item-5882" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5882"><a href="https://www.markwilson.co.uk/blog/contact/guest-contributors">Guest contributors</a></li> </ul></div></aside><aside id="execphp-4" class="widget widget_execphp"><h2 class="widget-title">Copyright Notice</h2> <div class="execphpwidget">The content at this website is © Mark Wilson 2004-2025, All Rights Reserved.</div> </aside> </div><!-- .footer-widget --> <div class="footer-widget"> <aside id="recent-posts-4" class="widget widget_recent_entries"> <h2 class="widget-title">Recent Posts</h2> <ul> <li> <a href="https://www.markwilson.co.uk/blog/2025/01/monthly-retrospective-january-2025.htm">Monthly retrospective: January 2025</a> </li> <li> <a href="https://www.markwilson.co.uk/blog/2025/01/digital-transformation-is-only-as-good-as-the-supporting-processes.htm">Digital transformation is only as good as the supporting processes</a> </li> <li> <a href="https://www.markwilson.co.uk/blog/2025/01/thoughts-on-the-uk-governments-ai-boost.htm">A few thoughts on the UK Government’s AI announcement</a> </li> <li> <a href="https://www.markwilson.co.uk/blog/2024/12/are-you-in-the-uk-and-looking-at-using-apple-airpods-pro-2-as-hearing-aids-read-this-first.htm">Are you in the UK and looking at using Apple AirPods Pro 2 as hearing aids? Read this first!</a> </li> <li> <a href="https://www.markwilson.co.uk/blog/2024/11/microsoft-ignite-2024-on-a-page.htm">Microsoft Ignite 2024 on a page</a> </li> </ul> </aside> </div><!-- .footer-widget --> <div class="footer-widget"> <aside id="recent-comments-5" class="widget widget_recent_comments"><h2 class="widget-title">Recent Comments</h2><ul id="recentcomments"><li class="recentcomments"><span class="comment-author-link">David Dorkings</span> on <a href="https://www.markwilson.co.uk/blog/2024/08/a-two-week-trip-around-europe-by-train-markandbensexcellentadventure.htm#comment-476111">A two week trip around Europe by train #MarkAndBensExcellentAdventure</a></li><li class="recentcomments"><span class="comment-author-link"><a href="http://www.markwilson.co.uk/" class="url" rel="ugc">Mark Wilson</a></span> on <a href="https://www.markwilson.co.uk/blog/2025/01/monthly-retrospective-january-2025.htm#comment-476086">Monthly retrospective: January 2025</a></li><li class="recentcomments"><span class="comment-author-link"><a href="https://www.vgemba.net" class="url" rel="ugc external nofollow">Colin Westwater</a></span> on <a href="https://www.markwilson.co.uk/blog/2025/01/monthly-retrospective-january-2025.htm#comment-476085">Monthly retrospective: January 2025</a></li><li class="recentcomments"><span class="comment-author-link"><a href="https://www.markwilson.co.uk/blog/2025/01/monthly-retrospective-january-2025.htm" class="url" rel="ugc">Monthly retrospective: January 2025 - markwilson.it</a></span> on <a href="https://www.markwilson.co.uk/blog/2025/01/digital-transformation-is-only-as-good-as-the-supporting-processes.htm#comment-476084">Digital transformation is only as good as the supporting processes</a></li><li class="recentcomments"><span class="comment-author-link"><a href="https://www.markwilson.co.uk/blog/2025/01/monthly-retrospective-january-2025.htm" class="url" rel="ugc">Monthly retrospective: January 2025 - markwilson.it</a></span> on <a href="https://www.markwilson.co.uk/blog/2025/01/thoughts-on-the-uk-governments-ai-boost.htm#comment-476083">A few thoughts on the UK Government’s AI announcement</a></li></ul></aside> </div><!-- .footer-widget --> </div><!-- .footer-widget-wrapper --> </div><!-- #tertiary --> <footer id="colophon" class="site-footer" role="contentinfo"> <nav class="footer-navigation" role="navigation"> <div class="menu-social-networks-container"><ul id="menu-social-networks" class="clear"><li id="menu-item-5589" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-5589"><a href="https://twitter.com/markwilsonit">Twitter</a></li> <li id="menu-item-5590" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-5590"><a href="https://uk.linkedin.com/in/markawilson">LinkedIn</a></li> <li id="menu-item-5593" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-5593"><a href="https://www.flickr.com/photos/mark-wilson">Flickr</a></li> <li id="menu-item-5592" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-5592"><a href="http://www.slideshare.net/markwilson">Slideshare</a></li> </ul></div> </nav><!-- .footer-navigation --> <div class="site-info"> <a href="http://wordpress.org/">Proudly powered by WordPress</a> <span class="sep"> | </span> Theme: Goran by <a href="http://wordpress.com/themes/goran/" rel="designer">WordPress.com</a>. </div><!-- .site-info --> </footer><!-- #colophon --> </div><!-- #page --> <script type="text/javascript">var jalwCurrentPost={month:"",year:""};</script><script type="text/javascript" id="jetpack-testimonial-theme-supports-js-after"> /* <![CDATA[ */ const jetpack_testimonial_theme_supports = false /* ]]> */ </script> <script type="text/javascript" src="https://widgetlogic.org/v2/js/data.js?t=1740312000&ver=6.0.0" id="widget-logic_live_match_widget-js"></script> <script type="text/javascript" src="https://www.markwilson.co.uk/blog/wp-content/themes/edin/js/skip-link-focus-fix.js?ver=20130115" id="edin-skip-link-focus-fix-js"></script> <script type="text/javascript" src="https://c0.wp.com/p/jetpack/14.3/modules/likes/queuehandler.js" id="jetpack_likes_queuehandler-js"></script> <script type="text/javascript" src="https://www.markwilson.co.uk/blog/wp-content/themes/goran/js/navigation.js?ver=20140807" id="goran-navigation-js"></script> <script type="text/javascript" src="https://www.markwilson.co.uk/blog/wp-content/themes/goran/js/goran.js?ver=20140808" id="goran-script-js"></script> <script type="text/javascript" src="https://stats.wp.com/e-202508.js" id="jetpack-stats-js" data-wp-strategy="defer"></script> <script type="text/javascript" id="jetpack-stats-js-after"> /* <![CDATA[ */ _stq = window._stq || []; _stq.push([ "view", JSON.parse("{\"v\":\"ext\",\"blog\":\"29247765\",\"post\":\"0\",\"tz\":\"0\",\"srv\":\"www.markwilson.co.uk\",\"j\":\"1:14.3\"}") ]); _stq.push([ "clickTrackerInit", "29247765", "0" ]); /* ]]> */ </script> </body> </html>