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.

Jamie Balfour'sPersonal blog

TYPO has been completely redesigned from the ground up to make it even better. Compared with the first version of TYPO, the new version uses late static type checking which is done during runtime rather than compilation time. This does add a slight performance penalty compared with untyped data, but it is far more stable than attempting it at compile time since so many functions may return multiple data types.

For example:

declare $i as number = 50
declare j as number = 32
$i = "Test"

This would crash when it gets to setting $i from a number to a string. Previously this check was carried out by the compiler but it wasn't effective in comparison, whereas defining it this way ensures 100% efficiency in comparisons and although late typing often has performance penalties, in comparison to the previous iteration of TYPO so much has been improved that these penalties are actually minuscule. 

Another major change to TYPO is that is now always enabled and doesn't need to be set in the ZPE Properties file, and can be used in parallel with untyped YASS code for the first time.

The formalised specification of the language has yet to be updated with this new information but will be sorted at some point over the next few days.

With ZPE and YASS featuring more and more unit testing capabilities, I thought it was time for me to look into adding proper testing methods.

ZPE unit testing will broaden and expand the current situation with unit testing to the point where specific unit testing scripts can be produced separately from any code.

Unit testing, known as zUnit, will feature its own language parser, also built upon the Zenith Parsing Engine, of course. It will use a language different from YASS entirely and will also allow multiple tests to be carried out on code very quickly.

Like when ZPE started out, it will likely begin as a very basic tool for testing but will expand to provide more and more features as time goes on.

As a result of the sweeping new changes brought to unit testing so far, ZPE 1.9.6 is now available much earlier than I had originally planned for. Please also note that this version removes the new record structure as this is under redevelopment.

Over the last few years, the landscape for our business has been heavily changed by the outbreak of COVID-19. Jambour Digital has had to adapt quite a bit to both continue to grow and to retain existing clients. We've supported our existing clients by offering them both financial support and extra features. But as we move back to something a bit like normality, how do we plan to expand Jambour Digital?

Challenges faced

Over the last year or so, we've faced a tremendous amount of challenges within the business, ranging from not being able to see new clients, to not being able to meet with our existing clients. All of this makes development much trickier. Further to this, we've encountered that a lot of our clients themselves are so busy that things like updating a website or even simply checking out a new feature on a website is becoming a difficult task to fit into their schedules.

Leading us back to normal

As the leading managing director of Jambour Digital, I have overseen all plans to support the business out of this difficult time and to support our clients in doing so. 

We have adopted a new member of the company on contract, Kyle, who works with us when we need him. This will help me focus on the business side of the company alongside my brother and my mother who are the other managing directors of the company. 

We plan to take things one step at a time to minimise risk and to ensure a safe return to normal. 

We understand our clients who hopefully understand that the most important thing here is safety. 

I'm really happy to announce BalfSlider V2 as of today. It is now fitted out with the generator and the samples as well as being used on my own website without any issues.

V2 breaks compatibility with V1 but offers much smaller file sizes and easier to maintain code. Packaged as always with the slideshow is the BalfSliderAnimations package. This has changed too, albeit, very marginally. Effects are still the same but the structure of the code differs.

Why did I bother?

The old version was, at the very least, difficult to maintain. I needed to streamline this version and move away from passing objects. The new version offers more functionalities that will allow future animations to be created with ease. 

You can download the latest version from my website from today. 👌

Over the next few weeks, I'm moving all of my teaching resources from PowerPoint and Google Slides to my own website which will bring them to HTML and CSS and bring them alive.

By bringing them to the web, I can use what I know best to make these slides highly interactive and useful. I have in the past done this with some of the slide decks I have used at talks I have carried out (such as my talk at Amazon on a small business using AWS to promote growth) and also as an introduction to ZPE but things haven't been as smooth as they will be this time.

This project stems from my hatred for both Google Slides and PowerPoint due to the lack of something that mirrors CSS - I have been developing my own PowerPoint theme over the last few years and every time I think of something new, I need to update all of my slides. CSS fixes this and it's something I've wanted for a very long time.

It's now found at  

As many of you know, I'm an Apple fan that has simply spawned from my love of my Mac and as deeper integration between devices became a big thing, I began to move entirely to Apple starting with iPads, then iPhones (I've had iPhones for years but I've always tried switching from time to time and then realising that it's better to stick), Apple Watch in 2019 (after my very anti-wearable technology stance that I had stopped when I bought my second Apple Watch) and AirPods last year.

The spring event was very exciting and once again, Apple didn't disappoint. However, it wasn't all good. As someone who owns an iPad Pro I was slightly disappointed to see the M1 powered iPad but at the same time realise that it's not targetted at me anyway (but I do like to have all the gizmos and gadgets and Thunderbolt would have been amazing for me).

However, I will say that it's blurring Apple's own vision of a distinction between tablet and laptop/desktop computers. Apple has always said that they would never merge iPad and Mac devices and would never unify the operating systems and whilst they haven't done this yet, and they may never do, there is one particular area where Apple's latest iPad breaks everything and that's the MacBook Air.

On the left are the specifications for the base model MacBook Air and the specifications for the iPad Pro. You will likely notice that the iPad has better graphics specifications than the Air does at the base model. This then makes me wonder, what's the purpose of the Air?

As I pointed out in my review of the MacBook Pro M1, the fans are almost impossible to ramp up to any speed at all, even when I'm working outside in the sun. I also pointed out that the MacBook Air has no fans in it at all whereas the Pro does, and for the majority of people (including me) the MacBook Air would be a more suitable computer system because other than that the systems are practically the same. 

But now that iPad Pro has the M1 with better performance than the Air which then suggests that those who are looking for an entry-level system in the Apple M1 ecosystem could look straight to the iPad Pro rather than the Air and those who will need that extra performance brought on by the MacBook Pro's thermal capabilities, would only need to think about getting a Pro, not an Air. That then leaves the Air in a place that doesn't really exist other than for those wanting to get a decent yet cheap Mac running on macOS. 


AirTags look good, as you would expect, and what astonished me the most was that the batteries are replaceable which isn't available on all models of Apple's biggest competitor - Tile. This is surprising since Apple seems to be going the opposite way (along with the rest of the industry) and removing user-serviceable components.

I've actually ordered an AirTag for my Rad Power Rad Runner bike (aptly named the Rad Revolution). 

The biggest criticisms for me are that the tag has no option for sticking it to something. Another thing is the lack of choice with them since there's not even one with a carabiner attached to it, and even if Apple did decide to release something like this, based on the price of some of the accessories for them (or cases) I would expect them to be priced ridiculously anyway.

Since it's Apple nothing is cheap, but in comparison to Tile's offerings, they are priced at a similar level which is surprising. 

Apple TV 4K

It's good that Apple didn't give up on TV a few years ago when it was next to nothing since they have only just made it worthwhile by bringing it to several existing TVs, Macs, iPads and now to other TVs with the Apple TV 4K. The ATV4K is a welcome update to the older model which hasn't been updated for quite some time. 


I saved the best to last since I think the new iMacs are exactly what needed to be done with the iMac, apart from a few minor things. 

The much slimmer design and smaller bezels have worked very well in this design and fit with the design of the iPad Pro with the curved edge (which I really liked on the iPad Pro). 

But. And this is one of those things where I cannot understand what happened at Apple when they designed this. I can understand it with the Mac Mini, but why does it have the same processor as the iPad Pro, MacBook Air, MacBook Pro and Mac Mini? Why didn't it get some like an Apple M1X or M2?

Another criticism of the new iMac is once again down to the fact that like everything Apple works to achieve, they aim to garner awe in their products by announcing stuff such as the "the world's most advanced operating system ever" or "the most powerful phone on the market". In the case of the iMac they wanted to shrink the whole computer down so much and by making it thinner had to reduce the size and placing of the motherboard. Thumbs up on this one to Apple for making the board smaller, but thumbs down as a result of moving the board down to make the system slimmer and smaller, they have added back the 'chin' design of the iMac. And the worst bit of all, where's the Apple logo gone from the front of the iMac?

I will say though, I think I will, or, at least, my mother will end up buying one of these (my mother still has an iMac from early 2009 and it still runs fine but it's a bit chunky). 

spring event

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 jamiebalfour04 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 jamiebalfour04 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.

Powered by DASH 2.0 (beta)
Code previewClose