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

I have finally redesigned BalfPick from the ground up for the second iteration. This version is completely different and relies on much less JavaScript and does more using CSS. It's much higher performance, better on mobile devices with touch and much lighter in weight too. 

Part of the new design focuses on streamlining the manner in which it is used and instead of providing a custom dropdown list it simply uses the original dropdown list built-in to the browser or operating system.

Below is how these new dropdowns look on my website in dark mode.

As someone who loves computer hardware, I found this article a very interesting reminder of the benefits of RISC over CISC and the benefits of CISC over RISC architectures.

https://medium.com/swlh/what-does-risc-and-cisc-mean-in-2020-7b4d42c9a9de

Posted in Tech talk
risc
cisc
processors

It is at long last that Apple has announced its own silicon will be used in the next range of Macs. The Apple M1 was announced today as Apple's first in the line of successor CPUs to the Intel range they've used since 2006 (I still remember the day back then and I wrote a little article in Microsoft Word so I could remember the day).

As a result, I of course had to be one of the first owners of these new machines so I ordered it straight away. This new MacBook I've ordered comes in the form of a MacBook Pro (though I was very tempted by the Mini as well) to replace my 2013 MacBook Pro 15". I wanted a 13" again this time since I wanted the portability again.

I am really looking forward to reviewing this machine and hope that it is everything I had hoped for! 

Posted in Apple Corporation
apple
macbook pro
apple m1

He was the first James Bond and an amazing actor. Sean Connery set the standard for what James Bond was and is. As Bond, he was tough, brutal and yet a hit with the ladies - everything Bond should be. 

File:SeanConneryJune08.jpg

Much like Roger Moore who passed away a few years back, Connery had his own style that brought something amazing to Bond. I cannot actually believe he's no longer with us. I will certainly miss him.

ZPE 1.8.11 is now available and is another small update in terms of the number of features but big in what the new features bring. 

The first big new feature is support for infinite parameters. This is done within the definition with the double dot notation such as function x($y, $z ..). There is more in the documentation.

Reference functions have been completely redesigned, as have objects. With objects, there is a 2x performance increase whilst with reference functions, there is a much larger performance increase as well as a stability improvement. Reference functions can now be chained to each other much easier and this change requires much less code to do it.

Long, long ago (maybe some 8 or 9 years ago) I was still a desktop software developer and a totally newbie to web development. I then came across a little something called clearfix. I saw how overly used clearfix was back then - almost every website used an absurd abundance of these little divs with the clearfix class on them.

But what was it and why is it so important that a mammoth number of websites out there featured it and is it still a thing? 

First off I'll answer the latter question first, yes it's still a thing. 

Secondly, clearfix is designed to stop elements with a float property floating over a block element:

In this case, the footer is a block element and the picture of the motherboard is a floating element. Notice how it overlaps the footer.

To fix this, the footer is given the clear: both property.

Clearfix

So then you ask, what is clearfix?

Clearfix is, in a nutshell, a simple fix that stops things flowing without having to add clear: both to the following element. By taking advantage of CSS's pseudoselector :after, we can easily force any floating elements to be followed by an element with the clear property set correctly, we can stop the floating element floating over the element that follows it.

Do we still need it?

The answer to this is actually yes, for the most part. You see, backward compatibility will always be an issue that needs attention but also because the replacement isn't even all that great as of yet. 

Normally, frameworks such as Girder, Bootstrap or Foundation will deal with the annoyingness of clearfix for you by adding it to classes such as the row (in Girder/Bootstrap) for you. So when you create two columns with the float property you wrap them in a row which features clearfix properties and stops the next content flying over the floating columns.

So clearfix is here to stay.

ZPE 1.9.1 might be over three months away following the version/year release cycle that I developed for it, but nonetheless, it is a good time for me to explain the new codename system chosen for this cycle of ZPE versions. 

After much debating with my brother over this one, I have decided to name them after places in the Scottish Borders. I thought I'd start off with a few version names:

  • 1.9.1 - Kelso
  • 1.9.2 - Selkirk
  • 1.9.3 - Hawick
  • 1.9.4 - Peebles
  • 1.9.5 - Melrose
  • 1.9.6 - St Boswells
  • 1.9.7 - Galashiels
  • 1.9.8 - Chirnside
  • 1.9.9 - Duns
  • 1.9.10 - Lauder
  • 1.9.11 - Earlston
  • 1.9.12 - Roxburgh
  • 1.9.13 - Allanton

There may be more names in the future but that's all of them for now. You may also note that I am no longer starting on minor version 0, e.g. 1.9.0, but starting on version 1, e.g. 1.9.1. This is a change that makes sense to me when developing.

ZPE 1.8.10 is another big improvement with the new security sandbox being improved considerably. It also adds big new features to the ZPEClient and ZPEServer modes that allow SSH-like commands to be executed as well as SFTP-like commands.

I have also added in my own file system management tools to assist in correctly parsing file pathnames such as ../ on Windows systems as well as all other platforms for a consistent file management system.

The new logo has also been added to the GUI and I've improved the debug mode.

Once again, ZPE 1.8.10 is a big update like its predecessors were. It's now available for download from my website in the usual place.

SFTP is an amazing protocol. I've been using it for a good 7 or 8 years now and it's been one of the most useful tools I have ever used.

SFTP features commands like get and put. 

Well ZPE 1.8.7 added the send> command to the ZPEClient which allows sending a file to a ZENServer. Prior to this, I had been ensuring that all data between the client and server is secured using my own encryption system. Well, without hesitation, I knew that this had to come to file transfer too. So now ZPE can send and receive files that are encrypted and decrypted within the client and server. This breakthrough is a compelling reason to use ZPE since it offers a very strong alternative to SFTP. 

Further to this, to make it even more powerful the client now offers the ls (list files locally) command and the rls (remotely list files) commands. 

Past versions of ZPE have often contained flawed features such as the LAMP evaluator or minor things like performance glitches. This is often the case with any project. But any project will have flaws in it somewhere. ZPE is no different.

However, the stability of ZPE has got to the point where I believe that most of the flaws and errors that stop it being usable have been ironed out.

Over the last few months, ZPE 1.8.x has been removing old code and has cut down over 10,000 lines of code from both the runtime and compiler to make it more streamlined but also to improve stability. Further to this, features from very early versions have been revisited and revised to ensure much better performance and reliability - writing a programming language, compiler and runtime is quite tricky you know! Most of the issues actually come from the runtime, since I spent a lot of time in 2016 improving the compiler whereas the runtime just got a small bit of TLC.

Another major issue that often occurs is when new compiler features are added that actually could interfere with another feature. Now I spend a lot of time drawing up the ideas so don't get me wrong, I actually do plan. But sometimes it's difficult to see these potential collisions from the offset. For example, the move to the fat arrow syntax for lambda functions caused all sorts of issues until I decided to merge functions with lambda functions (that in itself caused further issues). More recently I discovered after going through the compiler that the generate_parameters function would allow values to be added in a function declaration's parameters: e.g. function foo ($x, 10) { print($x) } because the generate_parameters function was designed for both formal parameters and actual parameters. This has been fixed by separating these into generate_parameters and generate_arguments.

If you are writing programs using ZPE and compiling them, make sure to recompile them with the latest versions as soon as they are available as byte codes are constantly changing and being added. A new feature I'm adding into the runtime is to check which version compiled the program before attempting to run it since old versions may have different byte codes.

Since ZPE 1.8.8 was released as a fix for a bug in ZPE 1.8.7, ZPE 1.8.9 will be released on 05/08/2020.

Powered by DASH 2.0