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.

Personal Blog

A major part of my childhood and the early years of the last decade was developing my own software applications. These include programs like Painter Pro, Wonderword, Data Project, Cobweb and more. I still have all the code for them on my system but haven't touched them for years. You see the problem is they were only designed for Windows machines, not Macs and Linux machines. This is because they were written in a combination of C# and VB.NET.

As a result, they've remained untouched for a long time. One of my last innovations in them was that of BlackRabbit Script - a language that could directly communicate with the applications it was running in. It was quickly replaced by the cross-platform, Java written ZPE. 

ZPE has obviously been a much bigger hit and also a much bigger project, but it's also hundreds of times faster than BlackRabbit. 

So I thought I would try something. What if I were to get ZPE in place of BlackRabbit in those older applications? Would it work? This is definitely something I'd like to try and will be trying tomorrow and will be reporting back on here.

zpe
.net framework
c#

In recent weeks I have been integrating ZPE into my smart home equipment, helping me set commands to perform certain things that would otherwise be very difficult. 

One such feature of ZPE that I find both useful and efficient is that of shutting down and starting up my PC. This is all done from our smart home's Raspberry PI which sends out wake on LAN requests and ZPE shutdown requests. ZPE acts as the webserver to our house, too. The web server responds to webhooks from IFTTT and deals with them as appropriate, making the PI respond based on the hook.

ZPE 1.8.1 also includes proper encryption between the server and client instances. Both the ZPEClient and ZPEServer have been rewritten as well and are now the ZENClient and ZENServer. The improvements to these not only make them faster but more stable.

ZPE 1.8.1 will include a few more features and will hopefully release on Sunday.

zpe
1.8.1

ZPE is now coming up for it's five year mark, but it's actually stemmed from something I started 8 years ago. 

In this article, I am looking back at ZPE through the years, asking myself questions.

Why did I start ZPE?

BlackRabbit Script, the predecessor to ZPE, was written only for use on Windows computers which were originally my own development base. It was written in C#.NET. When I learned a bit more about parsers and making them efficient I decided to rewrite the BlackRabbit Script parser in C#.NET using the new knowledge I had obtained. I received a decent performance gain. In 2015 I decided to give it a go building it from scratch as part of a university project. I gained huge performance improvements.

What was the biggest hurdle for ZPE?

There were two very big hurdles when developing ZPE. The first of those was the mathematical parser. I knew that writing this in an efficient manner would be difficult, however, not so difficult that I would need to rewrite the mathematical and logic parsers three times to get them right.

The second hurdle was that I wrote BlackRabbit Script using my own class library that I began writing when I was 13. It contained a bunch of different tools that formed the basis for BlackRabbit Script and made it really easy to develop functions for it. Unfortunately, that class library is not available in Java and since ZPE was rewritten in Java I had to redevelop a bunch of those features for the basis of ZPE. When I moved from BRS to ZPE, BRS had around 100 built-in methods. ZPE only got this as of about version 1.5.x. 

What is my favourite feature of ZPE?

The web parser and ZEN. ZEN is a bunch of networking features for ZPE that make it well worth while. It also allows ZPE to act as a web server and it's a rather efficient web parser. ZPE powers my web server at home as it allows me to easily create plugins for it to automate things around the house.

What is coming up for ZPE?

There's a bunch of new performance improvements planned for ZPE that have been in the works since about version 1.5 that are finally going to get the time needed. Version 1.8 will start with version 1.8.1 (Quinn) which will develop the foundation for these improvements to go through.

There will also be improvements to the MySQL library over the next few months.

zpe
questions

Primrose Lake, also known as version 1.7.12 will be the last version of version 1.7 to be released. Despite this, it's a huge update. 

1.7.12 not only brings single line if statements using the if...then statements but it also brings performance improvements in two areas. 

The first area for a performance improvement is the When-Is statement (aka the case statement). The improvement in performance comes from statements that are long in size but unfortunately smaller statements get a performance penalty. For performance gains statements need to be around about 6 or more options. 

There have been a few parser improvements too.

But the most significant change is the way in which libraries are now imported. Any ZPE compiled library is no longer imported at startup and is now deferred. They are now imported only through the import command. 

ZPE 1.7.12 is now available from my Download Center.

zpe
primrose lake
1.7.12

I was talking with a friend the other day there about the topic of limiting the frames per second (FPS) in a video game when playing on your PC. The argument didn't end with a much clearer understanding than was originally the case and neither side won the argument. 

Many people do not realise how important limiting the FPS in a video game can be for performance. Think about it this way, every piece of information a computer's graphics card needs to produce is more work for the computer. 

If a computer monitor refreshes at 60Hz (around about 60 frames per second) then running 120 frames means that 60 of those frames are wasted. This is, technically, how V-sync works as well. Limiting the FPS allows the GPU to work on the next few frames without filling the GPU doing overtime. 

So go on, try limiting your frames per second.

Posted by J B Balfour in Tech talk
fps
gpu
performance

Long story short, this has been a detrimental year for Intel and a collossal win for AMD. For myself however, the story isn't as simple as one or the other. My first AMD machine was a Turion 64 X2 back in April 2007. The machine itself was fine, it got a little toasty from time to time and it certainly couldn't play many games of its time and it eventually broke down three years after purchase. AMD had let me down. 

But way back in 2005, I was always very skeptical of the performance of my beast (but only in physical size) of a laptop that was supposedly a desktop replacement when compared with the AMD powered version. The Athlon XP and Athlon 64 versions often outperformed the Pentium 4 version and although AMD CPUs were perhaps better than Intel's at that time, AMD didn't have the market. 

Things got doom and gloom in 2010 onwards for AMD. AMD had definitely lost grip of the market. But as my blog followers will have noticed, I now keep banging on about AMD Ryzen and how it's the current reigning champion in the CPU market, with Intel struggling to keep up.

So where am I, a long term Intel fan who has finally switched to AMD for the first time in over a decade?

I would say that I am on the boundary edge of switching to AMD for my other computers. Every innovation that they add to the their chips such as the recent PCI-E Gen 4 makes me want to stay with AMD more. Performance on my PC is much higher than before, especially saying as I paid less than I have ever done for my PC this time around. 

However. AMD's lack of Thunderbolt, particularly in the laptop segment, means that I cannot connect some of the peripherals that I own to my computer. Uh oh.

So what do you think? Team Red or Blue?

Posted by J B Balfour in Tech talk

After having integrated push notifications into my website way back in early 2016, I'm now removing them from my website altogether. I think we can also agree, push notifications are quite an annoying thing these days and I've decided to remove them from my website - I never sent any for a while anyway.

From now on, the only push notifications that anyone will receive are from my blog. I intend to have an option to subscribe to these somewhere on my websites.

Posted by J B Balfour in Website news

As a web developer myself, I have been through a bunch of editors trying to find the right one and for the last few years at least the editor of choice to me has been set. 

Back in 2016, a friend at the time suggest that I use a different editor. I found that, at least for web development, Atom has been the editor of choice. I say this for many reasons.

The first is cross-platform. Whilst I was originally a Visual Studio user, when I moved to Mac OS and Linux machines as my main computers, Visual Studio wasn't cross-platform. This meant I needed to do something different when I switched computers to allow me to edit on both machines.

The second is the number of packages available for it. I use a terminal package that allows me to have an in built command line and same time as editing. I use an FTP package to allow me to upload in real time. 

I stand by Atom being my favourite, but it's a difficult call. Visual Studio Code is a definite close second for me, and over the years since I first used both it and Atom it's got a heck of a lot better. 

According to jscharting.com's blog, 95% of web developers asked in a survey actually use either Visual Studio Code, Atom, Sublime, WebStorm or VIM as their editor, meaning a huge number of people will be using either of those editors. 

web
editor
ide
text

Chrome 76 is a big update. That is in my eyes it is. That's because it adds several new features that benefit a huge number of things on my own website and finally, dark mode is coming to Chrome just like Edge, Safari and Firefox. 

Another major feature coming to Chrome is that of background-filter: blur which allows the glass kind of effect from Windows Aero to come to the web - use cases for this kind of feature are quite limited in flat design but can be used when displaying a box above another, adding a bit of blur to the background helps make it more readable, sidebars that float over can definitely benefit from this feature and much more.

I use both features on my website for different purposes - but they are trivial and have fallback solutions so that older browsers do not miss out.

So in 9 days, according to the Platform Status page, Chrome 76 will launch and I hope that everyone gets their hands on it as soon as possible.

Posted by J B Balfour in Tech news
chrome 76

I was extremely pleased to see Alan Turing being put on the UK's new £50 note. What's more impressive, however, is the attention to detail in this note.

You see the binary string that is on the note that reads 1010111111110010110011000 actually converts to the binary number 23061912 which, believe it or not, is the date Alan Turing was born - 23rd of June 1912.

I found this out from a friend who sent me the following Tweet:

Posted by J B Balfour in Tech news
alan
turing
note
£50