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

Whilst the title of this post is somewhat humourous, the topic of this post is far from that. 

Recently several prominent YouTube channels such as Paul Hibbert and Linus Tech Tips have experienced account shutdowns and experiencing hacking of their channels. 

Both channels experienced similar situations with the theft of a cookie being all that was needed to get into the website. And it makes sense too. In the past, I have used session IDs to switch between computers whilst keeping my session the same. So really all that is needed to get into a website without needing to authenticate is that cookie. Ultimately this is why I don't allow websites to do this on my server. However, it does still leave security issues with other websites.

What actually happens in these attacks is basically the user logs into the website as normal, and a cookie is transferred to the user's computer. The cookie is sent back to the web server each time the client requests something, identifying who they are. This session is stored on the server with the ID as defined in the cookie and contains information about who they are - it's fairly simple. But if a hacker obtains this ID, they can put it into their own browsers and they too can pretend to be logged in as the user.

As I have a control tablet at the entrance to my house (and plan to add one to my bedroom) my smart home needs to be constantly improved to make it functional and useful.

One of the latest things that I have managed to do is add information about bin collection to my tablet (not the easiest thing to do since my council doesn't use JSON data for this so instead I needed to use XPath to read the HTML of the page and find the data manually, translate it to JSON and read it using my Home Assistant installation). Currently, all that happens with this is it displays a warning at the top of the tablet as to what bins (if any) are to be put out that day.

Anyway, the following is a bunch of screenshots from my improved smart home.

It sounds like the start of a film title, Zigbee, NUCs and Wifi, but it's not. Simply put, this blog post is a short reminder to those who use the Zigbee protocol and Intel NUCs. The issue relates to the interference of signals which leads to not only a weaker and slower signal but also higher power consumption. 

I recently moved my NUC from my server cupboard to my office where it will remain. There were three reasons for this; on occasion, the server needs to be rebuilt or given a new SSD and as a result, I need the server to have a display. I usually route the HDMI connector through a TX cable back up to the office but this takes time to set up. I could use VNC or something like that to do this, but again, it takes time. So to make it simpler I have moved it up to my own office. The second reason is that it gets quite warm in my cupboard so I was hoping moving it away would keep it a bit cooler. The final reason is the simplistic approach of my cupboard now - it only houses the main network of the house (a small 8 port PoE switch that also powers devices near it such as the Ring hub and provides connections to my other networks around the house, this is my only 2.5GbE network at present), my router and my Ring hub. 

However, the purpose of this article is not to inform you of my new changes, but rather to inform you of the issues to which I experienced when moving my NUC. I have a NUC7PJYH as my home server - it's low power but isn't the most powerful little machine. It does, however, support Linux really well and it runs on a variant of Ubuntu. My home server has many containers running on it, a web server, a PBX, a HomeBridge instance and a Home Assistant instance. Generally, it does quite a lot so I like to ensure I have regular backups of it (I've set up a cron to do snapshots of this daily). However, it wasn't until recently I noticed that my Zigbee devices were taking a lot of time to respond when I pressed buttons around the house. This only occurred after I moved the server to my office. I quickly started to realise why. Moving it to my office there were far fewer WiFi devices (I don't have a lot of WiFi devices in the house, most things are on the Ethernet) so I assumed it would have been better. But I had put the Zigbee USB stick on the top of my NUC. It struck me why in my server cupboard I had placed the Zigbee antenna in the corner away from the NUC - interference. Interference from what though? I hadn't even realised this, but the NUC actually has built-in Bluetooth and WiFi.

Having these enabled can seriously impact the performance of the Zigbee hub. I seriously recommend switching these off. Did you know that USB 3.x can also interfere too? Yup, the electrical signals cause a small portion of electromagnetic interference that causes issues with Zigbee. 

Meet ClickIt Embed! The almost perfected feature takes advantage of my new LightningJS parser and compiler, codenamed Pietro, to make embedding ClickIt code easy!

It makes it easier to present ClickIt files than using the editor and offers a nice new alternative to presenting HTML. Take a look below:

Since I stopped being a software and web developer working in another company for a living in August 2017 and moved to having my own business doing this and eventually to teaching, I've continued to be actively involved in the industry. 

I have presented a conference on running a small business in the ever changing technology industry, I've regularly been contacted by people in the industry for assistance and have had one or two interviews. I also actively follow jobs on Indeed and S1 Jobs to ensure that I know what's going on.

Anyway, as part of my own development I want to add to my 15 programming languages (not including HTML and CSS in that since they aren't programming languages) that I currently know well and so I have decided to re-pickup Rust. 

Rust is a very popular language in the industry and lots of jobs that I have seen advertised require the candidate to have knowledge of it. I'm going to say this isn't surprising because Rust was beginning to appear quite a lot back in 2017 when I was working in the industry and whilst I could write Rust back then it's one of the languages I haven't spent much time on.

Another is technology is React. Everyone wants React these days. Thankfully, I haven't lost my knowledge in the field of React, but haven't used it as much as I'd have liked. It's an awesome JavaScript library that makes it easy to update content on a page.

Laravel pops up quite a bit along with Symfony 2, which are both frameworks I have used before but would need to look at again before attempting to use them. 

The requirements in the industry have moved quite rapidly since 2017 and will likely continue to do so as languages like Rust and technologies such as React and vue.js continue to gain popularity. This has actually cropped up recently after a discussion with a friend who is considering a new job.

Goodbye 2022, hello 2023.

Happy New Year 2023! Wishing you all the very best for this new year!

This year has been one of the best years of my life.

January

Let's start with January. January was a pretty bad month for me in terms of work. I got into a big argument with someone at my work that made me decide to hand in my notice, despite loving the place I was working at. I was in a bad place as I was still recovering from COVID from the year before and was struggling to get back into the swing of things. Despite this punch-up, deciding to move on ended up being one of the best decisions I've made (more later).

February

In February this year, I decided to start looking into developing my teaching skills to be more digital. I began to build my slideshow engine in February which is now a key part of my day-to-day teaching. I also began to build my embeddable tools, which are a major part of this. I also began developing an interactive worksheet system that uses HTML, CSS and JavaScript to power it.

March and April

In March I applied for a job in one of the two schools I had always wanted. I knew after the interview that I wouldn't get the job and indeed I was correct. I also sat my driving test for the first time since 2016 (things had at last begun to settle down again and I found the time to do it). Unfortunately, I got one major fault (although, once again, no minors) and failed as a result. This was upsetting news but I decided I would persevere and try it again. Two fails in one week. 

I also could not forget to mention the big change that came to ZPE and that was the inclusion of passing by value and reference. 

May

May was perhaps the best month of the year. First of all, I resat my driving test and passed it at last! A week later, the other school I had always wanted to work at posted a job and so I applied. I went through the interview process but didn't think my interview went too well, but later in the day was offered the job! Both of these were within one week of each other too (it was the reverse of March). 

ZPE also got another big update with strong typing now being available in parameters. This was another huge update. 

In terms of my house, I finally got my garden done.

June and July

In June I went to see my new school and it was exactly as I remembered it. I also met my line manager who is the most awesome guy ever, although I had known that he was a nice guy from when I did volunteer work at the school way back in 2016. Over the next few months, I began to work hard on improving my slideshow engine, creating webpages for my class worksheets and making more digital tools for use in education.

I went to York with my mum for the first time in 11 years and this was quite an enjoyable experience, especially compared with my usual Scottish getaways that I do year upon year (I'm just meaning it was a big change, not that it was better). 

I also turned 31 years old.

August, September and October

I started my new job at my new school at last. My first few weeks were awesome! The saying the grass isn't always greener on the other side applies whenever you are applying for a new job, but in this case, the grass was greener. I'm very happy in my new job. Further, in September I got an award for settling into the school quickly and well. I love where I work.

Once again, this was a big month for ZPE when it was compiled to a native binary for the first time, seeing huge performance gains over the JDK version.

At the end of the first half-term, I knew that I had made the right choice with my new school. 

November and December

Not sure what to say about these two months, but they have been really lovely. The first few weeks of December were pretty tough as I got a cold and bunged up thing that just refused to go away - it lasted a total of four weeks before it cleared up completely. 

I spent a lot of time with my family in December after having several months of not speaking to my dad, and then of course Christmas was a lovely day at my parent's house, despite me originally not planning on going. On the 30th of the month I decided to go and buy a car. At last. I put down the deposit to get my self an MG4 EV. What a nice end to the year.

It was always going to be difficult to simply drop macOS and switch to Windows, but I've managed to barely touch my MacBook. I am typing on it at this precise moment as my EliteBook is currently set up on my desk as my gaming machine and ready for the morning where it will be used, and I still feel there is so much more that I can continue to get from my MacBook Pro.

To be honest, the typing experience on my MacBook isn't much different from my EliteBook and generally, it's just a lovely machine to use still. I don't like the TouchBar on this MacBook and that is something I voiced way back in my original review, so there are no surprises there, the touchpad does feel better, but only just and the laptop feels ever so slightly smaller and lighter. 

My transition isn't as plain cut as my transition from Windows to Mac. I still have an excellent quality MacBook Pro here and it would be a waste to see it just be left and ignored in the corner, but my development of software and websites has completely transitioned to my EliteBook - I'm so surprised at this as the main use for my MacBook was originally as a development machine. The crucial change for me, however, is moving away from a gaming desktop and a business laptop. Jambour's ProBook and EliteBook was the company's main machine for all things related to the company simply because we needed Windows-based laptops for taking to client meetings and for moving around, and my only other actively used PC was my gaming desktop which would not satisfy those requirements. So both my business machine (the ProBook) and my gaming desktop (The Red Revolution) have been replaced with my new EliteBook. The gaming desktop will likely have some parts sold but likely the case and PSU will be kept for the time being. 

As for my MacBook, as I say, it's got years still left in it and will continue to be used as a media machine for listening to music, watching films, and occasionally for things like browsing the web. But it's not longer my daily driver and I love my EliteBook already. Simple things like switching from Command to Ctrl that took me time back in the day have been really easy as I've been a Windows user as well as a Mac user since getting my Mac. Unifying all my computers into one machine has been my dream since I got a Mac. Unfortunately, Apple tried to make that difficult. However, even after this MacBook Pro goes, I will always have a Mac in the form of a Mac Mini. 

In summary, my transition is complete. I'm actually back as a PC user primary for the first time in about 11 years and whilst some may think it's a backward step, I'm quite happy to argue that now a lot of things have changed, particularly the new Linux Sub System and Windows Terminal that make it possible for me to enjoy development on a Windows machine again. 

Also, I'm still a software developer. A lot of my friends might think that I'm slowly fading away from it because I'm a teacher. But just because I'm a teacher, doesn't mean I've ditched my passion for software development or something like that. I continue to use my skills outside of teaching. In fact, ZPE is better, and faster, than ever.

Merry Christmas 2022! I hope you have a lovely Christmas and hopefully enjoy it with loved ones. I'm hoping to visit my parent's house and see my aunt and my cousin and his children there too. 

Free photos of Santa claus

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

Powered by DASH 2.0