ZPE 1.14.6 is another big update, with the introduction SQLite being one of the biggest features. A ton of built-in functions have been moved into modules. There's also a ton of new module functions and a new Windows module. For the UI, the editor has received some further tidying due to improvements in BalfLaf, especially on Windows 11. The macro interface editor has received a massive redesign, and it actually looks awesome on macOS. Finally, the console window has received a ton of fixes and improvements and now works nicely with any other editor (such as my SQARL Language Runtime).
What's in the pipeline
I've still not finished building the class type typing system (e.g. AudioStream x = new AudioStream()) but I am working on this for release before the end of the year to improve type safety.
Additionally, I'm looking at a new way to compile. This type of compilation would translate YASS directly into JVM bytecodes and would increase performance considerably, especially for natively compiled programs. The only concern I have with this is that it might work differently to the runtime in ZPE.
After 19 years, I've finally decided to revive one of my oldest projects, Data Project. Data Project started in 2007/08 as part of my FusionScape Ultra Edition. Eventually, it became a separate program.
The purpose of Data Project was to give you a single place to store things like research, documents, files, videos, pictures, etc., and to provide a very convenient way to transfer files. Data Project was originally written in a combination of VB.NET and C#.NET (the former since I started in VB.NET, but learned C# halfway through the development of Data Project).
Data Project was built alongside three other major projects: Painter Pro, Wonderword, and Cobweb, and it utilised components from each of them through my cleverly designed Balfour's Business Class Library.
Anyway, enough history. The new version, version 2027 (or version 2.1), is designed from the ground up with the same concept. It's built in Java this time for both cross-platform compatibility and to use my Macro Editor feature in ZPE. It's already taking shape, too, thanks to BalfLaf, which has revolutionised the way UIs are developed.
I'm currently working on a new website design for release in 2027 or maybe earlier. The current website design has been in place since 2017, but it is similar to the 2013 design.
I never wanted a full-page website because my website serves so many purposes, and it's not just about that. However, I have considered the idea of having a personal website and a less personal one, or using subdomains for each. Alas, none of this has happened, and here I am contemplating a complete redesign.
It has never been the case that I couldn't build a more modern look, but more that I wanted to keep my website the way it was. I'm not trying to sell something, but rather just provide something. If you look at some of the sites I have created for clients, you'd see that I do care a lot about form, not just function.
But my own website might even have this design in ten years' time, who knows - I have tried to change to a new design before, but always gone back to this design due to my love for the traditional design.
eTraxion has been left on the back burner for a while since VWS and ZIDE have taken the front stage. VWS is now in a very mature state, and ZIDE is progressing very quickly, too. eTraxion deserves some love.
I was asked this week to take over some systems for the school. But I suggested that, instead of using spreadsheets and databases built with Microsoft Access to do this, we move to a system that is dependable, reliable, efficient, and flexible. I suggested I build the system from scratch. Anyway, one of the systems to be built is a whole-school report generator, where teachers will choose their comments and the system will generate the reports for them. I stated I already had this with eTraxion and that it was nearly ready for launch.
As a result of this meeting, I have decided to continue to work on eTraxion, bringing ZPE 1.14.5 to it and expanding its features.
The latest version of eTraxion is version 1.1.4, and it will be available very soon.
A couple of days back, I was told that I had been nominated for an award through my company name (which is of course soley me anyway). Well, I won it (I actually found out on the 20th of April). The award is for:
Independent Digital Development Specialist of the Year 2026
The focus on ZPE's UI has been a significant part of ZPE's development over the last few weeks. ZPE UI is powered by BalfLaf (which is also built into ZPE). This means that to improve the UI, BalfLaf also needs to be improved. There are several key areas that will be focused on for improvement over this time:
- new controls
- better support for border-radius
- additional events for existing controls
BalfLaf turned 1 year today - I didn't even know until I decided this evening to have look and see when I started it and realised it was the 17th of April 2025:
ZPE 1.15 may be more than half a year away, but the codenames have already been decided (and actually, I've made 1.16 and 1.17 too). Here we go:
- Kings Cross Station
- Euston Station
- Wembley Central Station
- Harrow & Wealdstone Station
- Ealing Broadway Station
- Kew Bridge Station
- Richmond Station
- Putney Station
- Clapham Junction Station
- Vauxhall Station
- Waterloo Station
- London Bridge Station
Here's ZPE 1.16 too:
- Greenwich Station
- Woolwich Arsenal Station
- Stratford Station
- Hackney Central Station
- Walthamstow Central Station
- Finsbury Park Station
- Alexandra Palace Station
- Highgate Station
- Hampstead Heath Station
- West Hampstead Station
- Camden Road Station
- St Pancras Station
And ZPE 1.17 as well:
- Westminster
- Buckingham Palace
- Tower of London
- Tower Bridge
- The British Museum
- Trafalgar Square
- Piccadilly Circus
- St Paul's Cathedral
- The Shard
- London Eye
- Hyde Park
- Covent Garden
At the end of this week, I will release the new versions of ZPEX, all in preparation for testing ZPE 1.14.5 before its official launch. These versions of ZPEX will all be version 1.14.5 and will feature most of the things that will make ZPE 1.14.5 so powerful.
ZPE 1.14.5, with the help of ZPEX, can now build native binaries for each platform. It's really easy to do as well. Simply run the usual compile method and add the native flag to it:
zpe -c stdAlgorithms.yas -o stdAlgorithms --native
Then, to run, just double-click on the file it outputs. You'll no longer need ZPE to run these binaries, which makes it easier to use.
A couple of things to note about native binaries:
- Firstly, they are platform-specific. This means they only work on the operating system and architecture on which they were compiled.
- Secondly, they are large. Compared with a ZPE-compiled program, they are approximately 70 MB larger.
- Thirdly, they are very fast. They use ZPEX's native capabilities, so they are very fast at executing.
This is obviously a big thing for ZPE.
ZPE 1.14.5 is another major update, and it builds on the incredible work that ZPE 1.14.3 and 1.14.4 have already delivered. ZPE 1.14.5 will deliver on many promises, too.
The first big feature coming to ZPE is a breaking change. It is one that improves the syntax and performance for ZPE now and in the future, and it's something I've been wanting to do for some time.
When I say it's a breaking change, I mean that several predefined functions are now part of modules rather than being predefined functions. Those functions are:
- random_number () -> Math::random_number ()
- calculate_range () -> Math::range ()
- calculate_mean () -> Math::mean ()
- calculate_median () -> Math::median ()
- calculate_mode () -> Math::mode ()
- calculate_minimum () -> Math::minimum ()
- calculate_maximum () -> Math::maximum ()
- calculate_standard_deviation () -> Math::standard_deviation ()
- generate_histogram () -> Math::generate_histogram ()
- calculate_linear_interpolation () -> Math::linear_interpolation ()
- shutdown -> System::shutdown ()
- get_environment_variables () -> System::get_environment_variables ()
- limit_real () -> Math::limit_number ()
- is_headless () -> System::is_headless ()
- is_command_line () -> System::is_command_line ()
- aes_encrypt () -> Cryptography::aes_encrypt ()
- aes_decrypt () -> Cryptography::aes_decrypt ()
- file_encrypt () -> Cryptography::file_encrypt ()
- file_decrypt () -> Cryptography::file_decrypt ()
Two functions (so far) have been transformed into module constants.
- get_os_name () -> System::OS_NAME
- get_max_memory () -> System::MAX_MEMORY
I will update this post as I continue to work on ZPE 1.14.5.


