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

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. 

In the last few weeks I have been focusing on improving DragonDocs and DragonSlides interoperability. To that end, one of the things I wanted to do was reduce the number of file reads and writes, which have always been a risk for bottlenecking. As a result of the constant back-and-forth nature of reading JSON data for the API, the file reads are wasteful. Instead, I've decided to use APCu.

APCu allows me to store the JSON data in RAM rather than on the SSD storage. SSDs are fast, but RAM is considerably faster. There is a noticable improvement to the system as a result of this update too. 

I moved into my current house four years ago today!

This is my first house but not the first time I've lived away from my parents house as that was in 2013 when I moved into my halls of residence at university. 

It was strangely easy buying my house back in 2021 as I had saved enough money up myself (I was saving an awesome £1200 - £1600 a month at the time and had been for the last 4 years) and I got a slight discount of 5% for being a teacher so I had the deposit I needed. Buying the house took place in August 2020 where I put down my deposit for the house to be ready for April 2021. I remember it kept moving between April and June but eventually towards the end it ended up being February. 

Living here has been so much nicer than living at home (obviously) and I've done a lot of stuff to the house since moving here including running a network around the house, I've had my garden done beautifully (thanks to mum), getting my loft boarded (I couldn't live without this as I'd have nowhere to store stuff), I've installed my own smart home with Home Assistant and I've now got my fabulous CleverCloset understairs storage.

I'm always happy to come home to this place and whilst I have plans to move to a different life style in the next few years, I will continue to enjoy living here. 

Powered by DASH 2.0