To use this website fully, you first need to accept the use of cookies. By agreeing to the use of cookies you consent to the use of functional cookies. For more information read this page.

Jamie Balfour'sPersonal blog

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.


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! 

I know it's been a while since I last updated Velocity Web Server (VWS) and it's partly because of a lack of time but also because of my lack of commitment to the project in the first place. 

The last few months have been really centered on the rebuild of the DASH project, which has become so much more than it used to be but also have been focused on the latest versions of ZPE which have come on really well over the last few months. There have also been some issues with ZPE that are still on going and needing fixed, which has drawn a large portion of my development time. Don't forget on top of all of that, I run a business!

Velocity is next on my sprint board and will get some time again very soon.

Posted by jamiebalfour04 in General

The celebrations had been running for two hours but are now coming to a close as New Zealand now enters 2022, with pretty much the rest of the world, including us, still in 2021!

Happy New Year New Zealand!

The start of 2021 was unfortunately spent with the country in lockdown again which was very difficult for me personally as I was living at my parents' home but was also getting ready to move away from there so I had boxed some of my stuff. This lockdown also got me slightly anxious about moving out and whether or not I would be able to get in this year since the builders were working fewer hours and there were fewer of them working on-site because of lockdown. Sadly, because of this lockdown, I didn't do a huge amount of exciting things in January.

February on the other hand was the most exciting month of the year for me. First of all, we had one of the nicest snow spells in a long time, with quite heavy snow that lasted a few days before disappearing entirely. This is the kind of snow I like - it's not hugely disruptive this way.

But then the biggest and best news came along on Tuesday the 9th of February when I was phoned by Taylor Wimpey to be told that my house would be ready for me to move into by the 19th of February. There was suddenly a mad rush for me to get things organised for this move in, I phoned my solicitor, my bank and lawyers and informed them all of this. I then made final preparations and arrangements for this date, including getting my deposit in one place.

Not everything went to plan, however. As much as I had done everything, and the bank (Barclays) had done everything they needed to do, by the time the 19th of February came along and I was to move in, I got a phone call from Taylor Wimpey to say that they had not yet received any funds from the bank. I kept phoning Barclays to see why this was the case and for some reason, an administrative error had occurred on their side that meant that they hadn't processed it properly and fully yet. Anyway, Taylor Wimpey couldn't give me the keys to the house due to this, which is understandable. However, Taylor Wimpey did give me the keys the next day so that I could have a look around my new house on the premise that come Monday I would be able to move in. Monday came and again the bank took their time and it wasn't until 30 minutes before Taylor Wimpey closed that the bank released the funds and I finally got the keys at 17.40 (actually Taylor Wimpey aren't even open on a Monday, it was thanks to the estate manager that I got the keys).

You can find out more about my moving in here.

March saw me return to the office on certain days which was nice but also very scary at the time as well. May was an excellent month for innovation with the new slides section being added to my website which is powered by but also my own built slide viewer that adds functionality to my slides like never before. Further to that, and also released in May, the section provides a bunch of tools that can be used within these slideshows.

June was excellent for ZPE, with the new TYPO v2 system being introduced which is miles more efficient and effective than the first version, the new let keyword was added meaning that variables no longer had to have a $ sign at the start of them and many bugs were fixed. 

July was great for my house when I got my loft boarded giving me the extra space to move along some of the stuff from my parent's house. Stuff in my loft now is mostly just boxes, Christmas stuff and sentimental boxes. July was also an awesome time for my family since we all went to Plockton for two nights - exactly 10 years from when we first did it (except my dad wasn't there the first time). This was the first family holiday we've had in a while and was the first time we had a proper day away since I moved out so it was really nice. The journey up to Plockton was amazing again, going up via the A82 over the Rannoch Moor, past Glencoe and Fort William. On the way back we visited Eilan Donan Castle - something we planned to do in 2011. We were not disappointed and all really enjoyed touring one of the most interesting castles in Scotland. Whilst heading south we visited Spean Bridge, which is now one of my favourite locations in the whole country, and the Old Station Restaurant. Whilst there we decided that we'd like to head back via the A9 and so we went back via the A86 as we had also done in 2011 as well. This road is one of the most beautiful roads in the country and we passed Loch Laggan. We decided to stop at Loch Laggan and have a look at its beauty and amazing sands. As a result of this stop, I asked my father and brother if they would be interested in camping here the week after next (I had mentioned it prior to this but never figured out if they were serious about it) to which they both eventually agreed.

We decided to go camping at Loch Laggan on the 30th of July. Prior to this, I bought a new tent for us, a sleeping bag, and a couple of additional camping gear. When we left, I didn't realise but my dad also brought his own tent (the reason behind this is more insidious and void for this post). This was the first time we'd been camping in over 15 years as a family (well my mum didn't come but it was the first time two members of the family shared a tent anyway!) so it was quite incredible but also really good fun. The fun however stopped when the night came. As a result of me cheaping out on my sleeping bag and not obtaining a decent mat to sleep on, I got very cold throughout the night. Loch Laggan is near Dalwhinnie - one of the coldest parts of the UK - so it's totally understandable that it was so cold. I was so cold that I was sure I was experiencing hypothermia since my heart rate dropped to 39 beats per minute at one point and ended up having to huddle up with my brother in his pod in the tent (thanks to my Apple Watch for warning me of this). We decided to leave quite early the next morning 

Sadly, August of 2021 was not such a good month. It started off with my mum and I going to Loch Katrine (which we last visited some 15 years prior). After returning home we decided to look at booking the bikes at Loch Katrine for an hour or so. This was something we've both wanted to do for a long time. We went up there a few days after and it was a really great day to be cycling. But when I got home I got the fright of my life when I discovered two legs poking out of my chest and realised I had a tick - my very first one too. I immediately called my brother who had had plenty of experience with them in the past. My brother passed on lots of tricks in dealing with them to me in the past but all the training I had had had had no effect - I was just too scared to attempt to remove it myself.

Also near the start of August, I had my very first dinner which I had friends at. And by friends, I'm talking about my two oldest friends, Nick and Calum. This was a really nice evening and the first time I had seen Nick in a long time. I made a nice spaghetti and both enjoyed it I believe. This was to be the first of many dinners!

In terms of work, it was an exciting month of the year since it would be the first time that I had ever returned to a school after the summer holidays since starting teaching and was the first time I returned to a homeroom class as well. It was so nice to return to all those happy pupils! However, on the 27th of August I, unfortunately, tested positive for COVID19 and ended up hospitalised on Monday. This has been my worst experience in hospital, and it was nothing but the anxiety and worry of being back in hospital that made me feel this way. I ended up self-discharging and getting out much earlier than was originally planned. You can read more here.

By mid-September I was out of the hospital and began getting back to my normal self, but with the support of my mum, who has been one of the most important people in my life throughout all of these different traumas that I have been through. Friends were also a big part of my recovery, and it was good that my friends knew when to support me and when I needed to be left alone (I felt that there were times I needed people throughout my recovery and then times when I needed to be on my own). I slowly began to get back into the things I enjoyed prior to COVID such as programming and web design and development and by the end of the month, I managed to make ZPE faster than before with major performance improvements.

Mid-October 2021 was the first step to get back to work after COVID and was a slow and gentle ride to start with that helped me ease into it again. Unfortunately, during this time I was still experiencing problems from COVID. My heart rate was averaging around 130 beats per minute every day and neither my doctor and I could not figure out what caused this. As well as that, my body started to act a bit weird and my fingers and feet were constantly getting pins and needles in them - apparently, this was a result of a B12 deficiency caused by either my COVID jag or having COVID. October 2021 was also my first Halloween in my new home which was extremely exciting for me! 

During November I had my first family dinner with my aunt at my place! This was another exciting moment in the history of my house. But it didn't end the way I wanted it to with my brother and father falling out (as always!) and my brother getting very angry and leaving. Also during November I finally got the new TV I needed to get (as some of my readers may know, my previous TV bought just two and a bit years prior was just a temporary solution whilst living at my parents' house). My new Samsung QN95A is an amazing TV that compliments the room and is one of the best purchases I've made. I got it wall mounted professionally at the end of the month as well and it looks stunning in my living room. I also got an Apple Watch Series 7 after toying with the idea for weeks. This is my first 4G enabled smartwatch which has allowed me to do a lot more than before.

December was without any doubt the best month of the year for me. I think this is because I felt like all the jobs needing to be done around the house had finally been done and my house was finally there (I mean there are new things I am wanting to do etc but all the main things were done). As well as this, my smart home was finally working as I wanted it to, my home phones (SIP phones) were all set up and I was finally feeling very satisfied with everything. I also felt this because I felt very relaxed for the first time since having COVID and felt that things were going the right way again. I managed one full week at work plus a full three days on top of that. Christmas wasn't amazing since I fell out with my dad in the first 30 minutes and decided to head on home to my own house (I regret having to do this but it wasn't possible for me to stay when my dad was having a go at me about everything). But my mum treated me, my dad and my brother to tickets for a tour of Glenkinchie Distillery - something we actually got the year before for Christmas but had to be cancelled due to COVID. This was an interesting tour and was the first time in a long time I had been back to the bar there (I used to go quite a bit when I lived with my parents since their house was near). You can see photos of it here. To finish off the year, I completed The Legend of Zelda Majora's Mask once again - a personal tradition since 2005. 

And that's it. The end of 2021. Goodbye 2021, a good year for me overall and I'll never forget all the positives that came from this year. We can now welcome in 2022.

Posted by jamiebalfour04 in General
new year

ZPE 1.9.13 is now available to download from my website, or directly from ZPE using the --update command. 

ZPE 1.9.13 is another excellent update adding four new built-in functions, two major fixes and the new map data type.

It's worth the download!

Powered by DASH 2.0 (beta)
Code previewClose