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

Meta's Twitter competitor, Threads, goes live in just over five minutes! I'm really looking forward to seeing what this brings! Go to threads.net to see it when it goes live!

After buying my HP EliteBook in December of 2022, I vowed never to buy another desktop computer. Now I can say that this is how I intend to be in the future. My desktop was a large machine, and whilst I loved all the space, the fact I had 10 drive spaces in it and lots of airflow, I don't see any need for any of that any more. 

Most of the time my gaming is light enough that my integrated graphics are sufficient for running the games I play, but for those times when I need a better GPU, I've got a nice eGPU. 

My next laptop will be the Framework laptop I nearly bought when I bought the EliteBook. 

Unfortunately, I've decided against moving to a dedicated server just now. 

After a little discussion with the rest of the team at Jambour Digital, we all decided it would be better to postpone the move for another few months. 

However, by having a dedicated server setup, I realised how easily I could write a script to set up the new server, so that's exactly what I did. The script automates the whole process, to the point where it loads all of the SQL into the databases, sets up the needed applications and starts HTTPd.

To setup the new VPS, all I needed to do was run the script. 

Moving away from the dedicated server is a sad moment for me, as I was so close to getting it perfect, but the fact that the connection is unreliable (due to not being a business broadband connection) I could not continue to use it.

It was one year ago I was offered the amazing job I am in. Tuesday 24th of May 2022 was the day I got the job I always wanted to do!

I have spent a lot of my personal free time building a company which has achieved a lot, brings in a bit of revenue for myself and provides an excellent service for its clients. Still, I have decided that I cannot sustain the level of commitment I have provided over the last few years as the Executive Officer of the company.

Over the last few years, despite not actually being the person in charge of customer relations it has been me that has had to carry out most of the meetings and much more. In a small company with only three members, it may seem silly to delegate tasks like this but if we don't do this I have realised I end up doing everything which means that I cannot focus on teaching which is my primary career (and I work a lot whilst I am at home on my teaching content).

In July at our annual meeting I will step down as the Executive Officer and hand most of the work I do over to Mike who is currently in charge of Marketing. I will maintain the role of Technical Officer in order to continue utilising my server management and development skills to keep the company's infrastructure stable. 

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.

Powered by DASH 2.0