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

After 3,500 builds, the latest release of jbTAR, version 1.1.2, will be available on 1 May 2025. This version fixes a few bugs and improves compliance with the ACID properties of databases. It's also powered by a slightly more up-to-date version of ZPE. 

jbTAR will not follow the release cycle that ZPE has followed for the past five or six years and will be released much more casually.

I am really excited for the launch of the next version.

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!

Today is YouTube's birthday, and I remember watching the first video on YouTube ever! I remember going to my next-door neighbour's house and watching YouTube as it was a new service that they'd found out about prior to its launch. Before YouTube we all used to watch Stupid Videos (.com) and Weeble's Stuff. 

What a wonderful memory that is!

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.

I will launch modules for the YASS language in a very near future release. These modules will further compartmentalise the YASS language and add to its object-oriented paradigm. 

Modules are the parents of structures, objects, and functions. Their primary purpose is to use static methods, like the library system currently does, but in a far more flexible manner. This will involve many underlying changes to the systems of the ZPE Programming Environment core. It's currently planned for a July release. 

Dysphasia is a language disorder that comes from a variety of different sources, one of which is damage to the brain. As you'll know if you read my blog, I had cancer back when I was around 17/18 in my brain, which wreaked havoc across my entire body, ranging from the bottom of my spine to my frontal lobe and pituitary gland. The result for me was, of course, issues with the hormones in my body, damage to my nervous system and, of course, learning difficulties (at least for a while). My dysphasia came from a misdiagnosis (it was more my doctor messed things up by not looking at a second MRI, which showed there was nothing there, before choosing to do surgery) that led to part of me being seriously damaged for no reason.

One learning difficulty that comes and goes for me is dysphasia. When I say it comes and goes, I believe it's always there; it just worsens occasionally. It's gotten worse over the past 10 years, and a lot of the damage done was from radiotherapy more than anything else. It's been really bad this last two weeks mainly due to stress and anxiety.

Dysphasia is not just a disorder that affects speech; it also affects comprehension and understanding of what people mean. For example, sometimes I know what a word means and then, occasionally, when I see the same word and cannot understand it.

It leads to extreme frustration with myself, particularly what happened to me, and I feel useless. I feel people sometimes look at me and think I'm stupid or something, yet I know when I'm having a day where I'm in control of this, I can talk. You see, I'm typing this up without anyone else's help, so right now, you can see that right now I am not feeling the effects of dysphasia. Sadly, I have, in the past, considered committing suicide because this gets to me more than anything else in the world. 

People aren't really aware of how difficult it can be to have dysphasia and don't think it's a real problem. Over the last few years, I have found it incredibly challenging, particularly when doing job interviews and public speaking (I usually blame stress for this as I don't want to come across as 'stupid').

Recently (I'm talking about the last three or four months or so), I relied on restoring an older version from a backup, at least for some parts of the project. The project is, of course, ZPE Programming Environment. This is because the new features added unintentionally caused issues with previously added features. Much to my disappointment, this meant rolling back several versions of the code to mitigate the problems brought by the new changes.

My commit messages helped a lot here but were not perfect. The messages often describe fixes or new features being added but do not detail precisely how I do this. That's because the ZPE Programming Environment core is closed-source, and I do not want to share all the new things in full detail to everyone (particularly when it could affect security). 

Take this commit:

Added a fix that seems to have fixed bug #35 ("Fix excess bracketed calls")

They are far more helpful because I can refer to the bug in more detail. This led to the ZPE Tracker, which is designed to identify and describe bugs and features brought to ZPE and allows commit messages, which could be done just before heading to work, to be much less detailed and just linked to the bug number. 

Anyway, commit messages are designed for several reasons, but one of the main reasons is that if a program needs to roll back to a previous version, finding that version can be done much more straightforwardly. ZPE is multifaceted in that I record commit messages, update the changelog, and maintain a list of bugs and features on the Tracker.

In general, from working in the industry and working on my projects such as BalfBar, DASH etc, commit messages must be incredibly detailed. They are designed to ensure that other developers can pick up the code and figure out exactly what happened in the last commit and for team members to see exactly what a developer did on a project. Messages, therefore, must be incredibly clear. 

I got some awesome feedback from a parent of a pupil I teach (I also asked if I could share their feedback anonymously on my website). They said:

[My child] thinks the world of you and everything you do for the school. We also know all the great work you do for the school, and all we hear is great things about your class! We also love what you've done with your lessons by making them all online, and they are great. Thank you for everything you do!

I was, of course, over the moon with this feedback, but I also know I put a lot of work in for the pupils and do my best at all times! The comment referred to my DragonDocs tasks and the interactivity that it brings (which has been praised several fold in the last few weeks by many pupils).

It's very nice to get feedback like this from a parent, especially after having had feedback from some parents at the weekend, too, to add to this!

Did you know that in CSS, counters do not affect elements that are display : none? What I mean is that they do not increment inside an element with display : none.

I recently discovered this weird little anomaly whilst building in some updates to DragonDocs and I never knew this. 

Powered by DASH 2.0