Jamie Balfour

Welcome to my personal website.

Find out more about me, my personal projects, reviews, courses and much more here.

Jamie Balfour'sPersonal blog

At 30 years old, I'm hardly a young driver, but I have at last passed my driving test.

I first started to learn in 2013 when I was 21 but unfortunately had to stop due to issues with my instructor. My next instructor, Miranda, was friendly, supportive and very calm which really helped me. I took on Miranda after one and a half years of not driving. I then sat my first test in January of 2016 which was a pretty good result but still failed. I got no minors and a single major which my instructor said was something that I'd never do but could see it was down to stress. I left driving for a while.

Fast forward to 2019 when I decided to pick up driving as I had a little more time and money. I went for three lessons with an instructor but decided the best way to go was to save money and practice with my mum. I started that in late 2019. Unfortunately, COVID came along and I also needed to now redo my theory test but it was delayed and delayed by months at a time. I eventually got my theory rebooked for December 2020 and passed again. Next was the driving test, which I ended up booking for May 2021. Unfortunately, COVID affected this too, with my test being postponed to mid-July - a time which actually was very unsuitable for me. I then got it rebooked for September of 2021, only to get COVID myself. It was rebooked for November, again unsuitable for me as I was still struggling with COVID.

I managed to get it booked for February 2022 and felt really ready this time. Unfortunately, I failed. And it was so silly. Two minors and one major. And the major was for the emergency stop and if I'd been a half-second quicker I'd have passed. This was unfortunate and it really upset me because it was a silly mistake and one that I could have fixed easily.

Now, on the 17th of May 2022, still feeling ready to go for it, I passed. I got four minors, all of which were very minor and minors I was very aware of after but I felt like I deserved to pass anyway. I'm very happy that I've managed it at last! 

Recently I have found that some of the DIG tools out there are just too raw in their results and they've not been sanitised correctly, or provide too much information. So I've developed a new DIG tool on my website in the Dev Toolkit to help with this. You can find it below.

DIG Tool

Two years to the week after opening my jamiebalfour.scot domain for the first time I have decided it's time for a completely new domain.

My brother and I have been speaking about having one domain which we share but each have subdomains on, so without further ado, let me introduce the balfour.scot domain and the jamie.balfour.scot subdomain. jamiebalfour.scot will now redirect to my new domain automatically. This process will take a while to complete so you'll have to bear with me whilst this happens.

Further, my new email is just jamie@balfour.scot which is much cleaner.

As of today, you can download ZPE 1.10.4 from my website. This version includes passing by reference and by value and not just one or the other. Although there are not a ton of features in this version, the by reference and by value update is one of the most significant updates yet!

CSS Tricks, one of my favourite websites for non-standard CSS ideas, is now going to be acquired by DigitalOcean. I mean this is big news, I've been using DigitalOcean since about late 2017 and they've been amazing. It's actually good that it's DigitalOcean and not some other company that couldn't be trusted to make a good job of it.

You can read more on the CSS Tricks website here.

Exceptional Elephant brings a big new feature that really makes the new version more powerful than ever. 

ZPE had for a long time relied heavily on using by value passing of variables to functions, both internal and externally, and this became even more confusing when the new reference types came to ZPE (aka ZPETypes). For example, the list_add_element function would actually modify the original list passed into it, whereas other functions would simply copy the list and change it. No longer do any of these predefined functions copy the value passed but will always modify the version passed to it.

So, passing by reference is very important. But then so is passing by value. Now you can specify this by running list_add_element(&$l) to pass by reference, passing the original list through or by value by simply writing list_add_element($l). It's also important to note that with any programming language and runtime, and not just YASS, that passing by reference is considerably faster.

I've been wanting to this feature into ZPE for a good few years but it was tricky. Since ZPETypes have been included it's been much clearer to me that it was easy enough to do.

Over the last six or seven years, many of my followers will know that I have been developing ZPE and its accompanying YASS language. They've come a long way since the beginning both in terms of speed and performance. ZPE is 50x faster than it was when I first developed it (version 1.2), and 10x faster than it was five years ago. These are crazy stats when you think about it. But on top of all of that, hundreds of features being added makes it bigger and bigger.

ZPE and YASS functions work on many operating systems. They are inherently designed in the underlying implementation to work on each operating system (and yes, I do have to build separate ones for each operating system) which of course requires a lot of testing.

At the end of 2020, I separated the Windows library from the main ZPE package, thus taking away the Windows operating system elements from ZPE. This included writing to the registry, a different beep function compared with Linux and macOS, as well as things like Windows Jump Lists. Generally, the move has made sense. 

So without further ado, I'm really pleased to announce there will now be three separate libraries for each of the main operating systems that ZPE is designed for:

  • lib_windows
  • lib_macos
  • lib_linux

What this means is that these libraries will directly overwrite parts of the ZPE package, such as for Windows the beep function, on macOS the menu bar will be able to switch to the macOS system menu and on Linux there will be more support for Linux command line. These libraries are going to be developed bit by bit over the next few months to make ZPE even more specific to the operating system.

Last night I finished working on ZPE 1.10.2, the latest version of ZPE. ZPE has been the centre of focus for me recently due to the need to redevelop the editor from scratch. I say this because the editor used JavaFX and since the decision to remove JavaFX from the JRE in the latest versions, I decided to make things easier and go for a simple Swing interface. 

Swing didn't work too well the last time I used it to build the editor, in fact, download an old version to see what I mean. But the new version is so much better. There are still one or two features missing from ZPE's editor that were featured previously but they will come soon.

In the ever-changing environment that is tech, ZPE needs to change to keep up with the developments in Java.

Recently I announced ZPE would move to use GraalVM instead of the JVM so that it can run much faster. Performance tests showed huge increases in performance, but it came with an issue - the editor no longer worked. So I moved back to the JVM, but it wasn't long before the JDK stopped bundling JavaFX which the editor is built with. This means bundling JavaFX JARs with ZPE, making it 10x larger than it currently is. The result of this is that I have decided to split the runtime from the editor and over the next few months the editor will be removed (again) and separated. 

I will look to build a simple Swing-based editor in the package to allow for continuity in the package. I will also be looking to move the JavaFX editor to a separate package that I will add to GitHub.

UPDATE

I spent a good five or six hours rebuilding the editor using Swing and it looks so much better on my Mac already! Every feature from the JavaFX editor has been brought to the Swing editor already and ZPE 1.10.2 will be out this evening! 

Since I got my house nearly a year ago, I've been very busy with my network infrastructure. This involved installing my home security system, getting my home server running (which is my Home Bridge, Plex server, my PBX server, home web server, company web server backup server, SSH server and DDNS server updater), installing home phones, setting up my smart home such as all my bulbs, switches and everything else, and of course, connecting my computers to it. It's taken a while, but one thing that's been changing more and more is I'm using Power Over Ethernet (PoE) for more and more devices.

In the past, my PoE uses have been fairly limited to just my SIP phones but this week I ditched the power adapter for my SmartThings hub and my Ring base station after getting new PoE splitters. I'm also going to be replacing all the switches across the house with PoE switches to allow me to ditch power adapters elsewhere too. I'm still installing my CAT cables across the house and have been considering CAT8, but it's difficult to justify considering the price and the lack of flexibility on the cables.

In a few weeks, I will also be posting a YouTube video for the first time in years with a little look around my house one year on.

Powered by DASH 2.0