Jamie Balfour BSc

Welcome to my personal website!

Technology enthusiast

I am very interested in technology, particularly relating to computer science. I am most interested in web design and development.

My main hobby is programming. One of my most well known products from this is ZPE. I also am the sole creator of BalfBlog, BalfBar and BalfSlider.

A little bit about me

In 1997, when I was six years of age, I got my very first computer. I was always very interested in the ins and outs of it and dismantled it to see how it worked.

Years later, in 2016 I received my BSc (with honours) in Computer Science, obtaining a First class degree.

I'd like to welcome you to my website and hope you enjoy using it as much as I have enjoyed building it!

Google Plus
Jamie Balfour BSc
Full stack developer

Personal Blog

Version 1.4.2HA is the current alpha version of the next ZPE and it's the biggest change to ZPE in the history of ZPE, a lot of code written in version 1.3.x has been replaced with much more efficient code, particularly with the evaluation of conditions and maths.

Real Math Mode was added in version but it was always up for evaluation. The compiler side of it was written in a way that allowed the compiler to 'peek' at several symbols ahead of the current symbol in the traversal. Brackets were considered mathematical, so if a mathematical symbol wasn't found, ZPE would assume since seeing brackets that it was a mathematical expression. That meant that logical expressions were never considered on this expression. 

Now in ZPE 1.4.3 (which I will hopefully release soon) mathematical and logical expressions are compiled to the singular "EXPRESSION" token and then, at runtime are evaluated to a mathematical expression or a logical expression based on the first token found. 



55          33

Would make the interpreter realise this is mathematical, not logical. With the following it would also realise that this is logical:


true        false

And this is because it sees an AND token (&&). 

What about brackets though? Well the interpreter will skip through brackets going right down to the base and do exactly the same with that. Easy.

This is makes the compiler also more efficient and certainly more reliable.


I have just recently finished the compiler side and the interpreter side was easy enough to modify for the new system. 

Much of what made ZPE the way it was back in the day has been replaced with a fresh system that does less work, has lead to much fewer traversals and makes far more sense. Logic is evaluated in the exact same way as mathematical expressions. By doing this, the system follows the orders of precedence where AND will always be evaluated before OR. 

As a result of the change, the factorial problem as I know it as currently, has been fixed, so $z = (factorial($n + $r - 1)) / (factorial($r) * factorial($n - 1)) now works without the 0 + at the beginning of the first brackets.

This update also eliminated the need for the compiler to peek at the next bunch of symbols until it found a terminator or a mathematical or logical symbol. 


Update 1.4.3 has since been released and trialed. I'd like to thank Merlin for pointing out a few bugs within the new LAMP interpreter.

Version 1.4.3 changes what was described above and assess the expressions in the compiler to mathematical or logical, thus removing this from the interpreter. The system still works the same.

Version 1.4.3 drops support for XOR in a statement since it was far too complicated to parse correctly, but it does re-add the xor command. A lot of what was done in the interpreter has been shifted to the compiler, allowing the compiler to compile more efficient programs and to reduce execution time on the interpreter side of things, which as a result means that while loops and for loops will interpret faster. 

I'm hoping to make several more compiler-based improvements that will make small yet noticeable differences for the interpreter.

I genuinely believe that version 1.4.3 is the first version where the core is actually finished in both the interpreter and compiler.

I am proud to say that BalfBlog 2.0, the biggest change since the original release of the open designed blog, is now finished. The following list explains every major change applied to BalfBlog 2.0:

  • TinyMCE 4.0, the latest, much flatter looking version of TinyMCE.
  • Removes the requirements for a custom blog. Now the backend dashboard of the BalfBlog is entirely unique. There is a screenshot at the end of this post about this. In version 1, the blog backend was powered by your own website. Unfortunately this meant that users needed a lot of knowledge to install BalfBlog. Now BalfBlog requires just 4 user inputs to get it done. I will be uploading a sample blog you can mess about with soon.
  • Create user from the interface, finally. A button on the interface of the backend allows you to easily add a user.
  • Completely object oriented
  • No search box built in, you will need to provide your own. BalfBlog does provide support for a search query being applied to the posts, all you need to do is add the ?qry query string to the end of the URL where the GeneratePosts() call is made. 
  • Now there are only 13 files required to work with BalfBlog, and no longer is there an admin section.
  • Updating is much easier through the fact that only a few files need updated
  • Security has been improved since now, provided you are using Apache or Nginx on your server, you can use the .htaccess directives in the directory to protect against direct use. This is provided by default. 

Site accessibility

A lot of the original functionalities that once existed here have been removed.

This page was generated in 0.27 seconds using 2097152 bytes. Slow? Let me know.

To use project mode, the window must be greater than 920 pixels in width.
Click here to disable Project Mode.
This site uses cookies to deliver its services, to personalise ads, to store preferences and to analyse traffic. Information about your use of this site is shared with other companies. By using this site, you agree to its use of cookies.
Contact me
Contact Jamie Balfour

Get in touch with me via this form.