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

Jamie Balfour'sPersonal blog

The new global keyword that has come to ZPE is one that totally changes the way in which nested functions can be used. It's actually awesome in the way it works too as it doesn't break existing code (recompilation is required) as it still works with the same syntax as the function call from before. 

Performance-wise, it's much better. Feature-wise, this means that you can nest a function declaration inside an if statement and declare it as global in the if statement. This is awesome and it was by accident that I discovered this was already partially implemented in previous versions.

ZPE 1.10.12 will be available on the 12th or 13th of December.

We all know how infuriating it can be when a computerjust stops working, and repairability is the key to making the world more sustainable. But SoCs in general have made some parts of this easier than before but have also brought many other issues with them.

First of all, SoCs or System-On-Chips are replacements for the architecture that existed for generations where the CPU, GPU, northbridges and south bridges and the main memory are in completely separate parts of the system.

Back in the days of the Core 2 Duo and Phenom and Athlon days we had IGPs (Integrated Graphics Processors) that communicated through the northbridge which meant it was a long way a way from the central processing unit and were therefore slowed by long path that they had to take to perform operations. We also had two bridges; the northbridge (or memory hub) which communicated with the main memory (RAM and ROM) directly from the CPU, and in the case of an IGP, the graphics processor. This was removed first by AMD and then by Intel (you'll actually notice that whilst AMD has always been the underdog in the CPU market, it actually brought some of the best innovations to the market such as x86-64 and HyperTransport).

But we still had the southbridge for a very long time and it continued to provide backwards compatibility with older hardware such as PS/2, RS232 and other obsolete connectors using the SuperIO hub. Lately however, the SuperIO hub doesn't really need to exist and the whole southbridge has been integrated as a chiplet into the main chip (or SoC). Not only does this improve performance, but it reduces power consumption and heat.

The separate chiplet idea is also very feasible compared with integrating everything into the central processing unit or a dedicated external chip as you'll understand if you understand the term binning chips. 

SoCs have problems though

As an advocate for the concept of a SoC architecture over traditional architectures I can see the humongous benefits that they bring, and the bridge the gap that existed before whereby the performance of a computer was affected by how long the wires between different components was, but they do bring one caveat. 

That one caveat is the fact that all SoCs in laptop computers are soldered, often using the BGA-style of socket. This means that the whole board needs replacing when the the SoC has one faulty part, and, with more being integrated into the SoC, this is more likely to happen. This means that not only is it far more expensive to replace a SoC, but it also means that it is far more difficult. 

I've replaced many CPUs in laptops in my teenage years onwards, most notably is replacing my Pentium 4 laptop with a Pentium 4 Mobile-M chip but I would be hard-pressed to try and replace a BGA chip these days. 

How they need to be improved, particularly in laptops

As the Right-To-Repair movement progresses even further, one of the main areas people should be looking to push for is PGA-based or LGA-based sockets that allow direct replacement of the SoC again. Heck, even the Pentium-M CPUs with their Socket 479 sockets were replaceable to the point of remove and slot in. In a world where slimness is the most important thing, we really need to think about sustainability too.

I have mixed feelings about my new daily driver. For one, I've been a Mac user for over 11 years now and I have come to love features like Find My and Apple Maps as well as Keynote and Numbers as well as Graphics, Cheatsheet, Timetable (both available on iOS and iPadOS too, which means I can view on any device). I also love the other things like Preview, LanScan, Music, Apple TV, Quicktime and of course, control over my Home (this isn't a huge problem as I use Home Assistant anyway). I weighed up the advantages and disadvantages and the only major advantage the switch brings to me is that the parts in the computer are replaceable. 

Let's be clear though, my new laptop isn't designed to solely replace my MacBook Pro, it's purpose is to get rid of the desktop computer that I have and make the whole work and play more streamlined. That means the chances are my MacBook will still remain a major part of my daily life whilst my new laptop will remain as my work machine and gaming machine (through the eGPU). I do not want a repeat of the disaster that was my Razer Blade Stealth where it basically sat and did nothing for three years despite me dropping £1500 on it. I am, for the foreseeable future, intending to keep my desktop PC as I wish to look at using it as a storage server (as it has a whopping 9 drive bays in it). Plus, the desktop was only upgraded last in July of 2019 with a £150 PSU (which is another amazing Corsair 850W PSU). 

I finally decided to jump away from big towering desktop computers to a more reasonable laptop-based eGPU setup. 

In the next few months, I will begin dismantling my desktop setup which I have had since January 2019. The desktop I currently have has parts that have survived 5 generations of desktop PCs, and some parts in it are as old as 2007. The PSU in it replaced my 10-year-old Corsair HX850 which lasted exactly ten years from when I built my first PC in 2009. It marked the point when I was considering ditching the desktop PC altogether and going down the USB-C-based laptop route which I tried with my Razer Blade Stealth until the screen started to fail.

I have been torn between two laptops that both comply with my environmental concerns and my Right-To-Repair belief. They are the Framework laptop and the HP EliteBook 845 G9. I have mixed feelings about both, but I am more swayed towards the Ryzen processor than an Intel that offers little performance improvements over my brother's Skylake-based computer.

Apple makes many bold claims, not least about it's attitude to the environment. But it also forgets to mention how detrimental Apple is towards the environment when it comes to their laptops. As an owner of several Apple products from a Mac Mini to several MacBook Pros, iPhones, Apple Watches, iPads, Apple TVs and so on, you quickly realise the lack of repairability each of these has. They all have that one thing in common - lack of repairability.

This is, of course, good for Apple, whose core goal is to make as much profit as possible (even though they don't need half of what they have made). Apple will make a nice bit of extra cash when they have to repair devices for users because there is no easy method to do this. 

But it's the planet that suffers. MacBooks cannot even have their batteries replaced by the consumer anymore - meaning that people like me who are experienced and able to do things like replacing drives etc, cannot do this anymore. Most people, including myself, chuck away the old device and get a completely new one because replacing the battery is around about £200 or something crazy.

All of this, is totally against the Right To Repair movement. Proposals for the Right To Repair have emerged in the European Union, which could force companies like Apple to start making their devices more repairable. As an iPhone 14 user who was actually trying to desperately hold on to his iPhone 12 until the iPhone 15 was released (mainly for the USB-C port that will be required by law), I find that Apple's defiance to law is disgraceful. 

I personally will not be buying another MacBook Pro after this one, which is a real shame as I love the device so much, but the fact it lacks repairability (as well as ports) to try and make it as slim as possible is very anti-consumer. As a long time Mac user, I have finally had enough. I will miss macOS but I cannot justify the lack of repairability in Apple's products.

Over the last few days, my work has been focused on finishing off the BalfVote website. 

For those who haven't been keeping an eye on my blog, BalfVote is now available to use freely at balf.vote. The new system allows you to create simple polls that users can access from their devices. It's part of my WISP project and the actual interface that was developed as part of my website has no actual styling. This is why I use this in my presentations - it fits with the theme. 

It's still in very early beta stages but the whole interface from the graphs and the questions works 100% - it's just the creator that still needs work.

In the November 2022 release of ZPE, sockets will be available through the new Socket object! This has been a long-requested feature that was first proposed but scrapped when ZPE became object-oriented. Further to that ZPE 1.10.11 is bringing back the UI object due to issues within the plugin version.

ZPE 1.10.10 already brings the new MQTT object which will soon feature subscription as well as publishing (probably in December). The new MQTT object is actually really awesome and it allows me to automate my house even further than before with ZPE. As always, the core principle behind ZPE is to make features like MQTT more accessible and easier to use, and the socket is no different. Instead of requiring 20 lines of code, ZPE's socket implementation requires just two lines of code.

ZPE 1.10.10 is considerably larger at 1.2MB instead of 960KB as it would have been if not for MQTT. It's still reasonably small, but expect ZPE to get bigger as new features like MQTT get added.

ZPE 1.10.10 will be released today at some point, and the headline feature is MQTT support. 

In case you didn't know, MQTT is built upon the TCP/IP stack and is intended for direct communication in the form of a publish and subscribe system. ZPE now has the ability to publish (not subscribe yet) messages to an endpoint and is fairly straightforward to use (unlike the underlying implementation). 

To use MQTT in ZPE, one uses the MQTT object which encapsulates several built-in functions (connect and publish). More will be published after the release today on using MQTT.

You could write the following code (assuming you have cached values already setup):

YASS
$topic = "comms"
$message = "Hello world!"
$mqtt = new MQTT()
$mqtt->connect("192.168.1.2", 1883, read_cache_value("MQTT_USER"), read_cache_value("MQTT_PASS"))
$mqtt->publish($topic, $message

Tonight I managed to recover my home server after it encountered a fsck issue. I'm going to say, when I had this issue I shouted the word it resembles. However, it was easy to recover from, since I DD my machine every day onto a separate location. The problem is, that downloading the image, for backup purposes, took forever. This is because the image is 40GB. 

My network is a mix of gigabit and 2.5 gigabit Ethernet and with my new gaming PC will be even more 2.5 gigabit. This causes slow downs for example when transferring from the home server to my MacBook (the server is only gigabit).

However, over the next few months, I will begin the transition to 10 gigabit Ethernet across the house for certain things like my PCs. I will be documenting this as I go along with it so follow my blog to find out more!

ZPE's codenames have been a continuing tradition, and since I announced version 1.10.x codenames I have been following a once a month release cycle, the same will happen with ZPE 1.11.x.

However, there will be a change. Instead of just being given a codename, each version will ditch the version number from the name and will instead use the codenames as the version. The version numbers will still increment, but will not be as prominent as the names. The names are yet to be decided but the first version, aka ZPE 1.11.x will be called ZPE Omega. ZPE will also keep codenames between versions in the future, so ZPE 1.11.1 may share a codename with ZPE 1.11.2 and so on. 

Powered by DASH 2.0