Jamie Balfour BSc

Welcome to my personal website!

Technology enthusiast

I am very interested in technology, particularly relating to computer science. I am most interested in web design and development.

My main hobby is programming. One of my most well known products from this is ZPE. I also am the sole creator of BalfBlog, BalfBar and BalfSlider.

A little bit about me

In 1997, when I was six years of age, I got my very first computer. I was always very interested in the ins and outs of it and dismantled it to see how it worked.

Years later, in 2016 I received my BSc (with honours) in Computer Science, obtaining a First class degree.

I'd like to welcome you to my website and hope you enjoy using it as much as I have enjoyed building it!

Google Plus
Me
Jamie Balfour BSc
Full stack developer

Personal Blog

I'm sure that a lot of you will remember a lot of revolutions in technology, but perhaps the biggest one was when we moved away from parallel ports, slow serial ports and eventually even PS/2 and moved to USB. Eventually, the competition started to appear such as FireWire and eSATA, whose focus was mostly on storage as opposed to general (or universal) use. Both have pretty much vanished. eSATA attempted to side with USB by forming a combo port, but unfortunately did not last, partly due to the lack of robustness in SATA and eSATA cables and partly due to the fact that SATA as a standard has all but been replaced by PCI Express.

We all knew that when PCI-X and AGP were superseded by PCI's younger sibling, PCI Express, that it had come back with a vengeance. Boasting 2.5Gbps across a single lane all the way back in 2004, PCI Express was bound for success.

A single lane PCI Express card

But it's not until now that one of the things I've dreamt of has become a reality. Back in 2011, I proposed on my blog an idea to expand PCI Express into external GPUs through the use of ExpressCard - an exceptionally clever use of both PCI Express and USB to make a single standard capable of multiple speeds (sounds familiar, right?). Of course, eGPUs did exist for ExpressCard, but they were slow and cumbersome - not something many people would want.

Behold, Thunderbolt! Thunderbolt was original only capable of 10Gbps, which is the speed of a single PCI-E version 3 lane - that's a 16th of a desktop graphics cards maximum bandwidth. So next came Thunderbolt 2, capable of twice the speed, we're now talking about 20Gbps, and eGPUs were now actually possible. The problem with Thunderbolt 2 is that there were very few eGPUs made. One possible reason for this is because the majority of computers featuring Thunderbolt 2 were Macs. Not many PCs were built with the capability to use Thunderbolt 2, and it makes little sense to make an eGPU for Mac users since the majority of us don't intend to play games on our Macs and use them more for productivity. 

Thunderbolt now uses the USB-C connector

Of course, the natural successor to Thunderbolt 2 was Thunderbolt 3. Prior to the announcement of Thunderbolt 3, Intel was working on improving the old USB standard to feature a more robust, smaller, yet more capable USB connection. Since USB Type A and USB Type B already existed, USB Type C was the name for this connection. USB Type C, or USB-C as it is often referred to, offered up to 10Gbps over the USB standard, aptly named USB 3.1. Within a few weeks of USB-C being announced, it was made clear that the new USB-C connector (remember, USB Type C is the name of the connector, not the standard) would also become the connector for Thunderbolt (Thunderbolt has always been lazy since originally it used the mini DisplayPort connector as the primary interconnect for Thunderbolt). 

USB-C as the primary Thunderbolt connector meant that this new connector offers USB 3.1 speeds of 10Gbps, DisplayPort speeds of 17Gbps, HDMI speeds of 18Gbps and Thunderbolt speeds of 40Gbps, all over the one connector. To me this is awesome. This means so much will get replaced by this connector. 

Let's take a look at what this connector is directly capable of:

  • Thunderbolt 3 - x4 PCI Express Generation 3
  • DisplayPort 1.2
  • HDMI 2.0
  • USB 3.1
  • VGA - through DisplayPort
  • DVI - through DisplayPort or HDMI
  • USB 3.0
  • Native PCI Express cards supporting so many connections such as FireWire, eSATA, RS232, LPT and much more
  • PCI through PCI Express converter
  • Thunderbolt 1 and 2 devices

Because of the ability to connect straight on to the system bus (PCI Express), the system can indeed use many different PCI Express cards directly. 

So, whilst I originally was concerned that Thunderbolt would destroy all other connectors, the Thunderbolt standard seems to have added better native connectivity to older standards than before, which is amazing. One connector for all seems to finally be true.

I will admit, the last few months have been very busy with Dash improvements and I've neglected my own website.

Not any longer! I'm working on improving a lot of stuff. Things like email that used to work before my change to a VPS package just worked, but not any longer. For this to work, I'm going to need some assistance from PHP Mailer (I may just use Dash Mail to do this - the wrapper around PHP Mailer) and I'm going to need a new email address for my domain.

After working on Dash day in day out, I've become really obsessed with clean and neat code. Refactoring Dash became a hobby, not a chore. But now I've got a lot of work to do with refactoring a lot of my own website (just the backend stuff, so you'll hardly notice anything happening).

Anyway, at the present time there are a few issues with glyphs not displaying correctly, so if you do find anything wrong, feel free to leave a comment below.

It's already August and that means that the official Dash 1.0 launch day is looming 😯! That means that it's time for me to update you folks on what's new and what's still under work (of course you can read the changelog for this).

Dash 1.0 is the first official launch of Dash, because previous versions of Dash were known under the name BalfBlog and secondly because previous releases didn't really get much of a release. Now I'm happy to announce that Dash has been fully optimised for use in any situation and I'm hoping to do an official launch video and so on. 

For now, I'll update you on what's new (read previous blog posts to see what I had already added before now).

What's new?

  • A new password recovery feature
  • A new request account feature
  • System lock down - only allow administrators login privelages
  • A more consistent look across the (Dash)board
  • New reports
  • Post viewing internally within the dashboard
  • More object oriented features including object persistence
  • A new method of access content known as the Dash Content Manager (DashContentManager.class.php)
  • More administration options
  • Blocking and allowing IP addresses
  • Dash logs - storing information about what users are up to
  • Performance logging
  • QuickDash templating engine - parses a template to an AST to be traversed when generating posts
  • Many bug fixes

What's still to come?

  • Personalised styling - add a company theme or an individual style to a content management system
  • IP address ranges for blocking and allowing
  • Related posts currently do not use the templating engine - neither do emails (although emails do use templates, they just don't use the QuickDash engine to parse them)
  • Help system is getting a complete redesign

Dash 1.0 is nearing completion, but that doesn't mean that I'm ready to launch it on the anticipated original date for BalfBlog 2.4 which was the 31st of July. 

I'm afraid to say it won't be till about mid August that it's released now. However, theres a ton of refactoring going on that will improve the ease of adding features to it.

I'm more impressed by Dash day by day. Today's improvement was the creation of a form generator object - whereby one simply adds whats needed as below:

PHP
$current_user = DashLoginManager::GetCurrentUser();
$form = new DashForm();
$form->CentralForm(true);
$form->WrapContent(true);
$form->SetTitle("Logout");
$form->SetLink(DashLinks::CreateSubmitLink(DashLinks::SECURE, DashLinks::LOGOUT));

$form->AddHiddenInput("referrer", $_SERVER['HTTP_REFERER']); $form->AddParagraph('You are about to log out '.$current_user['username'].' from this dashboard.'); $form->AddParagraph('Are you sure you want to logout of this account?'); if(DashLoginManager::SwitchUserEnabled()){
$form->AddParagraph('Since you have switched users you will be logged back into your own account when you log out.'); } $form->AddSubmissionBox("Logout"); echo $form->Generate();

As a developer, there is one thing that is at the top of my list of things that I need to decide on - the text editor.

The development environment needs to be pleasing and make you feel comfortable (whilst developing Dash I feel quite the same way, if the content management system isn't user friendly, you can't be comfortable using it). I've been through a lot of editors - starting with a bunch of versions of Visual Studio, including Visual Studio 2005, 2008, 2010 and 2013. They are all brilliant and I'm glad that I made the choice to use them for about 7 or so years whilst I was a .NET developer.

Things changed quickly though as I became a developer based on Mac OS X. I was forced to find a new editor that suited my development purposes. When I stopped developing in VB.NET and C# and began developing Java, HTML, CSS, JavaScript, PHP etc. I found that I needed to find a new IDE that would suit those purposes. For the vast majority of those (all the web based ones) I used Aptana Studio 3. Aptana was brilliant but it quickly felt dated but I just could not afford the time to get a new editor without being certain that it was right for me. A good IDE needs to be extremely colourful (because that helps highlight different syntaxes), be fast and not prone to crashing (as Aptana eventually started doing) and be feature rich. For me one of the most important features of the IDE is support for SFTP. Aptana offers this out of the box. I then moved from Aptana to Eclipse with the Aptana plugin - pretty good to be honest. 

Eclipse is brilliant for Java development, and I still use it because it can compile a JAR file in so few steps, it can interpret and debug programs well and it just feels like it was designed for Java. However, Eclipse was eventually laden with the same bug that Aptana has and would crash from time to time - particularly when in the Web perspective.

So I made another move, this time to Adobe Brackets. I jumped on the Brackets bandwagon when it was pretty young, and I loved it. Syntax highlighting is lovely, it's feature rich and it's open source. Unfortunately, this jump was too early - Brackets just didn't have everything I needed. In 2015, I started an Adobe Creative Cloud subscription. As a result I gave Dreamweaver a try and I liked it (looking back, I don't know why I liked it really other than the fact it had SFTP built in). 

Introducing Atom

Atom is now my favourite text editor. After being introduced to it by a colleague at work, I feel like I've come to love it. It's colourful, well designed, doesn't crash and has everything I need from a text editor or IDE. 

Atom is my new IDE of choice

Why is Atom nearly the perfect editor though? Well my first reason is that Atom has clear colouring - it's dark interface clearly defines the background from the foreground and its syntax highlighting is bright and stands out well. On top of this, Atom features a plugin system that means that if the feature you want is not available, it's likely to be available as a plugin somewhere. Atom is fast - it doesn't slow down too much as files get larger - I'm talking about PHP files, which I always break into logical files which rarely exceed 3,000 lines. 

People may say what about Visual Studio Code, since being from a Visual Studio background surely I'd like that? Well yeah I do. But I found Atom to be even nicer.

I think that if you are reading this and looking for a new text editor with a beautiful touch to it, Atom is well worth a try.

If you have a different favourite, I want to know what your favourite editor is. 

More and more since I began development on Dash, particularly templating in Dash, I have wanted to write a new parser for PHP.

When I say a new parser for PHP, I don't mean to parse PHP. No I mean to parse Dash Templates. This will give me the power to include features like if statements and loops as well as a lot of other stuff.

At present, templates look like:

Dash Template
<div class="image">{POST_IMAGE}</div>
{POST_CONTENT}

But as you can see that means that it doesn't matter if a {POST_IMAGE} is set or not, it will display no matter what. What if it could work like this:

Dash Template
{IF POST_IMAGE}
  <div class="image">{POST_IMAGE}</div>
{END IF}
{POST_CONTENT}

Since I wrote ZPE and then rewrote the Zenith Parser to be completely open and usable by others, I have written a JSON, XML and CSV parser to go with the original ZenLang parser. It's fair to say I have a good idea about making an efficient parser now. 

If statements would make it easier to do things that we couldn't do before. So that's next for Dash, whether it makes it to version 1.0 or not I'm not entirely sure but I hope so since it shouldn't take too long.

On top of that, I'm thinking about making it free from Dash and completely separate, thus allowing it to be used elsewhere.

I've been banging on about BalfBlog for at least the last two months. The most important two months of it's journey to becoming a stable content management system that can be used by many. 

The staple aim of BalfBlog is to develop a concise, well-defined, well-built and independent of any styling, content management system. It will always rely on the host website's core styling in order for it to produce posts. This means that a bit of technical knowledge is needed, but very little.

The Dashboard is very easy to configure, with a set of easy to use options and tools to make it easy to manage your content. 

In May 2016 my own website changed to BalfBlog for article and review management and in October 2015 my website introduced my very first journal (one that nobody can access but me, of course).

Of course with time, the focus has shifted from being a blogging system as it was when JBlogs first started. In fact JBlogs never meant to come out of it's shell and become anything for use outwith my own website. When BalfBlog was announced, I made the version jump from version 1.1 to BalfBlog 2.0. This name change was made in 2016 to keep in line with my other projects in my Web Neutral Project (WNP) such as BalfBar, BalfSlider and BalfRibbon but it was never going to be permanent.

With the introduction of Article Mode - which is used in my articles and reviews, BalfBlog stopped just being a blogging system but a full on content management system (CMS). This was a big step and one which made it difficult to keep under the BalfBlog name. For a long time a name change has been on the cards.

Now, I'm proud to announce that BalfBlog will be known as Dash Content Manager from now on!

Why Dash?

Dash is always stylised in italic when I refer to it because it's similar to what the logo for Dash will look like. The name Dash came from several roots. Originally I was going to name it Atomic, based on the concept of atomicity within databases, but I liked the name Dash better.

The name is far more representative of what it is. Dash represents a fast system, which indeed it is. The name Dash is actually a bit of a homage to the agile way in which it was developed since to me a dash is like a sprint. 

Dash of course also represents the core part of the Dash structure, since the main focus for BalfBlog 2.4 and Dash is the dashboard. 

Dash is itself a recursive acronym:

Dash: Adaptable, Secure and High-performance Content Management

Let's go through those words to see where they fit in:

  • Adaptable - BalfBlog 2.2 introduced plugins, and Dash extends the way plugins interact. This makes Dash adaptable
  • Secure - Dash is designed with a sophisticated and secure system to authenticate users and verify they are who they say they are. No unencrypted passwords are saved in any database and it's not possible to access data outwith the boundaries of the dashboard.
  • High-performance - Dash is designed to be lightweight and fast. Features that have been added have been designed to have minimal impact on the performance of Dash.
  • Content Management - BalfBlog was a blogging system originally, and only managed content in a blog. Dash on the other hand (and of course later versions of BalfBlog) is designed with all kinds of content in mind. 

Dash can now even manage your files within the assets directory thanks to the new file manager.

Another big update

Another big thing I should mention is some that related to the version jump from 1.1 to 2.0 when JBlogs became BalfBlog. Now that Dash is nearing ready for release, I'm doing another version jump. Except:

BalfBlog 2.4 => Dash 1.0

Yeah that's right, BalfBlog 2.4 is actually now called Dash 1.0. 

The future

There's still plenty planned for Dash such as single installations multiple blogs, page management and a new comments system (possibly).

If you are wanting to see the latest version as it develops, visit http://dash.projects.jamiebalfour.com/. This rubbish subsite is dedicated to new features being added daily, so it will vary all the time. At some point I will add styling to it but it's low priority.

In the last few months I have really spammed my own personal blog about one of my largest projects - BalfBlog. As you probably noticed I have also been updating my personal blog with the latest changes by an automated update (builds automatically and is deployed with a cron job).

In the latest update to BalfBlog, I aim to move back to a blog dedicated to it as more and more changes are brought to it. In fact, the blog I'm dedicating to it is actually the exact subsite that is being used for live development. You are welcome to visit this testing site to see the changes as they happen but don't expect a fancy front-end, I've got no time to focus on those sorts of things.

You can find the live build here:

http://balfblog.projects.jamiebalfour.com/

It's important to note that although BalfBlog 2.4 does not require all of HTML5, it does require a browser with at least half-decent CSS support, so this excludes Internet Explorer 8.

Today I am happy to announce that every feature has been added to version 2.4 of BalfBlog. Yep, that's right. It's now fully functioning.

But please note, this is not the end of 2.4, in fact it's just the basics of it. The next things that need to be done are mostly refactoring code and adding validation systems in as there is currently none of that. 

Most of the features of 2.4 are now finished, some of them need furnishing and some of them are completely new. The newest feature added just yesterday and finished today is the build in 'View content' option, which allows you to view a post from within the dashboard, rather than going to the front end to view it. This will have a special purpose very soon.

Templating is still to be improved and moving from constants to a data object is still to be implemented. I'm still well on schedule for the end of July for the release of 2.4.

I have been working a lot harder than usual on my projects, particularly on BalfBlog, which has been my sole focus (even above my own site maintenance) for some time now. 

However, I want to inform you all that from now on I will only be spending the half hour lunch I have and some Saturdays working on these projects. Support can now only be done by contacting me on a Saturday (I won't read any that are not on Saturdays by the way). 

Site issues

Whilst I call it a site issue, it's not in my control at present. Somebody has declared my web host's IP that my site is using is spamming them (probably Microsoft themselves) and therefore no emails are being received by Hotmail/Outlook.com email addresses. This is because the IP address range has been blacklisted. I've been in touch with my webhost about this. But more importantly I am looking at moving to a paid email service now anyway.

Please note that subscriptions and new users are currently not supported. I will send out a push notification about this too.

Site accessibility

A lot of the original functionalities that once existed here have been removed.

This page was generated in 0.23 seconds using 6291456 bytes. Slow? Let me know.

To use project mode, the window must be greater than 920 pixels in width.
Click here to disable Project Mode.
This site uses cookies to deliver its services, to personalise ads, to store preferences and to analyse traffic. Information about your use of this site is shared with other companies. By using this site, you agree to its use of cookies.
Contact me
Contact Jamie Balfour

Get in touch with me via this form.