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.
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 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. It 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 (in my second year of high school). 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 worthwhile. It also allows ZPE to act as a web server and it's a rather efficient web parser. ZPE powers my webserver 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.
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.
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.
What this means is that your computer, which could be doing other things like calculating positions of units in a game or something, cannot be done until those frames have rendered. This is wasted CPU and GPU resources.
So go on, try limiting your frames per second.
Long story short, this has been a detrimental year for Intel and a colossal 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 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?
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.
Dash was my main project for a long time, so developing content management systems is not something I have ever had any problems working on, and in fact, they are one of my favourite things to develop.
But now, something new, somewhat inspired by Dash, is about to hopefully become a big success. I'm working on a new major project that I started just this evening and it's set to be my biggest project yet.
Dash 2.0 will rebuild my four-year-in-development project from the ground up, with more focus on object-orientation.
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 suggested 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 at the 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.
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.