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

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!

Seriously, forget the old version of 'The Teaching Organiser', the new version is miles better!

The new version of The Teaching Organiser no longer focuses solely on reporting and is now set up for timetable creation. The new version is so fast, smooth and works well (the old version did too actually). 

Version 2 is designed with a much more dynamic, app-like look. Several features are going to be built into the new version. For now, I'll provide a little taster of what it's new timetable engine (which is built using the same code as the one I built a year ago for myself):

The trend of smartphones replacing functionality that was once carried out by a desktop or laptop computer is continuing to grow. With companies like Samsung and Google at the forefront of this new technology, things like DeX, we are beginning to see a new bring-your-own-device to work scenario growing. A lot of this functionality has come from the latest chips being powerful enough to perform desktop-like functions and give a desktop-like environment without struggling but it's also down to the advancements in cable technology like USB Type C and its Alt-Mode function. 

Let's look at the first point made here: smartphone chips are more powerful than ever, boasting up to 6GB or 8GB of RAM and decent graphics processors. They are more than capable of running Windows 7 based on those specifications, so they are more than capable of running your desktop applications such as Microsoft Word in a smartphone form. Microsoft attempted to do this with their phones using Continuum [1]. This was a fairly wild idea back in 2015 when smartphone processors were nowhere near what they are now. But this kind of thing is now very possible for the average job (we're not talking about playing games on a secondary display with a mouse and keyboard) such as Microsoft Word or PowerPoint. I can see this being very useful for me if I was doing another talk where I could simply dock my phone rather than my laptop. Apple has now made this possible on iPad with the new Stage Manager feature which is very impressive - this kind of thing should come to iPhone when docked.

Now let's look at the second point made here, connectivity. Connectivity is perhaps the main reason this kind of stuff is becoming very possible. Looking at what Microsoft was trying to achieve in 2015 with micro USB (which by the way, was USB 2.0) and USB Type C (later on, however). This is a great idea, one that I fully support. Samsung's DeX feature is actually so seamless that a company my brother was working at during a contract with some 200+ employees in the part he was working at had moved to bring-your-own-device and they would dock it into their USB Type C docks to connect the corporate network and gain a mouse, keyboard and display. Not only does this save the company money, but it also reduces the number of devices the users actually need, adds functionality such as making phone calls from their desktop system and perhaps the most interesting one is that it can actually be used to reduce the amount of time users spend on non-work related apps on their phones (users can enable a work mode when the phone is docked, allowing them to only use work-related apps).

Now some say that the future of smartphones taking over laptops is well away [2], and sure I can definitely agree, but when I heard a whole 200+ people were using their phones using Samsung DeX as their sole working device, I was absolutely astonished. Sure where I work we've done away with desktops, your laptop simply connects to the keyboard, mouse, 2 displays and projector by docking with USB Type C, but it's not quite the same as replacing a laptop with a smartphone or even a tablet for that matter. 

[1] https://www.theverge.com/2015/4/29/8513519/microsoft-windows-10-continuum-for-phones

[2] https://www.teamtreysta.com/will-smartphones-take-over-laptop-functions-in-the-future/

Powered by DASH 2.0