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.
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.
Once again, another tradition I have been doing, looking at the last things I have done in the year.
Last meal I ate: Gourmet Garden vegan burger
Last thing I had to drink with a meal: Coca Cola
Last place I went out to eat: The Goblin Ha'
Last film I watched: Iron Man 3
Last game I played: Who Wants To Be A Millionaire (Nintendo Switch)
Last song I listened to: Feliz Navidad
Last person I have sent a text to: Michele
Last friend I have spoken to in person: Louise
Last TV programme I have watched: BBC News (I don't watch TV, and I only saw this in the hospital the other day)
Last major purchase for myself: My new Ring Alarm system
Although 2021 was largely shadowed by COVID-19 and I ended up hospitalised for a while, it was a good year for me with me finally moving into my own house.
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!