Jamie Balfour

Welcome to my personal website.

Find out more about me, my personal projects, reviews, courses and much more here.

Jamie Balfour'sPersonal blog

2017 will bring a whole lot of new stuff to my projects. I am going to start with one of my recently more neglected projects, ZPE.

ZPE will be rebranded this year, well in a way. ZenLang will no longer be called ZenLang and will finally get a proper name (more on this later). ZPE has received a huge number of updates in the last few days, bringing it to version, the most secure, advanced and best version to date. In this version there are a number of fixes and new a number of new features. Version 1.5.0.x brings a lot of new things like the remote server, which can now be used as a message server too. On top of this, ZPE now features a JSON parser, through Google's GSON. GSON has been worked to parse the JSON into a list of lists (or an array of arrays). There are new security and safety updates in version 1.5.0.x that are crucial. On top of this, the LAMP parser was improved and loops have been further optimised. 

My website has received it's yearly revamp, this time in the form of DragonScript 2 which is still being put in place on all pages across the site, but it's clearly a lot faster than the original DragonScript. I've also been adding more responsive tools and my code samples now have copy buttons for modern browsers. As well as this I introduced BalfJS to my front end. This is a new way of keeping all of the JavaScript I want to use organised. It also means that functions are better named too and prevents conflicts. My JavaScript was a mess from the days when I first built my website in 2013 and it was time to finally tidy it up four years later. I have also taken out the table sorter and I am also saying goodbye to the wonderful MouseTrap plugin which was awesome but no longer necessary.

BalfBar received an update in early December that brought many new features with one in particular, a sidebar menu. This gives developers the choice between two different types of mobile menu. As well as this it was made overall more efficient.

BalfBlog also received it's latest update in early December. This update, version 2.2, brings a lot of new things including more control over users, a better UI and an improved plugin interface for the tools menu. As well as this it became more modular than ever and far better organised, and in some ways can now be seen in an MVC manner. BalfBlog also became more dynamic, adding more ways to make your blog or website easy to update in the future. Finally, OneSignal's push notifications and social media buttons were added. This year a lot of new features are planned including the long awaited 'Single BalfBlog Multiple Blogs' (SBMBS) strategy that will eliminate the need for multiple copies of BalfBlog on your webserver. This is planned and I'm still putting together ideas on how best to approach it.

BalfSlider may receive some updates this year since it is dependant on whether or not new features come to CSS or JavaScript that can improve it. Many effects of the plugin require both CSS3 and JavaScript to work.

As mentioned before, ClickIt and the ZenLang website will come to their ends this year. My donation thermometer did not make it high enough (I made more in ad revenue this last few months). However, the themometer did make it high enough to help pay for my website for another year. 

I'm very (to the power of one million) happy to say that after a couple of weeks of not working on ZPE after feeling very despondent about it after spending a long time searching for a bug, I'm glad to say that I have finally fixed it and it only took me a few minutes tonight.

The issue affects all of version 1.4 from version 1.4.2 onward due to the bug being in the LAMP parser. This bug was down to the fact that if a single variable was part of an expression it would attempt to look at the variable as a value, not as an ID. This fix is marked as being crucial to the success of any version of ZPE, so please ensure you do not use version 1.4.5 any longer and update to version 1.5.0. 

There are still things needing done in version 1.5.0 to make it work perfectly, but I'm getting there now.

Note as of tonight, the following needs to considered:

$v = 12
$x = 10
print($x * $v + 12)

This will not give 132 as expected. However, the following will:

print(12 + $x * $v)
print(($x * $v) + 12)

Future versions of ZPE are fixing a lot of these bugs, but I will be adding the Typo system to the next major version of ZPE as well.

I have since fixed this bug and I am testing it with a lot of use cases at the moment. You can try the latest version of ZPE from the Dropbox page and if you find any issues with this please let me know via the contact form on my website.

I announced a few weeks ago I would begin to work on a new configuration script for ZPE that would make installing it much easier. 

Well I'm glad to say that it will now be downloadable from my website in the next few days. It will bundle the configuration script, the MAN entry page (yes, finally!) and a copy of ZPE in it (I would still recommend downloading the latest version and copying it to the configuration folder before running the configuration file). 

To do this, all you do is run the configuration file using:



In the next few weeks, I will be likely dropping BlackBook, Data Project, Record Checker, Slide Away, SmartSocial and Wonderword from my website and from production after years of work. BlackRabbit Script has also since been replaced by ZenLang and the Zenith Parsing Engine (ZPE).

The decision has come after I looked at the lack of competitive features they have. All of them are still included in the BBCL library that will still receive updates (I do realise it has now been downloaded some 800+ times since I put it up two years ago and that people are actually using some of its functionalities). 

The core focus of my software portfolio will now be on Cobweb Internet Browser, Painter Pro, core plugins for the software and my ZPE. However, I may decide in the future that I may stop working on Cobweb and Painter Pro eventually, and I can see that happening as development has slowed quite a lot.

I may also choose to drop the name Elements from the software. All older software will be found under Software > More. 

I will be looking into the new C# to attempt to make the BBCL multi-platform.

On the topic of ZPE, it has now made it to version 1.3.4 which brings a lot of new features including nested functions, standard errors, when statements (equivalent to switch/case statements), for loops and more. Please check it out! Please note as it is already receiving a lot of attention it may take a few days for me to reply to emails about it!

Just last week I was speaking to my brother about a new software venture that will involve us using a platform independent language such as Java to develop the software hosted on this site from scratch again. This would mean great things such as being able to use it on Mac OS X and Linux. It would unfortunately mean using Java, however - and many will know how I dislike Java. 

However, in recent events, Microsoft has chosen to make the most shocking, but one of the best, changes to .NET Framework, which is the common language runtime (CLR) that all of my applications run in. They have chosen to make the language available on all platforms, without needing some external framework such as Mono to do this.

This will mean that soon I can get these applications up and running with the new .NET Framework 5 and working with all the main OSes. It will likely mean that after years of supporting Windows XP, I will have to finally cut the support. 


The following is another simple to use BlackRabbit Script sample.

BlackRabbit Script
//Copyright JBALFOURDTP//28/10/2014
//BlackRabbit Script version:

function main()
    //main method goes here
    output("Hello world");

    $x = 11
    $y = 11

    if($x == $y)

    //Incrementing variables will not instantiate them. They must be instantiated prior to use.
    $i = 0
    while($i < 10)


In today's post, I'm going to be talking about how I have improved BlackRabbit Script. Today I added the concept of global variables and local variables.

I have been planning this for sometime as it is found in many programming languages.

My next aim is to add parameter passing to functions.

BlackRabbit Script is now in version 2.3.

Powered by DASH 2.0