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

As part of the major restructuring of the internals of my ZPE project, I rewrote the whole parser. Before I explain what's changed with it, let me explain how ZPE works (and still does).

The basic layout of ZPE

The previous image shows precisely how everything interacts. The second step is the most crucial, at least I see it that way. I say this because this is how my latest project functions. The project was known as Project Diamond originally, and I have no idea why I chose to name it that. This project looked at a new way of making the ZPE parser flexible and as a result ended up with me rewriting the whole ZPE parser (it's not that big though, only about 100 odd lines). Because of this rewrite it can be used to parse any language with minimal effort. Simply including the parser and requesting it does an action (such as eat a word) or return something (such as the current symbol or the current word) is all that is needed to write a programming language using it. 

As a result of this, I wrote JBSON, which is my JSON parser. It works using my ZenithParser which is now fully open to use. It's very easy to use and I will share the source code of JBSON. Whilst JBSON is actually part of the ZPE package, it can be used completely separately and the whole ZPE package is not that heavy. However, as I am restructuring ZPE's internals I may make it a public library that's not a part of ZPE. The main motivation behind doing this was the Google's JSON was too big for ZPE, adding it doubled the size of the distributable JAR file.

Java is a great programming language and platform to work in but in it's best moods it is, at best, a pain.

Today I fixed a huge issue that I thought was just with Java, but discovered it was so much more than just Java's fault. An application I use on my Mac called Flexiglass was causing problems. 

When I open a menu item within a Java application (such as the basic GUI builder in my ZPE editor) I get the following error: 'component must be showing on the screen to determine its location'.

This comes from Flexiglass, since Flexiglass changes a few system properties and therefore interferes with Java's menu system in some way or another. Anyway, the fix is to turn off the two checkboxes as pictured below:

The fix

The simple fix is to switch off two checkboxes

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. 

Site accessibility

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

This page was generated in 0.36 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.