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

As I mentioned I recently got a place for a Master of Science degree in Computer Science (something I should have done before going into teaching and before starting my PhD). 

I've taken the next step in my career plan to get into lecturing by formally accepting the Master's Degree and paying for the first part of it. So now I just need to get through my Master's degree and then find a job as a lecturer! This is totally exciting news!

I just read this:

Californians: your right to repair is now law. Thanks to an advocacy coalition led by CALPIRG (California Public Interest Research Groups), individuals and independent repair shops will have more access to the materials and information they need to fix their electronics and appliances. This follows a wave of encouraging right to repair laws across the U.S.!

This is great news! It could change the way we repair devices! As you'll know if you read my blog that I am an advocate for the Right To Repair movement and have been since about 2015. 

The latest feature to come to ZPE - YASS Unfold - is a very useful feature. YASS Unfold does just that - it 'unfolds' the code into natural language, explaining what the code is doing. The very first version, which will be released in late October, features only a handful of features such as while loops, if statements and function calls (so far, but may contain more) and will not be the full feature.

This could be very useful for explaining complex code and will be looking at implementing some machine learning to improve and optimise results. I aim to have every feature from ZPE up to version 1.7 by the end of the month as it doesn't take long to write. Further to this is the new directive @unfold which allows you to specify what a subroutine or function does within your own code to help Unfold explain it. 

This feature is built on the same code base as the transpiler feature and will hopefully continue to get better as versions progress.

Many people already know this, but for those who do not, I have formally accepted a position for a Master's Degree in Computer Science. Apart from PGDE, this is my first time returning to university in 7 years. It will also be my third university-level qualification as I already have a BSc with Honours and a PGDE in Secondary Computing. To me this is quite an achievement since 7 years ago I was concerned about my illness coming back and stopping me from finishing my Honours year.

This MSc is part-time and at the University of York - one of the universities I have always wanted to attend!

The 'quick alert' feature on my website is used for various different things in order to inform the users of my website of an update to the page or a successful save for example. It's been quite nice to have and I use them regularly across the website, for example when executing code in ZPE/YASS or evaluating JavaScript, a quick alert popups to tell you that the action has been issued.

But now, after a good few years of them. I've decided to make some serious improvements to them.

So many new improvements due to switching IDE. After 12 years of using Eclipse, I have finally moved to IntelliJ again. This has meant new things for ZPE, for example, little artefacts such as if statements I hadn't noticed were redundant due to code changes surrounding them were wasting resources. IntelliJ notices these and suggests how to improve the code. I have implemented a lot of changes due to this.

Also thanks to IntelliJ I have now started to host ZPE on a private GitHub repository. This has meant change tracking is even easier than it was before. It also means I don't rely on Dropbox Rewind anymore. Further to this, ZPE now has proper build numbers that automatically update each time I build ZPE. I really like this because it goes back to the way ZPE was back in the olden days with version 1.3 up to 1.5.

ZPE has had some major new features that don't just relate to performance too including the new unbound variable declaration, the new empty expression and the new compiler directives feature. Further to this, to make the development of other subset editors of ZPE (such as that found in the SQARL editor I have recently made) easier and faster, the new CodeEditorView component makes it easier to embed line numbering and syntax highlighting in any program. For those who haven't seen my SQARL editor, it simply parses SQARL into YASS which is passed to ZPE for parsing, compilation and passed through the runtime.

After learning a bit about how Ant works and how great the IntelliJ IDE is, I have finally got automatic build numbers being generated. Prior to this, I would estimate the build versions and as of recently, I have ignored build versions entirely. This changes now with a new Ant script being added to ZPE that will automatically increment the build version every time I compile it. This means every time I test the program (since it is built then too) it will increase by one. Build numbers are useful as it's often the case that users of early builds who try out the early access nightly version will be unable to update to a newer build in the same version because the updater cannot decern the version differences deterministically. This will change now! 

Apart from the minor performance improvements featured in ZPE 1.11.8, codenamed Phi, the next release brings about a long-requested feature. That feature is unbound variable assignment.

ZPE generally enforces variable declaration with a bound $ symbol or the let or var keywords. Languages like Python allow variables to be declared simply with their name. From the point of view of the compiler, I thought that due to my recent work on variables, mainly related to the use of unbound variables in assignment, I thought this would be easy. It was. It only took me five minutes and two lines to change ZPE to include this feature.

So now you can do this:

YASS
x = 10
print(x)

Oh, what does that look like? Python maybe?! Maybe that's why I didn't actually want this in YASS.

Everyone is talking about the launch of the iPhone 15 as an important update, which is well overdue, as it will include that USB-C connector and ditch that old Lightning connector. Lightning isn't capable of much by comparison and it's also very easy to break compared with Type C.

That said, there is one reason Apple has avoided it for now - and that's because they are greedy and want profit from us. They make more when your Lightning cable breaks. They make more when you need a new type of Lightning cable that connects to your MacBook Pro via USB-C.

There is a lot of speculation that the iPhone 15 launch will be the one that introduces USB-C to the iPhone. This is great and all, but there's something that needs to be thought through at the same time - the other devices. If Apple goes and ditches Lightning on the iPhone, what about AirPods, AirPods Pro, and AirPods Max? A lot of people are going to be annoyed with using dongles with their devices so they'll continue to use Apple's proprietary Lightning connector. For me, it's just frustrating that I will still have Lightning-based devices to charge when I update my iPhone which means when I go away I will still need to have two chargers with me.

Over the last few days, I have been working on and off with my new project, The Teacher Organiser. The main focus of the recent development has been on the planning side of things. This was the primary goal for a few reasons, but perhaps the most obvious answer is that it was already made. 

The planner itself, as well as the timetable, are built upon my own planner and timetable hosted on my own website. This meant that bringing it across was going to be a fairly easy task since I had actually made my own version incredibly portable. But the version of the planner on The Teacher Organiser needs to be very diverse and flexible, so it needed a few changes. As a result, the version on The Teacher Organiser has much more than the one on my website. 

It's still not perfect, but it's now fully usable. And users can now sign up as well!

Powered by DASH 2.0