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

We are here now! Version 2.3 of BalfBlog will officially be launched today, and more importantly hosted on a website other than my own!

That's right! BalfBlog will now be hosted on a website that's not related to me!

In a just in time way, I managed to complete the installer for 2.3 just this morning which makes a huge difference to the way that BalfBlog is installed. 2.3 also focuses on adding templating back into BalfBlog, which makes it so easy to make posts fit into your website. 

With 2.4, BalfBlog will hopefully get a new, proper name and an updater that will update all files automatically.

The update went reasonably well. Since I built the installer on the day I released 2.3, I did not imagine it would perfect in every use case, so I have decided to re-release version 2.3 in the next few weeks. That means that version 2.4 is still a long way away. I also decided since polls were not perfect to remove them from 2.3 and leave them to 2.4 (I also want to change the way that they work altogether).
Posted in BalfBlog
balfblog
2.3
launch

I'm very happy to announce that this week I will release version 2.3 of BalfBlog.

That's really it. But what BalfBlog 2.3 brings is a huge update, by far the biggest update since BalfBlog changed from JBlogs or perhaps since it changed to having it's own backend. 2.3 has brought so much that I don't have time to skip through the changelog to find all of the features it brought. I will name a few of the key features however:

  • 2.3 moves to a more modular and better design of blogging system. 
  • Polls! They were created so long ago and yet I am now finally releasing this feature. It's not quite perfect but it should do for now.
  • User biographies - write about yourself and become a narcissist.
  • A lot, lot more Ajax - that means when you press a submit button, in most cases you will not leave the page to do this
  • A new Administration section
  • Move from PHP associative array and constants to a JSON file for the settings.
  • Better subscriber and user management
  • Export tools have been improved.
  • New information section
  • Moved from MySQLi to PDO, making the blog more efficient
  • Template system has been brought back, allowing you to completely change the way a post is displayed
  • New help desk feature allows remote login to help you setup and maintain your installation
  • More flexible content management system
  • Option to switch to CKEditor instead of TinyMCE.
  • An update to the new post, update and delete backend appearance
  • Soon to have a logo (hopefully in time for this release)

If you are interested in the next version of BalfBlog, let me know by getting in touch, I know the next version has one new website which is going to commit to using it instead of something like WordPress or Joomla which is great!

Version 1.5.3 will now change the way that the break function works. In fact, it will no longer be a function at all, since a function implies it has a return value (and functions that return nothing will return void). Break has always been a special function, mainly because of it's purpose, but also because of the fact that it cannot ever return anything, just like the return function did before it became a staple part of the compiler.

Break has followed suit in the step to promote it from being an interpreted function to a compiled keyword, just as return did back some time ago. Not only did this improve the speed at which return was processed, but it also made it even more difficult to overwrite it. 

My question to myself is now, when will version 1.5.3 stop getting updates and when will I actually release it? Well, the answer to that is that I aim to make this a perfect distribution, fixing all bugs that exist currently and adding as many of the promised features as I can. I anticipate the start of April 2017 for this update to be launched on my website, but until then you can always try out the unstable beta versions from the link on the page.

Also, as part of the update and refactoring of the Zenith Engine, I have made version 1.5.3 a lot smaller and a lot faster. I may explain where the performance gains come from in a blog post, but probably not. Overall, 1.5.3 is one of the biggest updates to ZPE since version 1.5. It also ditches GSON in favour of JBSON.
I have released version 1.5.3 on to my website for download. I have also begun work on version 1.5.4 which aims to change quite a lot of the underlying data structures.
zpe
1.5.3
parser
engine

Notice anything different about my blog? No, you don't. And actually, this change came on the front end for a change. Yup, that's right. An unnoticeable change that no one would be aware of unless they are hosting using BalfBlog 2.3's latest update, which currently only I have. 

So what is it?

Templates are finally back

What this means is you no longer follow the styling of BalfBlog in the front end at all, let your site do the work is now completely true. You can design a post template very easily by just editing the appropriate template. I have provided several basic templates with the default installation and these will soon be editable from the dashboard.

There are currently just two templates, introduction and post. These templates will be supplemented by a third one soon for single post view and further on I will perhaps change the way that the journal mode works to use one of these as well. This gives flexibility over the way posts are represented far more than before.

I will push this change live to my other BalfBlog installations very soon. Also, the standard GeneratePosts has been moved to GeneratePosts2 and the new GeneratePosts follows this template scheme.

Posted in BalfBlog
template
balf
blog
balfblog
update

After a long thought process, I am very happy to finally be bringing the index accessor to ZPE A lot of languages that ZPE aspires to transpile to also have this, so it's fairly important.

It looks like this:

$v[3]

Currently assignment to this is not possible, but it will be soon. I am going to deprecate the list_get_at_index and the equivalent for associative arrays. 

Also in the latest vesion of ZPE is the early stages of Typo - ZPEs runtime type checker (it will also be in compile time too) and the new feature which will allow you to produce web pages utilising ZPE. 

The latter feature is more of a side project than a major one.

Also, I'm glad to say in the next few hours I will continue the ZPE refactor that takes a lot of ZPE 1.3 out of the code. The big refactor has minimised code from 15,000 lines to just under 9,000 overall, but the structure is miles better.

I also hate to say it, but ZPE is running low on byte codes, with only 160 left at the present point in time (meaning that 96 have been used). 20 more of these are reserved for special purposes.

ZPE
1.5.3
index
of
indexer
update

When I started to write BalfBlog under the name JBlogs in 2014 I began using the now deprecated mysql commands. After some time messing about I switched to the much faster and more powerful mysqli commands. 

This was the first big change in the history of the code in BalfBlog. Moving to PDO from MySQLi was another big change (probably about the sixth big change in the history of BalfBlog) and I claim it has many performance improvements.

The improvements do not come from querying the database because I know outright that MySQLi is better for that since PDO adds a layer of abstraction over the databases. No, they come from preventing running the query twice - which is an obvious waste of resources.

Now that I use PDO, this is no longer required since the way that binds are done is much better. Creating prepared statements is so easy and this is where the performance gains come from. 

Also, I will point out as it seems a good time. Performance is being thouroughly tested at this point in time under many use cases. PDO definitely seems the way to go however, and it will also allow me to easily switch around database commands to allow other databases to be used in the future. 

Also, not every part of the dashboard has converted yet, but most have.

Posted in BalfBlog
balfblog
pdo
2.3
efficient
faster
mysql
mysqli

So you already know about some of the new features of ZPE 1.5.3, including the new free to use parser that can be part of any project. But there's also another change coming.

ZPE 1.5.3 is a bit of a minor update in terms of features, but it brings in a sweeping change. 

I'm talking about a change that brings a change to something from version 1.3.2. One of the first features added to ZPE way back when it kicked off again in 2015 was associative arrays - almost identical to PHP's associative arrays. They were different to lists in the sense that they mapped values. Well, whilst version 1.5.3 is not a huge update, the update brings a huge change to associative arrays.

You declare an associative array as below:

ZenLang
$assoc = {50 => 10, 10 => 50}

But now, the same associative array is written very similarly to a mix between that and defining a list:

ZenLang
$assoc = [50 => 10, 10 => 50]

The update's purpose is to inline both associative arrays and lists and to free up the curly brace.

Also, I am changing the accessor symbol from => to -> for objects.

zpe
1.5
1.5.3
new
associative
arrays
changes
features
custom

It's no shock that a very useful bunch of libraries are now available for ZPE written in ZenLang. Because I have recently added jget to ZPE (a method of accessing my own repository of ZPE extensions easily, allowing easy downloads of these extensions) I have decided to give it a proper name.

Much like the way PEAR and PECL exist for PHP, ZPE will get ZULE or ZPE User Libraries and Extensions. This will be hosted on my website for now and accessible through the jget ZAC in ZPE for now. I will add the ZULE ZAC to ZPE soon however, but jget will exist for a different purpose. 

I'm now open to receiving both compiled and uncompiled scripts for ZPE to add to this repository. 

One of the biggest updates in terms of what it brings is the move from MySQLi to PDO - PHP's data objects for databases. Not only does PDO make it easier for me to add future database systems, it makes it easier for me to write the code.

MySQLi's biggest problem is the way in which prepared statements are formed:

$stmt -> bind_param("ss", $username, $password);

PDO solves this issue by making it possible for me generate any query and provide any number of parameters, thus allowing me to call the execute on the query at just one point. If you look through the new version BalfBlog you will understand why this is crucial.

Nothing will change on the front end, although the performance is much better with PDO because of the way it is written.

Posted in BalfBlog
php
pdo
balfblog
update
mysql
mysqli

I may have only posted the other day, but this update is a big update so it needs to be out there. 

Version 2.3 will be a big overhaul of the internals of BalfBlog, similar to what happened to ZPE. This is a major code refactor and therefore it will take me some time to finish it. I am now improving the comments inside BalfBlog to make it easier to work on, changing the way variables are named, defining more constants and generally refactoring the code.

If you wish to contribute, get in touch.

Posted in BalfBlog
balfblog
developer
ideas
suggestions
features
2017
2.3
Powered by DASH 2.0