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

I have recently made a big decision that DASH v2 will now be hosted on GitHub. For the first time ever, I will be making DASH's source code available on GitHub. This will allow me to invite others to assist in the development of DASH v2. It is currently private with plans to make it available to the public by February.

Further to DASH v2 being hosted here, I am also going to be removing the ZPE UI feature from the main runtime and making a separate object which will be more manageable and easier to update, which will also be open source and available from GitHub. 

A couple of days back from now, I received an email from the contact form on my website. This email enquired about when DASH 2.0 would be released. At that point, I had no way of directly answering this person since I was in the middle of fixing a bug that has been bugging me since I switched my own install of DASH to using a symbolic link (DASH 2.0 works with symblinks no problem now). The issue was resolved by moving image uploads from the tmp folder to the assets folder of the install (I will post more later). Since this bug is fixed, DASH 2.0 is once again ready for release. However, I have yet to decide just how to release it.

I want your thoughts on this. Should I release it on GitHub or similar, or should I release it through my website? Use the get in touch or comments below to let me know what you think. 

The following is a short video on why desktop Linux distrubtions suck. It's very true as well.

As part of my update to DASH for version 2.0, I have completed a redesign of the UI that involves much more use of gradients and curves to make it more pleasing on the eye. DASH 2.0 now features an updated dark mode that is based on the operating system (unlike Dash 1.x which used user preferences, but that was all that was available back then as these features weren't available at the time of Dash 1.x).

Below are two images showing the early version of DASH 2.0 (beta) compared with how it looks now. The curved interface makes it much more visually appealing.

DASH 2.0 has been my main project for a good few weeks and has helped me recover mentally by allowing me to use my brainpower over and over. It's helped me with getting back into programming as well as helped me get my typing skills back to normal and has generally helped with the brain fog I have had over the last few weeks.

DASH 2.0 is a big update to my old Dash project, and whilst the majority of updates as of recent have maintained compatibility, this latest update I have made breaks compatibility with Dash 1.0. 

For starters, content posts no longer include separate scripts. This is due to the fact that the new version of TINY MCE that is used with DASH 2.0 allows scripts to be included in the content. This is great news but will require the `scripts` column to be removed from all posts tables in current Dash 1.0 implementations. Further to this, the `category` and `poster` fields are no longer textual fields but are now integers representing the `category_id` and `user_id` fields respectively. 

Secondly, the users tables should have their `details` and `preferences` columns removed as these are no longer needed. 

Those are the main changes but they are worth it. Because of the new way that DASH 2.0 has been designed with a much more object-oriented design, implementing new features is really easy. More features will continue to come to DASH as time goes on so stay tuned.

This was bound to be one of the most exciting Apple Events of all time since it would show how Apple's roadmap and progression of the last year have pushed what the Mac can do. 

Last year's Apple Event was perhaps their most monumental in the history of the Mac - the shift away from Intel to their own architecture and system-on-a-chip design based on the ARM Architecture (known in the industry as AArch64). 

But this week's event was expected to bring even more improvements including a rumoured Apple M1X processor. Instead, we saw something that was, for the most part, unexpected, two new variants of the M1 processor: the M1 Pro and the M1 Max (much like iPhone 13 Pro, iPhone 13 Pro Max). With these new processors, the MacBook Pro also saw two new models, a brand new 14-inch model and a refurbished 15-inch model. The base model M1 Pro has 8 CPU cores (2 of those are high-efficiency cores), whereas the top model M1 Max has 10 cores (again, two high-efficiency cores). In terms of graphics, the base model has 14 graphics cores whereas the top model M1 Max features 32 graphics cores.

Compared to previous models of the 15-inch model, the new versions no longer offer discrete graphics options but rely on Apple's new M1 Pro and M1 Max for the graphics, which, according to Apple, are very capable. Apple has made up for this graphics horsepower within the new M1 Pro and M1 Max and has gone absolutely all out with this! The M1 Pro has a whopping 200GB/s of bandwidth between the graphics cores and the memory and up to 32GB of memory available to it due to the unified memory architecture that Apple has integrated into this system. The M1 Max on the other hand is a whole new ballgame, offering up to 64GB of system memory that is shared with the graphics processing units of the processor, and an insane 400GB/s of bandwidth! That is approximately eight times more than the most powerful Intel Xe integrated graphics! 

Apple also brough a new design to the MacBook Pro which I'm not sure I like quite as much as the old one but will have to wait until I see it in person. On the subject of the new design, there are finally more ports available on the sides of the MacBook, one of the main reasons I had considered getting one originally. As well as your standard Thunderbolt 3/USB 4 ports, which there are now three of, you also get a full-size HDMI port, a headphone jack (as before), an SD card reader, and, to me the best feature, the new MagSafe 3 connector which acts as a dedicated power port. You can continue to use Thunderbolt to charge your MacBook of course.

Overall, I am very impressed with Apple and how they have developed the Mac so rapidly over the course of the last year. 

apple
mac
october 2021

Over the last few days, my main project to keep me occupied during my recovery has been DASH 2.0. This has been a momentous task to redevelop. I say this because DASH 2.0 is almost identical to Dash 1.x in appearance, and yet massively different underneath. And yet, whilst this is true, the whole codebase has been almost entirely rewritten to take advantage of the new object-oriented design.

By moving from the static and singleton design patterns implemented within Dash 1.x, DASH 2.0 makes multiple content management systems in one much easier. On my website, I store a single preferences PHP file at the root of my server. DASH connects to this to obtain the appropriate information, allowing it the user to select between four different zones on my website - that is, my blog, reviews, articles and my test blog (which is now on DASH 2.0).

Much like my website DASH 2.0 now moves to the Quicksand font.

A few days ago, I updated the page about Dash to explain what is happening. I'm very pleased to announce DASH 2.0 (note the new styling of the word DASH as it is now uppercase due to being an acronym).

DASH 2.0 is much better designed, making it easier for me to update it. Further to that, the core model of DASH 2.0 makes DASH 2.0 uncoupled from the DASH Board side. This means that one install multiple blogs/content should be easier to implement than the poorly put together system I developed with Dash 1.0. 

Over the next few weekends, I aim to build a completely new DASH Board that will support DASH 2.0. This is a big job but it's mostly to get my brain working again after having a few weeks of not really doing much (except watching several TV series) and because I promised that I would redevelop it. 

I aim to keep the front-end the same where I can and will be reusing parts of it where I can. Below is how Dash 1.0 looks as of just now.

What is more exciting at present is that I have updated my own blog, articles and reviews to use DASH 2.0 for the front-end and updated the old Dash 1.0 Dashboard to use the new system - it was relatively simple to update too!

The old Dash dashboard

The collapse of People's Energy is very sad for me personally because I was there right back at the start interviewing for a job over a cup of tea with David when the company was only just starting up and was one of the first to apply for a job at the company.

The job was for a website developer but also as a kind of senior role in charge of others which would have been really good fun. I do not remember how I came across the job, but it was all very top secret at the time. I remember bits and bobs of that day, for example, visiting Falko's restaurant in Gullane for the very first time and also that they mentioned that the company wasn't approved at that point by Ofgem (which I have looked up and actually it was the case). 

The job, which I applied for after leaving MagLabs in July 2017, was for someone to develop a web-based interface to manage their systems. 

I ended up having to say no to the job if I remember correctly, simply because I had already accepted another job. It brings back memories and who knows what I would be doing now if I had gone with them. 

The Collatz conjecture, named after Lothar Collatz who introduced the idea is a perfect example of a mathematical problem that cannot be solved by mathematics and the tools available within the domain and scope of mathematics of today.

It goes a little like this:

$${\displaystyle f(n)={\begin{cases}{\frac {n}{2}}&{\text{if }}n\equiv 0{\pmod {2}}\\[4px]3n+1&{\text{if }}n\equiv 1{\pmod {2}}.\end{cases}}}$$

it's a nice little conjecture to turn into a program, so I decided to write it in YASS to try and demonstrate this based on the above syntax:

YASS
function f ($n)

  if($n % 2 == 0)
    $n = $n / 2
  else
    $n = ($n * 3) + 1
  end if

  return $n

end function

$n = input("Please insert a start number")

$iterations = 0
print($n)
while($n != 0 and $iterations < 5)
  
  $n = f($n)

  print($n)
  if($n == 1)
    $iterations++
  end if
end while
Powered by DASH 2.0