To use this website fully, you first need to accept the use of cookies. By agreeing to the use of cookies you consent to the use of functional cookies. For more information read this page.

Personal Blog

ZPE 1.9.3 brings a really nice feature that I've wanted in YASS for a while. That's Python/JavaScript variable names. It's more like ES6 than it is Python but have a look for yourself:

let x = 10

//Or a lambda function
let x = function() print("Hi") end function

This works by adding additional information into the compiler that allows it to distinguish variables from functions within the compiler.

I'm pretty impressed since the only performance penalty from adding this is within the compiler which is almost minimal. 

Diablo II came to me back in 2003 and whilst I was a little late in getting into it, I still enjoyed it as though it was the latest game to come out. It is still one of my most played game of all time. I had hours of enjoyment out of that game and it didn't stop after one competition. No, in fact, I have 'completed' Diablo II about a dozen times with new builds each time.

My favourite class was either the Druid or Sorceress or even the Necromancer. Normally, I would be the assist character in the party. One of the things I liked most about Diablo II was that you would have a very diverse party. When I played recently with my buddy Campbell, he went as the Paladin. When I played with my brother he was a Barbarian. When I played with my old friend Nick, he was a Sorceress (and he would constantly spam Ice Blasts dealing hundreds of damage at a time). 

But when Blizzard announced the game was being remastered I was, much like with Warcraft III: Reforged, over the moon!

I still play Diablo II, and that happens almost every year that goes by, but it's getting increasingly difficult to run. Recently I had an issue with my latest graphics card not being supportive of me wanting to play the game, even after running the D2VidTest.exe file that normally fixes these issues.

A remaster would definitely lift these issues and fix the problems that I encounter. 

What worries me most

What worries me the most about this is that we have another Warcraft III: Reforged whereby the game became unplayable and it was almost impossible to go back (I say almost because I have over 30GB of Warcraft III: The Frozen Throne installations from version 1.21 up to 1.31). 

Diablo II: Resurrected deserves to be perfect on launch day and not a mess like Reforged was on its launch day. So come on Blizzard, make sure it is perfect!

Posted by J B Balfour in Gaming
diablo ii

MXM or Mobile PCI Express Module is one of the most interesting standards that I actually found out about in 2005 when attempting to fix a laptop for a friend (Calum). His Fujitsu Amilo 3438 featured a removable GPU - something I had never seen. When I got asked to try to repair it I was honestly astonished at how easy it would be to do this. 

Unfortunately, it didn't end as nicely as it should have and it seemed that the laptop was beyond repair. I am happy that I got to have a chance at this though because it brought my attention to the MXM standard. 

By observing that MXM was a standard and one that was a very good idea in practice, I have for a very long time been a fan of it.

As someone who believes strongly in the Right to Repair, MXM may have a big part to play in the future, but what do the companies behind the development of systems that could incorporate MXM actually think?

What is MXM?

MXM is one of those really brilliant ideas that is unfortunately brought down by the manufacturers of computer systems. It is no doubt more expensive to follow the route of adding in replaceable graphics cards to a system compared with permanently soldering them, but it's also less profitable in the long run and this is my main concern.

The MXM standard is designed to provide owners with the ability to upgrade their systems at a later date or replace parts when they stop working. But the problem with this idea is, at least in the eyes of the manufacturer, that the customers will stick with the same computer system for longer rather than upgrading it regularly. 

Another major issue with MXM is that it takes more room than a soldered GPU and therefore doesn't allow for incredibly thin designs of laptops (like the MacBooks where Apple sacrifices everything to get thinner and thinner computers). 

MXM cards being a detachable component in the system are also more likely to fail due to connector failure. This is far less likely in soldered GPUs.

But even with all of these problems, MXM still eliminates one major concern that should be more prominent now than ever - the environmental impact. It concerns me that we have become very wasteful with computers with soldered memory and storage drives (like my old MacBook Pro and now my current MacBook Pro). Soldered GPUs basically mean that when the GPU decides to pack it in the whole system stops working. I've had this on numerous computers. MXM allows us to replace a broken GPU or upgrade an old one, bringing a new lease of life into the computer. From a purely environmental point of view, this would be amazing. 

With these new laws being passed, surely the time is right for MXM to take to the centre stage? 

Posted by J B Balfour in Tech talk

Since about December, I have been modifying my website with some pretty big changes here and there (for example, the H1 element is now centred and rounded). 

Many of the changes that have come have been very subtle and not changed any of the usability of my website. However, with the latest update, I also took a look at how 'BalfPopup' was working on my website and noticed it was highly inefficient. I made several changes to this so that it could be used with much more ease. However, at the same time, I broke one of my gallery's oldest features - the previous and next buttons. 

These were very useful and will have to return at some point very soon. They are also featured on my microgallery tool as well but do not work there either.

Posted by J B Balfour in Website news

I've kept it very quiet - almost as well as Apple keep their products quiet, but I thought I'd let you all know, I move into my own home tomorrow. It's taken a while and I may be 29 years old, but I'm finally here.

I put my deposit down in January of last year. I bought the house last August and I was just waiting for the finishing touches to be applied. And although I do not really believe in fate, it's a bit of a coincidence about the house that the exact same style of house from Taylor Wimpey just along the road in Musselburgh, the type of the house there is called the Balfour. Things have worked out well as being a teacher I got 5% off the price of my house which means I've been left with a bit more money than I originally planned for which has allowed me to save a bit more.

As many know I actually had a mortgage and everything in place when I was 26 and got within three weeks of buying a house in 2017 but you know what, the decision to not do that (despite being half the price of my new house) was a good decision because I've got a much nicer and better-built house as a result. Some photos are provided below but more will come soon. 

Now I've just got a bunch of cabling (CAT6, USB and HDMI cabling) as well as carpeting to do to be ready to move in. 

I already have a feeling of missing my childhood home, but I'm only 5 miles away from it. 

House 0 House 1 House 2 House 3 House 4 House 5 House 6

And the next day...(as many of you know I do not really do selfie shots but this was a big moment!)

A thief caught entering my house!

Posted by J B Balfour in Life

ZPE 1.9.1 was officially released today marking the first of the 2021 versions of ZPE. 

ZPE 1.9.1, codenamed Kelso, comes in with a large number of new features and performance improvements and is recommended to all users. 

Version 1.9.1 finally fixes undefined comparisons, improves the LAME parser, adds support for empty associative arrays to the JSON parser, fixes a parameters issue, and fixes negative numbers in the binary calculator by cutting them to the appropriate number of bits (this was tricky to implement but I figured a way to do it as I always do).

But, the big feature is the match construct. This is the first new construct in a while as well (it's actually an expression but since ZPE doesn't have expressions in the documentation and it flows like an inline construct I'm calling it a construct). The match construct is now fully in the documentation and it's a pretty powerful construct. 

Did I mention that ZPE 1.9.1 is actually smaller than ZPE 1.8.13 too?

One of the new features that's been recently added to PHP 8 which I'm also excited about is that of union types. ZPE has actually had union types for a while, but it was never formalised in the YASS language and therefore never actually enabled. In the next few versions, I will bring union types to ZPE. 

There are other plans for ZPE in terms of types actually, since it was suggested that untyped and typed code should be mixable. Thus, in the next few versions, I will bring the ability to mix and match hard typing and soft typing in the code. 

EventPanel, a Jambour Digital product was a project that I had the joy of developing two and a half years ago. It was not an easy task but was incredibly rewarding to finish.

Its origins go back to one of Jambour's first clients who required an event management system within their website. As a result, the system was tailored to the client's requirements. It was tightly integrated into the Sahara ecosystem which all websites are. It's development focused on simplicity rather than flexibility and as a result, the finished product met the original requirements to a T. But it was very static. New features were added and they were easy to add, but they were often niche features that were specific to one client.

In 2020 we at Jambour launched a separate product designed to replace a considerable chunk of the original websites code base. The product was called EventPanel and whilst it appeared the same as the original website, the underlying implementation was somewhat different. The new implementation was designed to make modularity the key focus of the design so that new websites could be developed faster than ever. Version 1 definitely did this to the degree that it could be used across multiple websites. But it still had a solid static feel to it and not a dynamic feeling to it. 

Version 2 aims to improve this by building upon the foundations that version 1 set out. Version 2 gets rid of any ties to specific designs and reduces any club membership event to one of four kinds:

  • A free event in which users can sign up to
  • A free event in which users can sign up to and a superuser can pick who attends the event
  • A paid event in which users can add to their basket before paying
  • A paid event in which users can select a partner and pay to sign up to, or leave the partner field blank and allow another user to add them as a partner

These were outlined as functional requirements of the original client's specification that have slowly made it into the new specification for EventPanel. As such, we've also modularised the databases so that they aren't tied to one club. 

Jambour Digital plans to make a live testable version of EventPanel available soon too.

Posted by J B Balfour in Tech news

Every version of iOS is a masterpiece of artistry and creativity that makes designers reconsider their design language, particularly in the field of technology. 

A result of that is that when Apple began to remove curved user experiences from it's operating systems several design teams across the world saw this and followed suit. 

Version 3.x of my website focused on the move from skeuomorphic things like my notepad style notes, box shadows everywhere and generally ugly interface to a much flatter interface. The interface was very square. This is how most flat interfaces start off. Apple's did, and back then square designs were in and curved ones were out. But slowly but surely Apple's own design language has changed to encourage the use of subtle curves into their operating system.

Well, you may or may not have noticed, some subtle curves have made their way into my website, and it all started with something as simple as my little quick alert box (try running a code sample of my website to see what I mean). You'll also have noticed that all the buttons on my website are curved too. This change is minor and fairly unlike the version 3.0 move from skeuomorphic elements to flat ones, but it's important and it's been received very well. 

Posted by J B Balfour in Website news

As part of the JavaScript tutorial on my website, I introduced testing code live on my website. Testing code was a major piece of making the tutorial work, but it was always going to be very straightforward with JavaScript and require no real security concerns since it runs in the user's browser.

Today I began to develop a way of testing both PHP and Python samples that exist on my website. I aim to have this ready by mid-March but it is slowly being rolled out across my tutorials with much of the PHP tutorial already set up for this. 

I'm hoping this will be useful and bring further benefits to using my tutorials which I'm very proud of.

Posted by J B Balfour in Website news

Here is another one of my traditional posts that I have been doing for each year (though I decided against it in 2019). This is to keep traditions going.

Last meal I ate: Spaghetti Carbonara

Last thing I had to drink with a meal: Coca Cola

Last place I went out to eat: The Waterside Bistro/Glenkinchie Distillery

Last film I watched: Pan's Labyrinth

Last game I played: Warcraft III

Last song I listened to: Feliz Navidad

Last person I have sent a text to: My mother

Last friend I have spoken to in person: Campbell

Last TV programme I have watched: Scotland's Hogmanay Live

Last major purchase for myself: A new desk chair

2020 was a difficult year because of COVID-19. However, there were some major positives for me this year and it has made the year easier than it could have been.