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

Do you remember what you were doing 20 years ago right now? Probably not. But I do remember 20 years ago, at this point, I was learning to program for the first time. 

My first project was FusionScape (at the time it was called Doors). It was what I called a Desktop Replacement Interface Program (DRIP). FusionScape was awesome; it was well-received and liked, but it was bloated and challenging to maintain. You see, all of the programs built into it had to be updated at the same time. I then decided to separate FusionScape into separate programs. These programs were:

  1. Autorun Express
  2. Data Project (a notebook-like program that was designed for project records)
  3. Cobweb Internet Browser (a web browser with so much more than Internet Explorer or even Firefox at the time)
  4. Painter Pro (my bitmap and vector graphics editor, and the longest-lived of all of these programs)
  5. Quick Quiz
  6. Record Checker
  7. Tutorial Master
  8. Wonderword
  9. VUEBB

Development on Autorun Express was stopped in 2006 when I decided it didn't need anything more and was pretty complete. Data Project development continued until about 2008 or early 2009. Cobweb was in late 2009. Painter Pro was somewhere in early 2010, but I did pick it up again in 2017 until 2018. Quick Quiz was stopped in 2008. Record Checker was in 2009. Tutorial Master was also in 2008. Wonderword was in early 2009, and VUEBB was in late 2008. 

Painter Pro was, by quite a long shot the longest lived of them all. Cobweb received updates for a long time, too, but Painter Pro was my baby. It was powerful and had so many features that no other editors had back then. 

All of my software back then was powered by Balfour's Business Class Library, a class library of tools and features for the .NET platform. It featured controls like Painter Pro's drawing platform, Wonderword's rich-text editor, and Cobweb's Yorkshire Hill browser, which was an extended version of the Trident engine. It actually meant that the software itself, like Painter Pro, was just a graphical extension of the class library, providing access to its features. It was a powerful way to enable direct interoperability between the software. For example, Wonderword could use Painter Pro's drawing features, and Painter Pro could use the Cobweb Yorkshire Hill browser when necessary. 

Wonderword, as feature-rich as it was, never reached the point I wanted it to. I'd always dreamed of writing a page control that had proper pages like in Microsoft Word. That never happened and was the main reason Wonderword development stopped in 2009. 

Wonderword was always my dream. I always wanted to make it into a full-on word processor. It featured so many things that weren't really even in existence back then, and the bookmarking system was absolutely brilliant. 

Now...

And, after all these years, I'm finally revisiting Wonderword. However, as my ZPE Programming Environment, eTraxion, BalfLaf, and more are now written in Java, it's time for me to bring Wonderword to Java with a new philosophy.

I am exceedingly proud to announce that for the last two days, I have been redeveloping Wonderword from the ground up in Java. The paged view was built with the help of AI to speed up development. I will be bringing so much more to Wonderword over the next few weeks, but for now, it's got all that you'd expect from a simple word processor, including the ability to save in DOCX format and text formatting and bookmarks. 

My plan is this: make it more useful than before, whilst making it fully interoperable with other software and file formats. I'm also looking at bringing the WUX2 file format to it, which will be based on the same concept: a broad file format with 'Data Channels'. The following is a list of features I aim to bring to it over the next few weeks:

  1. Opening of DOCX files
  2. Macros written in YASS
  3. More formatting options
  4. Named bookmarks
  5. Headers and footers
  6. Locked view (set by the file itself)
  7. WUX2
  8. Tables
  9. AI dictation mode
  10. Printing support
  11. Image support
  12. Shapes
  13. Built-in Pixabay embedding
  14. Links
  15. Styles
  16. Page breaks
  17. Mail merging
  18. Converting to HTML

Here's a little screenshot of it after a day's development:

Simply put, the Wikipedia page on ZPE has been taken down. The page, initially started by me, had other contributors but apparently didn't have sufficient coverage; therefore, someone decided to remove it. 

As a result, I will no longer be supporting Wikipedia - I have donated £20 from time to time, and now I feel it's a waste of money. I will no longer be doing this, nor will I flag things that I spot across the website.

Consistent DragonDocs auto-marking is finally here. And it's brilliant, even if I may so myself.

In late 2023, I added auto-marking, but it was on an assessment-by-assessment basis. So, it wouldn't be consistent and would vary slightly for each person. 

The latest version I've built today now works consistently, but requires the teacher or administrator to tell the system to mark all of them simultaneously. 

I'm seeking to create a free online system for creating your own DragonDocs in the next few months, and auto-marking would be part of this, too.

Version 1.1.1 is a fully featured release, packed with powerful tools designed to make generating reports easier, faster, and more flexible than ever before.


jbTAR is perfect for anyone who needs to build professional reports using spreadsheet-style input. It provides:

  • Fast Report Generation: Quickly create high-quality reports from table data.
  • Highly Customisable Columns: Supports plain text, dropdown lists, and mapped values to make data entry easy and standardised.
  • Flexible Output: Generate complete, personalised Word documents based on your data with automatic placeholder replacement.
  • Easy-to-Use Interface: Simple spreadsheet-style editing with the ability to easily add, remove, and modify rows and columns.
  • Smart Templates: Design your own Microsoft Word templates with simple placeholders — no technical knowledge required!
  • Quick Actions Panel: Add or remove rows instantly and jump straight into a live preview of your report.
  • Cross-Platform Support: Built with Java, jbTAR runs seamlessly on Windows, macOS, and Linux.

Coming soon with version 2:

 • Dark Mode: Work comfortably in dark environments with full dark mode support.
 • Auto-Saving and Backup: Protect your work with built-in auto-save options and file backup prompts.
 • Customisable Settings: Tweak fonts, colours, and more to suit your working style.
 • Advanced Filtering: Filter multiple rows and columns to find and edit your data more easily.

Whether you’re building school reports, business summaries, client feedback forms, or anything else, jbTAR makes the process effortless.

Download version 1.1.1 today and start building better reports with less hassle!

After a week from hell, I have been working extremely hard to bring the next generation of my Java UI, known as JBUI (soon to be a part of BalfLaf) My new design language is all about lovely, sharp, and pointed edges, with very few inner borders and a clean look.

This all starts with my new BorderedRoot—the core of the interface. This defines the simple borders, removes the existing chrome, and lays out the shape. It also adds back resizing features.

Next, it's all about the header or titlebar. The title bar is simple and is designed to work with macOS and Windows, switching automatically. It also adds dragging and moving features as well as minimising. It adds handlers for the cross or maximise button being pressed. Unlike other programs such as Microsoft Word, my layout's central heading (the title) should never change. In my JBUI, the glowing text on the left should be the name of the activity taking place (or file name). Finally, the titlebar adds a layout zone on the right-hand side that users can use to add buttons for quick-access activities. 

Finally, to complete the whole package, there is a simple footer. Currently, the footer doesn't do much, but I'm looking to expand it.

JBUI is free to download, and you can get it from my website.

jbTAR or JB Tracking and Reporting is my latest project. I needed a new project to work on, so I thought, why not dabble in reporting? Since Tuesday, I have developed a fully working Java-based reporting system that makes generating reports so fluid and seamless. I'm still working on it right now.

The latest project already has a new webpage on my website. As a result of adding all the new projects to my website, I've had to increase the size of my 'Projects' menu item and update BalfBar to accommodate this. 

This week has been very tough on my mental health after feeling bullied by a doctor and feeling depressed as a result of it. I've needed something to take my mind off the whole situation. 

Visit the jbTAR webpage to learn more about what it is.

BalfML, my own markup language, is now available to view on my GitHub as a formal specification.

Whilst the specification is clear and provides some clarity as to what the language context will look like, it's is far from finished. There are plans to update the formal specification and indeed the markup as I begin to develop Java, Python and C# libraries that will parse the data to the correct format. 

The formal specification of BalfML is similar to that of the specificationless INI format and the TOML markup language. However, BalfML has a few additional data types and features. 

I will soon build this in Java as well as for ZPE. 

I also intend on using this as a configuration format for ZPE soon enough.

ZPE for the last few months has been in the back-burner a bit, something I absolutely hate to have to admit, but it's been like this because of the fact that it's really such a complete language. This makes it hard to add new innovations to the compiler design and features to the interpreter. 

For a long time, Typo has been under development and unfortunately has yet to be released. During the days of BRS, Typo was an easy system to implement but because of the fact that ZPE focuses on speed of compilation Typo has been difficult to implement. 

The future of ZPE is not going to be about updating each version with new interpreter functionalities but focusing on tightly integrating the design so that it supports 'plugins' - but not plugins to add features but to add more built in functions. The standard library (stdLib) did this in a way that expanded ZPE using only the ZenLang code and in turn only used features that already existed to build a set of very useful tools.

ZPE's plugin system is powerful and efficient, so development of smaller functionalties is a good idea - it will also keep the size of the main executable file down to a minimum thus making it more portable for users who do not need all of the functionalities. I recently added a new function for testing if a built-in function exists so that applications can be independent of versions.

I hope you have enjoyed using ZPE to date and I'm looking for feedback. Version 1.4.4.3 includes the feedback command, so all you do is type into your code to leave feedback:

feedback();

Tonight I am happy to announce the next version of ZPE, version 1.4.4. This is next stable release of ZPE that can be used for production and it brings a variety of new changes including:

  • The revamped LAMP parser introduced in the update versions of 1.4.3 (i.e. 1.4.3.10 and 1.4.3.40)
  • A better LAMP interpreter
  • The new Try-Catch statements
  • New increment and decrement operators (+= and -=)
  • Added string concatenation through the concatenate operator
  • Better error handling and better internal error messages
  • The hashing algorithms (SHA and MD5)
  • The associative array now uses the => instead of = to make an association
  • Objects and structures have merged into one
  • Added scopes (public, private and friendly) to variables
  • Made the interpreter more efficient with memory and less likely to crash

ZPE 1.4.4 which is the stable release of the beta updates of version 1.4.3 is the best version of ZPE to date and it is by far the best version I have released! I have finally finished the core of ZPE and no longer need to add any more constructs to the main language (although you can suggest some if you'd like). I cannot tell you what this feels like to finally have the language work like any other language out there but to have achieved all of its aims.

The future of ZPE

The future of ZPE is going to focus on conversion between languages and the standard library. I will leave ZPE at version 1.4.4 for the foreseeable future since the version numbers tend to come from the fact that an internal feature has been added to the compiler or interpreter. Of course, if bugs are found they will be fixed and ZPE updated. 

In the meantime, I will hopefully begin the construction of a formal language syntax for the language. This will take some time but it should be pretty good fun too. I will be focusing on improvements to the internal documentation of ZPE but I do intend to take a step back from the main development. 

My final remark

I really cannot believe that I have ticked all of the original boxes in ZPE as of today. Concatenation being added just today was the very last step into making the language perfect and now it is (or at least in my eyes)! I hope you enjoy using the latest and greatest ZPE I have ever made! 

Help me to make it to 2,000 downloads by next month by spreading it! (it has been downloaded just over 1,000 times and the ZPE pages is my most popular page on my website after my personal blog).

ZPE 1.4.4 has been released to my Download Center as a free download. Enjoy.
Posted in Software
zenith
parsing
engine
zenlang
zpe
1.4.4
1.4.3

Whilst I officially released version 1.4.3 last week, I have been updating it with new features and updating the download file as I do this. Since finding a small flaw, I have been working on fixing it leisurely since finding and solving the problem was not too difficult. I've not been updating the version number of these versions since I've released version 1.4.3 as a beta version so far. Nonetheless, version 1.4.3 is not finished. 

Anyway, the improvement I have added today is the long-awaited break() command. This function is void, meaning no return value, but it will quickly break you out of a loop you've entered - much faster than the return statement. So go on, give it a try; it's pretty good!

1.4.3 also removed the XOR statement from the logic parser. I want to remind you that there is now an xor function to do the same thing. 

1.4.3 is by far the cleanest version to date, and it tidies up a lot of the mess left from version 1.4.1 and 1.3.7, which were the hacked-together versions. 

Also, you are probably wondering about the name of this post since it talks about Isla de Muerta. Isla de Muerta is the name of the fictional island in the Pirates of the Caribbean films where the Black Pearl (aka the Wicked Wench) is anchored and is the name of version ZPE 1.4.3. The name was chosen because I'm a massive fan of films and Johnny Depp, mainly because I've been watching them all recently. I plan to name the following versions after things related to these films rather than after lochs of Scotland for now (I did name versions of my Data Project application after Scottish lochs for some time, too, but since I dropped support for it, I decided to continue the naming over to ZPE when it began).

Posted in Software
zpe
zenith
engine
zengin
1.4.3
isla
muerta
pirate
of caribbean
pirates
Powered by DASH 2.0