My Mazda Experience

My first move after getting a better paying job I thought it was time to upgrade from my old 07 Mazda 3 SP23 which had been just a wonderful car to something a bit newer with better fuel economy. Having such great luck with my Mazda 3 I went no further than a second hand Mazda 6 2.2 Turbo Diesel from 2013.

Firstly, I loved the car. It drove great with excellent acceleration from the engine with an amazing 420NM of torque and the fuel economy was just wonderful. The car was originally my Grandfather’s and as such I know it was driven well and always service on time by the Mazda dealer it was purchased from brand new. With only 50,000KM on the clock, I assumed it would be a reliable car for many years. It seemed like the perfect purchase.

I had done my research and found a few people complaining of issues with the DPF and rising oil levels, however that was mainly an issue with cars which were never driven long enough for the DPF to successfully regenerate. My driving style of ~80KM and 2h round trip to work and back would be pretty much ideal for keeping the DPF happy and clean.

However, the ownership experience took a bit of a negative turn at around 60,000KM when I dropped it off for its scheduled service. I was informed that the car required two new turbos and a vacuum pump for the brakes. To me it seemed way to early in it’s life for any significant failures and here I was presented with no less than three. To my amazement and without any prompting, Mazda offered to foot the bill for everything, and even provide me with a loan car for the duration of the repair (about four weeks). While, I was please I wouldn’t be out of pocket for the failure, it did worry me a little bit as it felt like they knew something I didn’t.

So at 60,000KM I have two new turbos and a vacuum pump and a clean bill of health from Mazda. Everything will be fine right? Not quite.

After doing some research I was able to find that I wasn’t alone in this mess. From what I could gather, these engines suffered considerable oil dilution, where diesel gets into the engine oil as a result of the DPF regeneration process. This happens to some extent with all Diesels with a DPF, however Mazda seem to have suffered from it more than others. I also found that Mazda claimed to have solved the problem with a software update.

Now knowing this, I religiously checked the oil in my car. The dipstick on almost any diesel with a DPF will have a low, full and overfilled mark (usually an X on the dipstick). So I made it part of my weekly routine to check the oil level in the car every Saturday morning when I got back from a short drive to the gym. As predicted, the oil level did rise slightly between service intervals, but never got anywhere near the overfilled mark.

This carefree driving continued from 60,000KM to almost 96,000KM where suddenly I discovered the oil was starting to rise at an alarming level. By the time the car hit 98,000, only 2,000KM before the next service was due, the oil was properly at the overfilled mark. Consulting the manual for the car said the engine oil must be replaced if it reaches that mark. Not wanting to fork out for two new turbos again, I booked it into Mazda to have the oil changed.

So after an oil change, not for free I must add, I started quizzing the dealer about what had changed. Something wasn’t right surely. Firstly they denied there was a problem and then when pushed harder they said they had updated the ECU and the problem was fixed. Since they hadn’t done the rest of the service, I had to put it in again at 100,000 for it’s scheduled service. The oil was once again changed.

By 103,000KM I can tell something is very wrong with the car. The oil is now millimeters from the overfilled mark only 3,000KM since the last service. In addition, I think there was a change in the exhaust smell, but that may have been my paranoia playing into it.

At 103,500 I was driving down the motorway and noticed the car had gone into DPF regeneration mode. It’s quite easy to tell on the Mazdas because the iStop light goes out the moment the regen starts. To my amazement I looked in the rear view mirror to see me leaving clouds of white smoke behind me, something which had certainly not happened before. There was enough smoke that I would have noticed it. To me this felt very much like an over fueling issue as the white smoke was almost certainly unburnt diesel. So back to the dealer it goes with the oil now at the overfilled mark.

I explain the issues to them in great detail and their only response is that the oil shouldn’t have risen that quickly. Instead of looking into the problem they simply replaced my engine oil free of charge and gave me back the car. At this point, I’ve lost all confidence in the dealer and my car. There is clearly a problem, but they just fixed the immediate issue with the oil and gave it back to me to drive. Not quite sure what the plan was, whether they were going to wait for something to seriously go wrong before looking into it.

By this stage, I’d had enough of worrying about this car and it’s impending failure. I’d also had enough of the Mazda service departments oil changes and in my opinion placebo software updates to my ECU. In addition, I was planning on doing a long road trip in the near future and if I could now only get 3,000KM between oil changes that just wasn’t going to work.

At 104,000KM I traded the car in on a Hyundai i30 N Line and I would’t look back. It doesn’t have quite the refinement the Mazda had and it certainly doesn’t have the same fuel economy. But it does have more power and best of all, no DPF in sight. If I get more than 100,000KM without issues, I’ll be happy. More on this amazing car when I have time to write.



Windows Licence Types

During a computer rebuild, I needed to determine if my copy of Windows 10 Pro would remain activated after some serious hardware modifications. During the process, I learned there are three main types of Windows licences and that they are generally bound to the motherboard in use. Therefore, if you change the motherboard of the computer, Windows will need to be reactivated. Whether or not it will reactivate without a fuss depends on which of the three licences you are using.


You likely get a retail version of Windows when purchase it as a stand alone product either from either a shop or the Microsoft store. Retail Windows licences can be transferred between computers, as long as the licence is only in use by one computer at a time. Therefore, you can make as many hardware modifications as you like and Windows will still activate successfully.


OEM Windows licences are generally supplied with computers from the manufacturers, however it is possible for someone to purchase the licence from a shop. If purchased separately they are usually available for a reduced cost. These licences can only be used on the computer they were originally activated on, therefore replacing the motherboard on one of these systems will cause Windows to deactivate and refuse to reactivate.

Another interesting point arises for the OEM licence if you were to purchase one from a reseller. The person or company who purchases the licence takes responsibility for providing support for the activation process. Therefore, if you buy one of these licences and have problems with activation, Microsoft are likely to tell you to contact the OEM (which is you) for assistance. Alternatively, with the full retail version, Microsoft will provide support for any problems encountered with activation.


These licences will not impact your average home user, as they are provided to organisations to use on the computers they own. The cannot be re-sold and if the computer changes ownership, the licence technically needs to be removed.

Determine Your Licence Type

Like me, many of you likely do not know what kind of Windows licence you possess. Luckily, there is an easy command which can be run from the Window’s command prompt, or PowerShell, which will show you. Just enter slmgr -dli and a dialogue box will open showing you the licence type.


Alienware Laptop VPN Issues

My Alienware laptop seemed unable to connect to any VPNs using the Windows inbuilt VPN feature. I had tested the exact same VPN on another computer and it worked correctly.

I ran through a number of different troubleshooting methods found on the Internet, including trying a number of different authentication settings suggested. However, none of these methods were successful.

As all of these methods appeared to solve most of the problems other people were having, I started to think the problem was more specific to my system. To test this theory I removed some of the additional networking features on my system including:

  • Uninstalling the OpenVPN TAP adapter
  • Disabling Hyper-V on the system to remove the additional network adapters it added

However, neither of these methods solved the problem. Finally, I uninstalled the “Killer” network drivers and software installed on the laptop from the factory to support the Killer WiFi and Ethernet cards installed in the laptop. After uninstalling the software, the VPN was suddenly able to connect. I have no idea why this software was causing the VPN to fail, however uninstalling it fixed the problem and does not seem to have impacted the performance of my networking hardware.

Audio Books for the Vision Impaired

My Great Aunt has always been an avid reader of books. However, with the onset of Macular Degeneration, her sight has degraded to the point where she can no longer read. Once this occurred, I began searching for a way to continue reading the books she wanted without her sight.

A Flawed Solution

An immediate solution that came to mind was to get her audio versions of the books she wants to read. A family friend made me aware of a organisation known as Vision Australia that supplied small audio players which could be used to listen to audio books. These players made use of a 3G cellular connection to connect to a library of audio books where they can pick a book and listen to it on demand. This seemed like a brilliant idea, however the implementation turned out to be flawed.

Firstly, The Player…

The device itself appears to have been adapted from an old CD player of some kind and unfortunately the buttons had not been modified in any way. This in my opinion made it unnecessarily hard to operate. I won’t go into too much detail, however the basics are that myself, with a Bachelor degree in IT and perfect vision, took an amazing amount of time working out how to use it. I then had great difficulty showing my Great Aunt how to operate it, compounded by the fact that there were no clear markings on the buttons which she could feel.

Now, The Library

An additional problem stems from the amount of time they allow you to lease a book from the library for. Many of the audio books my Aunt was interested in listening to lasted for more that 20 hours. However, the leases on them were only available for one or two weeks, and in many cases a shorter time frame than that. Even listening for two hours a day didn’t allow her to complete many of the books. At the end of the lease period, the book was simply deleted, leaving her unable to finish them.

A Solution that Works

I’m not claiming that this solution is perfect or will work for everyone, however it does allow my Great Aunt to start and stop listing to a book independently. I created her account, which is an audio book platform owned by Amazon and has an extensive number of books available. I then installed the Audible app on an old iPad I had laying around. I also found a pair of headphones which have the play/pause button located on the wire going up to one of the ear pieces.

I purchase the book she wishes to listen to and using the app download it to her iPad and start it playing. She can now pause the book by running her hand up the headphone wire until she finds the button, and the same procedure can be used to play the book again. While this method does require me to manually download the books on her iPad, it only needs to be done every three to four weeks on average. For the rest of the time she is able to listen independently at the touch of a button.


Turn Off Windows 10 Annoying Features

Recently, I performed a clean install of Windows 10 Home on a new computer I built. Having mostly used Professional versions of Windows 10 or Windows 7, I was surprised with a number of inconvenient and even annoying ‘features’ that are automatically enabled in Windows 10 Home.

While some of these ‘features’ were only slight annoyances, such as advertisements in the start menu, many others have impeded in its usability. Using a number of registry tweaks and a third party Group Policy editing tool I have been able to disabled many of these features, for a more refined Windows experience.

This list represents the ‘features’ I have managed to disable at the moment. I will continue to update the list as a discover and disabled additional ones.

Automatically Downloading Apps and Games

To my immediate surprise after installing Windows, I found my fresh installation had a number of games and other apps installed.  As they did not consume a great deal of space, their installation was not a huge problem. However, I did not see the need for them to be installed when I was never going to use them.

After uninstalling the apps, I thought the process was over, however, the next time I opened the start menu, the same apps had been downloaded and installed again. Upon researching the issue, I found Windows automatically installs some apps and even reinstall them after to manually remove them.

To stop this behavior I found the following edit of the registry to be effective:

  • Open Registry Editor
  • Navigate to “HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager”
  • Open the SilentInstalledAppsEnabled key and change the value to 0

App Suggestions in the Start Menu

Another feature I decided to remove was app suggestions appearing in the start menu. Essentially apps you could download from the store appeared in a small suggestions section of the start menu. The following registry tweak prevents them from appearing:

  • Navigate to “HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager”
  • Open SystemPaneSuggestionsEnabled and set the value to 0

Replacing Shutdown Option with Update and Shutdown

This setting appears to be a good idea at first to ensure Windows updates are installed regularly. However, in practice I found it to cause a significant problem. One time, while working on the system, I found it to be behaving abnormally. In my experience, this was the type of behaviour that could be overcome by a reboot. However, I could not quickly reboot the computer as updates were available. My ‘restart’ and ‘shutdown’ options had been replaced by ‘update and restart’ and ‘update and shutdown’. Considering all I wanted to achieve was to quickly reboot the computer, neither of these options were acceptable.

To change this behaviour, you will need to edit the local Group Policy on your computer. Unfortunately, Windows 10 Home does not come with Group Policy editor inbuilt you will need to find a third party tool that allows you to edit the group policy.  Once you have a Group Policy editor installed, navigate to the following location and enable the policy

  • Windows Components > Windows Update > Do not display ‘Install Updates and Shut Down’ option in Shut Down Windows dialog box

Automatic Reboot for Updates

Another feature of Windows 10 Home that is difficult to like is the automatic reboots for updates. Essentially when an update is available, the computer can automatically reboot itself and install it if the user is inactive for some time. I found that while it attempted to save the state of everything you had open, it often didn’t work in practice.

To disable this feature, you will again need a Group Policy editor installed and navigate to the following Policy

  • Windows Components > Windows Update > Configure Automatic Updates
  • Enable the Policy
  • Selection an option that suits you
    • I prefer option number three “Auto download and notify for install”
    • This option automatically downloads the updates, but ultimately allows you to decide when to install them

Enable Control-Alt-Delete on Login Screen

I find having this feature enabled can be useful for Windows 10 machines when managing them using team viewer. The standard login screen can be difficult ‘slide up’ to unlock when the remote connection is not very strong. Most remote management systems provide a button to send the CTRL+ALT+DEL key sequence to the remote machine.

It can be enabled or disabled using a group policy editor at the following location:

Computer Configuration\Windows Settings\Security Settings\Local Policies\Security\Interactive logon: Do not require CTRL+ALT+DEL

UPS Power Failure Alert

For my server I am using an APC uninterruptible power supply for protection against blackouts and other power related issues. I built on my previous projects with Microsoft Flow to get a notification on my phone when my server loses mains power and when it regains it.


The software provided by APC with the UPS allows for basic functionality when power was lost, such as shutting down the computer before all battery power was exhausted. However, it did not provide any more advanced features, such as being able to run a script when mains power was lost or restored.

Fortunately, the software was creating application event logs when these conditions occurred. After some research and trial and error, I was able to deduce an application event with an event ID of 174 was produced when the mains power failed and an application event with an event ID of 61455 was produced when the mains became available again. (Both of these event logs came from the source of “APC UPS Service”)

Scheduling the Alert

To generate a notification in response to one of these events, I created a simple task in Windows inbuilt task scheduler. This task looked for the specified event ID and as an action run my notification PowerShell script that I created previously (see the previous blog post for details about the script).

The procedure goes as follows:

  • Open task scheduler in Windows and click the link to create a basic task
  • Give the new task a name and description and click the next button
  • For the trigger, select the option “When a specific event is logged”
  • Configure the event log for task manager to look for
    • Select “Application” as the log type from the drop down menu
    • In the source box enter “APC UPS Service”
    • In the event ID enter either “174” for a notification on mains power failure or “61455” for a notification on mains power restoration
  • Configure the action to be performed when this task runs
    • Select the radio button for “Start a program”
    • In the “Program/script” section, enter “powershell.exe”
    • In the “Add arguments” enter the full path to the PowerShell notification script created earlier.
    • Note: It is very important that you provide “powershell.exe” as the program to start. If you simply put the path to your script in this box, your PowerShell script will be opened in notepad when your task runs and not actually executed. This is just a feature of Windows and you will notice the same action if you double click on your PowerShell script.
  • Optionally repeat the process for the other event ID so notification will be generated for both power failure and power restoration.

JSON Web POST with PowerShell

An alternative to my previous method of using Python to make web requests for the notifications is to use PowerShell. The main advantage of using PowerShell is that it is included with Windows systems and therefore does not require the installation of any other packages. Additionally, it is far easier to trigger the script to run using the likes of Window’s task scheduler, allowing notifications to be triggered in response to events on the Windows system.

My Script

  • The first task is to once again define the URL from which the requests will be made
    • This can be found in the Flow interface under the “When HTTP request is received section” and will be unique for each flow
    • In PowerShell, variables are assigned and referenced with the “$” sign in front of them
    • $URL = "
  • Next I define a “Parameters” object to contain the parameters I want to include in the notification
    • Note: The syntax used here is to create a PowerShell object, and not JSON. It will need to be converted to JSON in the next step
    • $Parameters = @{
       "Source"= "Computer"; 
       "Message"= "42";
    • Again I am using “Computer” as the source and “42” as the message, however this will be where you can add your own custom information.
  • Next we get PowerShell to take the parameters object we just created and turn it into a JSON object
    • $JSON = $Parameters | ConvertTo-Json
    • The result is stored in the “JSON” variable
  • Finally, we perform the actual web request
    • Invoke-WebRequest -Uri $URL -Method POST -Body $JSON -ContentType 'application/json'

JSON Web POST with Python

In an earlier post, it was outlined how to setup a Microsoft Flow workflow to generate a notification on a phone when a web request was made. This post will outline how to create such a web request using the popular scripting language Python.

Install Python

  • Ensure that Python (version 3) is installed on the system
  • During this process it is important to ensure that Python is added to the system PATH variable
    • This allows Python to be called from the command line
    • Having this ability will make it significantly easier to schedule this script to run when events occur, which is likely to be the role of the script.
  • After python is installed, we must install the “requests” library
    • This is the library that we will use to perform the actual request
    • Note: It is possible to perform the POST request without the “requests” library, however I believe it to be the cleanest method.
    • To install “requests” open a command line and enter “pip install requests”
      • If you get an error running this command, it is likely that Python was not added correctly to the system’s PATH variable

The Code Itself

  • First we need to import the “requests” library we just installed into the Python script
    • This is done with the following code:
    • import requests
  • Next we need to define the URL to which the request will be made
    • This can be found in your workflow you created previously and will be unique to each Flow
    • URL = "
  • Next we need to define the JSON that will be sent in the request to provide the parameters to our notification service
    • For my notification I only had two parameters, a source and a message
    • For the purpose of this example I have set the source parameter to be “Computer” and the message parameter to be “42”
    • Parameters = {"Source" : "Computer", "Message" : "42"}
  • Finally we perform the actual request from the server
    • For the request to execute, we need to provide it with the URL and parameters we defined earlier
    • Request =, json = Parameters)
  • After running the code you should now get a notification on your phone
  • By changing the values contained in the parameters section you can change the contents of the messages to whatever you wish.

Device Notification with Microsoft Flow

For a couple of IoT projects I’ve been working on, I wanted to allow scripts to trigger a notification on my phone. I evaluated a number of solutions, but many of them were paid services that only served that particular purpose. Additionally, many of them did not include the ability to customise the notifications.

A solution presented itself when I began to look at creating workflows with Microsoft Flow, which is included in an Office 365 for business subscription. Microsoft Flow basically allows for a trigger event to cause a number of actions. In this case there was a trigger that could be activated when a web request was made to a specific URL and one of the actions was to trigger a notification on a phone. Additionally, by including a JSON POST in the request, it was possible to modify the content of the notification. As a point of interest you could also send an email with almost the same setup if it would better suit the application.


  1. Login to your Office 365 portal (
  2. Click on the Flow link
  3. Click the button for “Create from blank”
  4. Search for the “When a HTTP request is received” trigger and add it to the flow
  5. Create the JSON Schema
    1. This is probably the most complicated part of the whole procedure as you need to define the JSON structure that will be used to provide parameters for your notification
    2. For my notification system, I only wanted to provide two parameters:
      1. A source field for the device or application sending me a message
      2. A message field for the contents of the actual message
    3. The JSON structure for these two fields looked likes the following:
      "type": "object",
      "properties": {
      "Source": {
      "type": "string"
      "Message": {
      "type": "string"
    4. Note: You could create a far more advanced structure if you wanted more information in your notifications
  6. Now the trigger is fully configured you will need to add an action
    1. In this case, we will add the “send me a mobile notification” action
    2. It’s important to note that this requires you have the Microsoft Flow app installed on your mobile phone.
  7. Next we need to configure the notification action
    1. The only field we need to populate is the Text field which will be displayed as the body of the notification
    2. We could add an arbitrary text string into the field if we only ever want one message to be displayed, however we can reference the variables we created earlier in the JSON Schema to make the message more meaningful.
    3. For example with regard to my JSON schema, I created the message “Source has said Message”
      1. You will notice that the variables outlined in the JSON schema will appear as different symbols in the text, confirming that flow has recognised them as the variables above.
      2. It should look something like the following:Capture
      3. When the notification is generated the source and message placeholders will be replaced by the information you provide in the web request.
  8. Finally save the workflow
    1. This will generate a unique URL that you will make a web request to and will then trigger the notification.
    2. The whole flow should look something like this one:Capture

You will now have a working notification system. Simply install the flow app on your phone, sign into it using the same Microsoft account and make a request to the specified URL. A future blog post will go into detail about how to make a web request and provide the necessary JSON parameters using a number of scripting languages.

New Hosting Provider

For over three years this blog was hosted on a shared server offered by BlueHost. However, six months ago I lost control of the admin account. From what I could gather an adversary had been able to socially engineer BlueHost support into changing the administrator email address to one under their control. Once this had been achieved, they were able to perform password recovery and gain access to the admin account.

Once they had access, they shutdown the server running my blog and launched a high power instance which worked up a considerable bill. After much pain I managed to re-gain access to the admin account and removed the powerful instance. Luckily, BlueHost refunded the cost of the powerful instance.

After this occurred I started looking for other methods of hosting my blog. Initially, I looked at hosting on Amazon Web Services. This method would have given me the best control over the blog as I could create a small Linux EC2 instance and then install WordPress to run my blog. However, this method would have also require me to maintain the site and server, a task I don’t believe I currently have time for.

The solution to this problem was brought to my attention by one of the security podcasts I often listen to “Security Now”. One of the sponsors of the show is which provide you with a WordPress site of your own, that is fully maintained by them. Additionally, their pricing was very reasonable and included the costs of registering the domain.

I created this blog on and will now have the fun of moving my domain registration and blog content over. Hopefully it won’t be too hard.

Additionally, the security of my blog appears to be sufficient. The site supports two factor authentication using either my phone or an authenticator app. I elected to use the authenticator app to eliminate the risk of the SMS message begin intercepted or the telecommunications provider being socially engineered and allowing a SIM swap. Another security benefit provided is that my blog is now running over HTTPS, resulting in my login information being encrypted when it is sent to the site. Hopefully, these measures will be enough to keep the site safe this time.