Redirecting from one website to another

After almost 15 years working freelance, my wife is in the process of winding up her business, in preparation to start a new job in a few weeks’ time.

Unsurprisingly, that means a few IT requests for the (unpaid) IT Manager… one of which is to redirect the former company website to her LinkedIn profile.

There are a few ways to redirect websites – an HTML meta tag is often used – but with the variety of web browsers out there I wasn’t sure how current that technique is. Some would argue it’s better to sort out the re-write server-side but I don’t have that ability on this hosting platform.

Then I found a really useful thread on Stack Overflow – including this code snippet with HTML, JavaScript and fallback links:

Page Redirection

If you are not redirected automatically, follow this link to example.

That's in place now and working nicely.

Playing around with Azure Cognitive Services

I’ve been spending quite a bit of time recently getting more familiar with some of the advanced workloads in Microsoft Azure. After all, infrastructure as a service is commodity, so I’m looking at services that can be used to drive real value for my customers (more on that in another post…).

Yesterday, was our team meeting – with all but one of the risual Architects getting together, including some coaching from Microsoft around data and intelligence services. I was particularly taken with some of the demonstrations of Cognitive Services, so I set about getting some sample code to work for me…

Building the Intelligent Kiosk sample application

First up, I needed to install Visual Studio 2015 (Community Edition is fine) – it took a while, and needed admin credentials (so a visit to our support team) but eventually it installed on my PC.

Then, I downloaded the sample code for the “Intelligent Kiosk” from Github. F5 to build the solution told me that:

A project with an Output Type of Class Library cannot be started directly.

In order to debug this project, add an executable project to this solution which references the library project. Set the executable project as the startup project.

The Intelligent Kiosk sample code is a Universal Windows Platform (UWP) app, so I ignored that message, continued with the build, and tracked down the resulting IntelligentKioskSample.exe file. Trying to run that told me:

This application can only run in the context of an app container.

And StackOverflow told me that I need to sideload the app onto my PC, by creating a package to use locally.

Installing the Intelligent Kiosk sample application

The application package comes with a PowerShell script to install it (Add-AppDevPackage.ps1), but I found I needed to follow these steps:

  1. Enable developer mode in Windows 10 Settings
  2. Restart the PC
  3. Open a PowerShell session as an Administrator and run:



Set-ExecutionPolicy unrestricted


Now the app is ready and available via the Start Menu…

Running the Intelligent Kiosk sample application

  1. Get some API keys (for free) from the Microsoft Cognitive Services site.
  2. Run the Intelligent Kiosk app.
  3. Go to settings and paste in your API keys.
  4. Have some fun with the demos!
Demos in the Azure Cognitive Services Sample app
Intelligent Kiosk Demos
Azure Cognitive Services Emotion Detection
Emotion detection (web image)
Azure Cognitive Services Emotion Detection
Emotion detection (live image)
Azure Cognitive Services Face Detection
Face Detection
Azure Cognitive Services Mall Kiosk
Detect age and gender, recommend a product!

Further Reading

Restoring Adobe Lightroom from backup (on a Mac)

For well over a year now, my digital photography workflow has been in tatters. The Mac that I use for photo editing had some defective memory which corrupted the file system and the “genius” at the Apple Store reinstalled OS X. Data and application re-installation relies on me though, and it just hasn’t risen high enough on my list of priorities… until now.

So, I needed to:

  1. Re-install Adobe Lightroom (and the various other tools that I use).
  2. Restore my Lightroom catalog.
  3. Repoint Lightroom to the new location of my images (I’ve given up trying to maintain enough space locally and they all now sit on a Synology NAS, backed up to Microsoft Azure).

This post may be more for my benefit than for readers of the blog but you never know… someone might find parts of it useful.

Re-installing Lightroom

Re-installing Lightroom is reasonably straightforward and these are the steps I took:

  1. Install Lightroom 5 from physical media (My Mac has no DVD drive, so I needed to use a USB-attached DVD drive).
  2. Launch Lightroom from the finder.
  3. When prompted, enter the serial number (or elect to use it in trial mode). My copy of Lightroom 5 is an upgrade, so I was prompted for the previous serial number too (from Lightroom 3 in my case).
  4. Lightroom needs to create a catalog. Let it get on with it.
  5. Lightroom then detected that an upgrade was available (5.0-5.7) and it directed me to the Adobe website, from where I downloaded 5.7.1. Incidentally, I have a feeling that these updates are the full product, and I could probably have used this for the original installation. That may be one to try next time… [Update: that’s confirmed by Lightroom Queen.]

Restore the Lightroom Catalog

Nex up, restoring the catalog. Amongst the many excellent posts from the Lightroom Queen is one titled “How do I move Lightroom to a new computer”, which is kind of what I wanted to do, except in my case it’s “How do I move Lightoom from a backup of my computer to the currently-running version of my computer”.

Starting Lightroom had created two files in ~/Pictures/Lightroom called:

  • Lightroom 5 Catalog.lrcat
  • Lightroom 5 Catalog Previews.lrdata

I made some backup copies of these, then tracked down the last versions on my backup disk and copied them to the folder.

The Lightroom Catalog Previews file can be pretty large (mine was around 37GB), so this took some time…

Ideally, I would also have restored the following:

  • Preferences, from ~/Library/Preferences/com.adobe.Lightroom5.plist
  • Presets, from ~/Library/Application Support/Adobe/Lightroom/ (there are more details about these in Lightroom Queen’s Lightroom 5 Default Locations post).

Unfortunately, these were missing from my backup (I’d had some issues backing up the Library in single-user mode), though I did find the presets on another machine and may be able to restore them later…

Helping Lightroom to find my images

Whilst I was waiting for the Lightroom catalog to copy, I started preparing for when I open Lightroom using the new (old) catalog. In my original installation, my images were in ~/Pictures/Digital Camera Photos but now the images are on my NAS. So, I created an alias for the folder on the NAS and moved that to ~/Pictures, hoping that this would look to Lightroom as though my images are in the same location…

Unfortunately, although Lightroom was able to follow this alias (symlink), it was smart enough to work out that the folders within it were at a different location – and not on Macintosh HD. Thankfully it wasn’t too big a task to select each orphaned folder in Lightroom (displaying a ? over the folder name), right click and select Find Missing Folder. Once the catalog was re-connected with the images, the ! on each preview went away and I could view the full-resolution image. More details can be found in the Lightroom Queen article I referenced earlier.


So, Lightroom is re-installed and my photos are back where I need them. Now all I need to do is sort out my workflow… and there’s the small matter of picking the best images from the 50000-odd that I’ve taken since I started using a digital camera so I can print some albums. Because, sometimes, analogue media is good.

Preventing dnsmasq from running as a daemon (service) on a Raspberry Pi

Some time ago, I wrote a post about running a Raspberry Pi as a home infrastructure server (DNS, DHCP, TFTP, etc.). Now my Synology NAS is doing that for me (well, the DNS and DHCP at least – TFTP is less critical as my Cisco 7940 IP Phone just sits there taking up desk space most of the time) so I don’t need the Pi to provide those services.

Unfortunately, when I migrated DNS and DHCP a few months ago, I just stopped the service with sudo service dnsmasq stop so, after a power outage last week, when the Pi came back up, so did dnsmasq – and having two DNS/DHCP servers on the network produced some strange results (as might be expected…).

So, to do the job properly, I ran sudo nano /etc/default/dnsmasq and changed the ENABLED=1 line to ENABLED=0. That should prevent dnsmasq from running as a service but leaves the configuration intact if I ever need to bring it back online.

A quick sudo reboot and sudo service dnsmasq status is all that’s needed to check that dnsmasq stays disabled.

dnsmasq, not running

Making the Airfix A20005 Engineer Jet Engine Educational Construction Kit work

Airfix manufacture educational construction kits for both combustion and jet engines. The combustion engine is set A42509 and the jet engine is set A20005. My son was very keen to receive a jet engine for Christmas and he very quickly set to work building it.

I can’t recommend the kit because the instructions are poor (the black and white images don’t exactly help) but we got it working – sort of – in that it would whir and puff but the fans wouldn’t turn.

My son didn’t seem to mind, but it annoyed me that his new toy didn’t work. So, this afternoon, I set to work with my favourite search engine and found some really useful advice. Firstly, making sure the compressor turned freely (thanks to Phil Parker):

“By taking the red cone off the back and shoving the spindle back and forth once everything is in place you can put enough lash in to get really free turning.”

After following Phil’s advice I could blow on the blades and turn the compressor but it didn’t work under its own power. So, I found some more advice on the Unofficial Airfix Modellers Forum:

“[…] clean up the parts where you’ve removed them from the sprues […]”

My son set to work with a knife to remove a couple of bits of plastic on the main fans that were snagging. After this, we were able to run the engine with a “twist start” and after it had run for a while and loosened up some more, we were able to start it using the controls in the kit.

Looking at the reviews on Amazon, there are a lot of people struggling with this kit (we wouldn’t have bought it if my son hadn’t been so keen) but hopefully, this post will come up in someone’s searches and help them out…

Short takes: super-sized Windows desktop icons; LastPass multifactor authentication; MTP on Windows 10 1607

A collection of short posts that don’t justify their own blog post!

Fixing super-sized Windows desktop icons

Mostly, I don’t get on with track pads – there’s just something about them that I find awkward and before I know it the cursor is shooting off somewhere that I don’t want it to be, icons are being resized, or something equally annoying.

I recently found myself in a situation where an errant trackpad response to my hot hands hovering over it whilst typing had left me with super-sized desktop icons but I couldn’t work out how/why. Luckily this Lifehacker article helped me put things right – a simple Ctrl + mouse scroll got my icons back to the size they should be…

LastPass Multifactor Authentication

For many years, I’ve used LastPass as my Password Manager. I don’t normally reuse passwords and have gradually been increasing the complexity of my passwords but these days I don’t know the password for the majority of the sites I visit – LastPass fills it in for me. The one weakness in all of this though is my master password for LastPass. It’s a long and secure passphrase but what if it was compromised? Well, now I have multifactor authentication enabled for LastPass too. It’s really simple to set up (just a couple of minutes) and options include Google Authenticator as well as LastPass’ own Authenticator app.

MTP not working on Windows 10 anniversary update (1607)

My son has an Elephone P9000 smartphone, running Android Marshmallow.  He was struggling to get it working with our family PC to import his pictures until I found this forum post that explains the process. It seems that, on the Windows 10 Anniversary Update (1607), the Media Transfer Protocol (MTP) driver needs to be manually installed:

  1. Go to C:\Windows\INF
  2. Type “wpdmtp.inf” in search bar provided to the right of the address bar in Windows.
  3. Once you found it, just right click on it and select install. It will take a very few seconds.
  4. Connect your device to the PC.

Why LinkedIn endorsements are meaningless (and some ITIL Foundation exam study tips)

According to my LinkedIn profile, 25 people have endorsed me for IT Service Management skills. Until last month* my entire knowledge of IT Service Management came from watching Karl McCarthy present at the Northampton branch of the BCS, which does leave me wondering about the value of LinkedIn endorsements…

…still, over the last few weeks, I have been learning about IT Service Management (or at least, about the IT Infrastructure Library, usually abbreviated to ITIL®).

Those who follow this blog will have seen my recent 6-part series of preparation notes as I studied for my ITIL Foundation certification (see the end of this post) and my efforts were clearly worthwhile, as I passed the exam today. A non-disclosure agreement prevents me from commenting on the exam itself but I will highlight the resources that I used:

So, that’s another certification in the bag (and one of my 2016-17 objectives ticked off…). Now time to put the theory into practice, which for me will mean some more thinking about service architecture in the course of my work.

I was going to continue this blog with some notes from Karl’s 2015 talk on “IT Service Management – Putting the theory into practice” but the notes appear to have gone AWOL. Maybe that’s one to save for another day…

* Putting aside anything I’ve picked up from 20+ years working in IT.

Further Reading

This post and those linked above (which were written and published prior to taking the exam, so they do not breach any NDA). are intended as an aid and no guarantee is given or implied as to their suitability for others hoping to pass the exam.

ITIL® is a registered trademark of Axelos limited.

Preparation notes for ITIL Foundation exam: Part 6 (continual service improvement)

Last month I started a series of preparation notes as I study for my IT Infrastructure Library (ITIL®) Foundation certification:

This post continues by looking at the topic of the fifth and final stage in the ITIL service lifecycle: continual service improvement (CSI).

Continual Service Improvement

Generally, the performance of a service can be improved upon – that’s where CSI comes in:

“Focuses on increasing the efficiency, maximising the effectiveness and optimising the cost of services and the underlying ITSM processes.”


  • Kaizen:
    • Japanese term that means continuous improvement (literally, “change good”). Small steps.
  • IT Governance:
    • Defining expectations, assign power, verify performance. Has everything been done that should be.
    • Enterprise (business); Corporate (regulatory); IT (management, rules, regulations and framework of IT department).
  • CSI register:
    • Database/record of improvement opportunities. Part of the Service Knowledge Management System (SKMS).

“If you can’t describe what you’re doing as a process, you don’t know what you’re doing” [William Edwards Deming]

Seven Step Improvement Process:

  1. Identify the strategy for improvement.
  2. Define what you will measure. (Because you can’t control what you can’t measure!)
  3. Gather the data.
  4. Process the data. Turn it into information.
  5. Analyse the information and data. Identify actions.
  6. Present and use the information. Changes to be made.
  7. Implement improvement.

Deming cycle (actually it’s not Deming’s work – but he’s often credited):

  • Plan.
  • Do.
  • Check. On progress.
  • Act. Maybe need another iteration…

The CSI Approach:

  1. What is the vision? Business goals, etc.
  2. Where are we now? Establish baselines.
  3. Where do we want to be? Set target (measurable).
  4. How do we get there? Process improvement – gap analysis, defined goals.
  5. Did we get there? Measure and check metrics.
  6. How do we keep up the momentum? Look to go around again…


That’s the end of this series – by the time you read this, I’ll be on my way to the exam testing centre…

40 questions, multiple choice, 60 minutes. £168.

Fingers crossed, creating these notes will help me – and I hope they help you out too.

These notes were written and published prior to sitting the exam (so this post doesn’t breach any NDA). They are intended as an aid and no guarantee is given or implied as to their suitability for others hoping to pass the exam.

ITIL® is a registered trademark of Axelos limited.

Preparation notes for ITIL Foundation exam: Part 5 (service operation)

Last month I started a series of preparation notes as I study for my IT Infrastructure Library (ITIL®) Foundation certification:

This post continues by looking at the topic of the fourth stage in the ITIL service lifecycle: service operation.

Service Operation

Service operation has both processes and functions:

  • Processes (the “how”):
    • Event Management.
    • Incident Management.
    • Problem Management.
    • Request Fulfilment.
    • Access Management.
  • Functions (the “who”):
    • Service Desk.
    • Technical Management.
    • IT Operations.
    • Application Management.

Goals of service operation:

“Maintain business satisfaction and confidence in IT through effective and efficient delivery and support of agreed IT services.”

(i.e. for the services you have agreed to provide)

“Minimise the impact of service outages on day-to-day business activities.”

“Ensure that access to agreed IT services is only provided to those authorised to receive those services.”

(i.e. security)

There is a continuous balancing act/conflict between:

  • Internal IT vs. external business services.
  • Stability vs. speed of response.
  • Cost of service vs. quality of service.

Service Desk

Not just incident/problem management but all of the processes – fulfilling requests, managing access and communicating about events.

ITIL recognises four service desk structures :

  • Local service desk:
    • Co-located with user community.
    • Local knowledge/language.
    • Expensive (multiple desks).
    • Possibly less knowledge transfer and inconsistent service.
  • Centralised service desk:
    • All locations contact a central desk, possibly with second-line behind it and various specialist teams (e.g. for technical management, application management, request fulfilment, third party).
    • Reduces operational costs; simplified contact.
    • Lose local knowledge and possibly language barriers.
    • Single point of failure.
  • Virtual service desk:
    • Looks like centralised but resources in different locations.
    • May route requests to teams in different locations (e.g. server support) – match skills to requirement.
    • High rollout costs; inconsistent service and reporting; hard to monitor staff.
    • Knowledge exchange may be difficult with remote staff.
  • Follow-the-sun service desk:
    • Route calls to where people are awake, e.g. 3 desks for Asia, EMEA, Americas.
    • Works well in global scenarios.
    • Hand over to another location at end of shift so knowledge transfer is improved.
    • Expensive to maintain, needs technology to ensure connection; language constraints.
    • Staff need business understanding as well as communications skills.

Increasingly, self-help service-desk functionality is part of the solution (e.g. automated phone service, direction to websites, etc.).

Technical, IT Operations and Application Management

Technical Management:

“Helps plan, implement and maintain a stable technical infrastructure to support the operations business processes.”

(Managing Technical Infrastructure, Networking, etc.)

IT Operations Management:

“Defines the department, group or team of people responsible for performing the day-to-day operational activities.”

(Managing operations – control: monitoring, backups, etc. – facilities, etc.)

Application Management:

“Working together with Technical Management, ensures that the knowledge required to design, test and manage IT services is there for resources to use.”

(Managing the applications within their lifecycle.)

Together these functions ensure that there is a stable balance for services to provide to customers.

Incident and Problem Management

An incident:

“Concentrates on restoring unexpected degradation of services or disrupted services.”

An incident is an unplanned interruption or reduction in quality of service.

A problem:

“Involves root cause analysis to determine underlying causes of incidents”

Looking at a series of incidents, possibly a trend.


  • Escalation:
    • Assign additional resources to meet service level targets of customer expectations.
    • Types:
      • Functional: transfer incident to technical team with higher expertise.
      • Hierarchical: go to a senior level of management.
  • Impact:
    • Measure of the effect of the incident on the business process.
  • Incident (Major):
    • Unplanned interruption to IT service, or reduction in quality.
    • Major is highest category – total service disruption.
  • Resolution:
    • Action used to repair root cause of incident or problem.
  • Urgency:
    • How long until the incident or problem impacts the business.
  • Workaround:
    • Reduce/eliminate the impact of the problem, before a resolution is in place.
  • Known Error Database (KEDB):
    • Database of known errors. Part of the Configuration Management System (CMS).
  • Proactive Problem Management:
    • Identify problems that will be missed otherwise, and take action before they happen.
  • Problem (Major):
    • The cause of one or more incidents.
  • Root cause:
    • The underlying or original cause of an incident or problem.
  • Threat:
    • Anything that might exploit a vulnerability.
Incident Management

“To restore normal service operation as quickly as possible and minimise the adverse effect on business operations, ensuring agreed levels of service quality are maintained.”

Diagnosis and getting back up to speed as quickly as possible.

Open-In progress-Resolve-Close broken into 9 steps:

  1. Identification. Service desk call, or monitoring leads to an incident.
  2. Logging. Record all incidents (with a reference number).
  3. Categorisation. Type of incident for effective escalation (and reporting).
  4. Prioritisation. Run incidents through a matrix. Impact + Urgency = Priority.
  5. Initial diagnosis. First line scripts, etc.
  6. Incident escalation. VIPs may get more attention!
  7. Investigation and diagnosis. Identify the error, look for events that may have triggered the incident.
  8. Resolution and recovery. Apply and test fix (in a controlled manner).
  9. Incident closure. Ensure users are satisfied, etc. Document into problem management and KEDB.
Problem Management

“To manage the lifecycle of all problems from first identification through eventual removal. It seeks to minimise the adverse impact of incidents and problems and to proactively prevent recurrent of related errors due to incidents.”

Root cause analysis (RCA) is at the heart of problem management.


  1. Problem detection.
  2. Problem logging.
  3. Problem categorisation.
  4. Problem prioritisation (urgency + impact).
  5. Diagnosis (leading to RCA).
  6. Workarounds.
  7. Raising a “known error” (KEDB).
  8. Problem resolution.
  9. Problem closure. Major problem review to understand lessons that have been learned for the future (what went well, what didn’t?)


  1. Trend analysis – look for trends in incidents.
  2. Root cause analysis.
  3. Targeted prevention – cost benefit analysis and target areas that need most support, co-ordinated with availability and capacity management.

Event and Access Management

Event Management: How to make sure that the configuration items that are changing during rollout of a service continue to function.

“Event Management’s purpose is to manage events through their lifecycle. The lifecycle is detecting events, making sense of them and determining the appropriate control action.”

Access Management: Who gets access to a service or information necessary to continue a service.

“Access Management’s purpose is to provide the right for users to use a service, while preventing access to non-authorised users.”


  • Alert: a notification that an item needs to be changed (e.g. a threshold is met).
  • Event: any change of state in a configuration item (e.g. software patching).
  • Rights: who can access a service or information.
Event Management

Dealing with configuration items – assets used to deliver IT service. Also environmental conditions, software licencing, performance metrics.

  • Informational events – logged.
  • Warning events – e.g. meeting a threshold.
  • Exception events – e.g. malware alert, CPU spike,
Access Management
  1. Request access.
  2. Verification. Verify that the person requesting access is who they say they are.
  3. Provide rights.
  4. Monitor identity status. May change status (e.g. if no longer subscribing to a service).
  5. Logging and tracking access. Locking for anomalies.
  6. Removing or restricting rights. e.g. after security breach or when no longer have permission to access the service.

Request fulfilment

“Request fulfilment helps maintain user and customer satisfaction by managing the lifecycle of all service requests from users.”


  • Request Model. Documenting the activities necessary to fulfil a request, associated timescales, etc.
  • Service Request. Formal request for service – open a ticket – that can be managed. Known and planned for.

Service requests to fulfil are pre-defined (in the Service Knowledge Management System – SKMS):

  • Menu selection. To find the right service (e.g. request a new laptop).
  • Request tracking. System to track the request as it moves through the lifecycle.
  • Financial approval. May not be needed for some services if there is no fiscal impact (e.g. a password reset).
  • Other approval. Compliance, regulatory impact, etc.
  • Fulfilment. Service desk takes action.
  • Closure. Once the service request has been completed. Log into SKMS.

Some services may be handled in an automated fashion – self-service/self-help.


The next post in this series will follow soon, looking at continual service improvement.

These notes were written and published prior to sitting the exam (so this post doesn’t breach any NDA). They are intended as an aid and no guarantee is given or implied as to their suitability for others hoping to pass the exam.

ITIL® is a registered trademark of Axelos limited.

Restart a Raspberry Pi Zero with a paperclip

One of the “limitations” of a Raspberry Pi is that it doesn’t have an on/off switch. That’s not really a problem – once it’s shut down, a power cycle to the socket (switch on/off) will allow it to boot up but there is another way (ignoring the purchase of expensive in-line power switches*, or daughter boards to make the Pi pick up an infra-red remote control signal).

Alex Eames blogged details to fit a reset switch to a Raspberry Pi (which I may well do) but what about the Raspberry Pi Zero? My son uses one of these plugged into our TV to practice his Python programming and it’s plugged into a USB wall socket so a power cycle restarts several USB devices or alternatively, cables need to be pulled.

Well, a bit more reading led me to the idea of shorting GPIO pins 5 and 6, and then some experimentation showed me all I have to do it touch pin 5 with a bent paperclip to turn on the Pi!

So, shutdown as normal from the OS. And startup with a “hotwiring” trick!

I’ve since found that the Pi Zero can also be started by shorting the two pins labelled “Run” next to GPIO 37 and 39 (connect the pins and then disconnect again) – so it’s also possible to fit a switch in a similar manner to Alex Eames’ advice for the full-size Pi.

One thing to be aware of if a switch is fitted is that it can be used to turn on the Pi but shouldn’t be used to turn it off as it just kills the power and could lead to software corruption or even hardware damage.


*Incidentally, whilst writing this post I came across an inexpensive in-line USB switch. I haven’t tested one but some might find it useful, with the same caveat as the DIY option…