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
Jamie Balfour BSc
Full stack developer

Personal Blog


NPAPI or Netscape Plugin Application Programming Interface was the norm for a very long time in web browsers. It was a single standard that allowed all browsers to use plugins. But plugins have plauged the web for a long time too. One of the most well known plugins, Adobe Flash, had become pretty much everywhere, requiring users to download a plugin for the system. It used NPAPI. On top of this, plugins were cumbersome to develop and meant developers needed to know several in order to achieve the results they wanted. Now the web is finally moving away from a plugin interface to a much more standards based interface.

NPAPI was the interface (a set of methods which each plugin must implement) which all plugins complied with. This was originally developed by Netscape, one of the original companies to develop a web browser and Microsoft's competitor in the first browser war. Netscape developed many standards and one of them was this plugin interface that has left us in the messy situation we are in now.

NPAPI has been around for a long time, but last year was supposed to be the end of it. In 2015 Mozilla announced they had plans to drop NPAPI by the end of 2016. This was later brought back to March 2017. Chrome has already dropped NPAPI and did so in September of 2015, only after turning support off by default in April that same year. Google cited that it "has become a leading cause of hangs, crashes, security incidents, and code complexity" thus that the older architecture of it needs "to evolve the standards-based web platform". It's important to note that NPAPI is an architecture from the 90s when the web began to take shape and at that point we were using HTML 3.2 and lower. Since then HTML5, CSS3 and JavaScript have all brought huge improvements to the standards-based web. 

Many plugins already exist that take advantage of NPAPI including Flash and the Java applet plugin. But both of these can be replaced by much more modern solutions. 

By removing the NPAPI browser developers are encouraging standards. They are making it more difficult for those who develop these plugins to make them a part of the future. By doing this they are offering a safer web environment for everyone. They are also ensuring that there is no longer the complicated mess of choice that Netscape and Microsoft once supported through the NPAPI and that we live in a standards controlled environment where no one company owns the web.

A standards based website is the way to go and older websites need to update to catch up with standards. Nobody has time for these older websites that rely on these plugins now, they themselves are slow and ineffective and need to catch up. 

I am happy to announce that my website has had quite a few new changes in the last few weeks, all of which I am finishing now. They are almost all content based but some also improve the actual usability of the website.

DragonScript 2

Last month I began to implement an improved version of DragonScript, DragonScript 2. DS2, codenamed Robber, is a huge update that improves the performance of the backend of my website, thus resulting in shorter loading times for users. It will take a while for me to bring it to every page on my website since some are still using DragonScript 2015 and I have to manually change the PHP file to update the page to DS2. 

New page percentage scroller

If you are on my website reading this then you will see that I have implemented one of those scrollers that goes from left to right as you scroll further down the page. I thought this was a nice navigation element to bring to my website and it was pretty easy to implement so, well you know, I thought I'd give it a try. Lemme know what you think by the usual method!

Goodbye old email accounts

My website email addresses are now limited to the webmaster, information and the no-reply subscribe and admin. Getting in touch via the contact form now goes straight to my personal email address.

New tutorials

I've finished my MySQL tutorial and I am now working on a new tutorial on Web Design. This tutorial focuses on design techniques, design patterns and methods to make a website more efficient and usable. It's fully planned out (and believe it or not I am organising it using the web design technique called card sorting). This tutorial is already coming on. The inspiration to start this tutorial comes from a book I recently purchased on design techniques. It also comes from the fact I now consider myself a bit of a design geek, since I am absolutely obsessed with usability and aesthetically appealing designs now more than ever.

New site features

Since you can now access a JavaScript method without the need for plugins to copy and cut stuff on the web, I have added a Copy button to every code sample on my website. If you cannot copy using the execCommand function in JavaScript, an error appear for you in the form of an alert. This is a pretty cool little feature.

Changes coming

On top of this, clickit.education will finally shut down this year since I didn't receive enough in donations to cover it. The same goes for the zenlang.net website I never finished. I will be moving both to subdomains on my website (www.sites.jamiebalfour.com). On top of that my DevNet will no longer be maintained. All of this allows me to focus more on my personal website, which I guess is good. I may bring back zenlang.net at some point in the near future, but for now clickit.education will be the biggest loss. Like I said, it is all based on donations which were just not enough this year (there is also ad revenue, which I keep most of so I can continue to pay for things like Creative Cloud used to maintain this website).

As part of a few fixes I laid out on my own website, I have decided to updated both BalfBar and BalfBlog today.

Most crucially, BalfBlog received an update that makes it more compatible with future versions of PHP. When it was written it was written for use with PHP 5.2. Now it is compatible with newer versions of PHP so you should have no trouble installing it on your newer installation.

BalfBar has now received an important update that adds more flexibility to the SASS code (and even provides all of the settings to rip off the menu from my own website) as well as changes that make the JavaScript more flexible.

Since 2007 when the iPhone took the world by storm mobile web browsing has continued to grow in it's user base and now for the very first time it has overtaken desktop browsing. Of course, this is based on just one figure, but it's now very understandable as the users of smart phones are at their highest.

Whilst I'm not surprised about the situation in relation to my own website since it has been this way for the last 3 or so years with my website (more than 60% of requesting coming from mobile devices), I do regret that my recent developments on my website have focused on the desktop browser a lot more than mobile (not to say that my mobile website isn't perfect anyway) in the hope to revive the desktop version of my website. As I mentioned, all of these updates will likely be to no avail since the majority of users across the web are from mobile devices and it will likely keep going that way.

Now Google's proposal, which later became requirement, that all websites must implement a mobile version makes far more sense. Why rank a website highly when it doesn't support the most used platforms?

You can find more about this at alphr.com.

Today BalfSlider received it's first major update - adding functionality to the slide control buttons and to give more externally available features. It also added newly exposed Back, Forward, Stop and Start functions. This update makes the slider controllable by users through two different accessible options. 

The first of these options is through the slider buttons. The slider buttons are found on almost every slider as a crucial feature allowing users to select a slide of their choice (so if they caught only a glimpse of a slide but missed the main focus of it they can easily go back to it quickly without needing to go through the whole slide show). BalfSlider simply detects whether there is a ul element with the class selectors inside the BalfSlider element. If it detects one it will bind a click event to each of these and it's corresponding slide. Theoretically, this is the best way to prevent any external exposure of these on your website. There's no need for external exposure anyway. 

On the subject of external exposure, the second option is designed for this. This method binds the Back, Forward, Stop and Start functions to the plugin and makes it very easy to go backward, forwards, pause and play your slide show from JavaScript - a feature I've desired on many other sliders out there. This is designed for use at an elementary level meaning you can easily just call the function. Let's take a look at how we do this:

var  s = jQuery('.balfslider').BalfSlider({AspectRatioWidth : 16, AspectRatioHeight : 9});

So in this instance we use jQuery to bind a click event to the button which when triggered will call our Forward function on the BalfSlider assigned to the variable s. That's pretty easy to understand. 

The update will be available to play with on the webpage on my website dedicated to this project. It's still in development stages so bugs may be found in the version up there.

This post also was to describe the inner workings of BalfSlider and what it does that's different. Well BalfSlider takes a new concept introduced with one of my projects a few months back of a model that represents the internal functions, basically acting like an interface. This model is an object which all different transitions must follow. The object features several (empty) functions such as the Next function and the Animate function. These functions are placeholders that should be replaced with the transitions own implementations of them. This makes BalfSlider very lightweight and easy to update too but also makes the development easier. This method of development means that all that is needed to develop a transition is a few implementations that fit the model's specifications.

Also, this is my 300th post on my blog! This marks a very important moment for my blog and for BalfBlog in general. 

Yippe! BalfSlider is back. And this time it's back with a vengeance. 

BalfSlider 2.0 brings a large number of new design features that focus solely on interoperability with any website. Because it's part of my Web Neutral Project, it's main aim is exactly this - no styles are added other than the crucial feature based styles and the JavaScript based ones. The rest is up to you.

The current version includes just one transition but two more will be here by version 2.1. As well as this, I'm happy to announce my Web Neutral Project JavaScript and CSS files. Between these files you can find combined BalfBar, BalfRibbon and BalfSlider CSS and JavaScript that allows you to quickly deploy any or all three of the plugins. 

My next focus in these plugins is efficiency. Let me know if you have any requests using the usual methods of contact.

Whilst I never imagined I would work on an image slideshow plugin for jQuery again, I'm happy to announce the new version of BalfSlider. 

BalfSlider follows my naming scheme and is part of my Web Neutral Project (WNP), and it follows the same design principles - none. In other words, the host website does some styling for it. It's open to development. 

As a result of all of this, BalfSlider is incredibly lightweight - even more so than BalfBar which is hugely small. BalfSlider is designed for flexibility offering many different transition styles (coming soon).

If you want to see a sample, look at my front page.

BalfBlog 2.1 is the next big iteration of BalfBlog and it will be released maybe by the end of the year. 

In the meantime, BalfBlog's updates are still being rolled out weekly and the next update will focus on consistency. I've had some suggestions put forward about the RSS and emails, and in general notifications, that BalfBlog is producing. Suggestions mainly attack the fact that entries in the RSS are currently including the whole content of the post and that emails are including a length-limited strip of the content. If there was one way I could unify it we could look back to June's update in which the Introduction Mode came to BalfBlog. 

This update enforces the use of introductions on all posts. As a result of the feedback that was received about emails particularly, I've decided that all future versions of BalfBlog will enforce this no matter what the mode.

Version 2.1 is going to focus on one BalfBlog dashboard for multiple BalfBlog powered blogs and sections - something that currently is needed for my website. It will also focus on management and administration of your blog, particularly with multiple users. If you have any further ideas and would like to see them integrated into version 2.1, please suggest them using the normal method of contact. 

Since many of us, including myself, like a bit of customisation with every little thing we use, BalfBar's next update will bring more optional items to the table. The core has been designed to make it easy to bring new features to it very quickly and by the end of tomorrow the new sidebar mode will be in place on the latest version. 

The sidebar option allows you to have a mobile sidebar menu as opposed to a dropdown menu. This fantastic option is already in place on my website, so resize the page to test it. I find that this option offers more accessibility options and it's much better for larger menus. I'm focusing on improving it in the next few days however, so please suggest any positive and negatives about this design using the usual contact page. 

As HTML, CSS and JavaScript keep advancing, the power that resides in your web browser grows. More can be done efficiently and interactively with JavaScript in the web browser, and with server side languages doing back-end processing. As a result of this, more and more software applications are being written in web languages instead of standard systems languages such as Java. 

This post has come to be because of something I noticed the other evening when out for dinner at one of my favourite restaurants - they were using Google Chrome to manage orders and so on, this was the first time I'd ever seen this kind of e-commerce application.

I'm a huge fan of web technologies and developing for the web, but I'm not entirely a fan of the use of the web to develop every bit of software required out there. For a start, none of the languages used on the front end are compiled before being sent (now this would be a good idea for JavaScript) so it's easy to manipulate them with some kind of other underlying program (such as a virus). This could indeed by a security problem that could be avoided by a compiled program written in a language such as C. Also, as JavaScript is an interpreted language, it is interpreted considerably slower than that of a compiled program.

But web based technologies do offer some major advantages that can be seen as the main reason for their use.

The first is that they are available on any computer with a web browser. This also makes them platform independent since the web is a single standard that must be implemented by all web browsers. It also means if they are on a server somewhere, they can be accessed from anywhere and indeed do not need to be installed.

The second reason is because of the kinds of tasks being performed in these applications are relatively simple and do not require the full power of a system. As a result, the JavaScript scripting language is sufficient for performing these tasks and therefore cheaper too.

The third reason relates to user-preference as web-based applications offer a much easier alternative to other applications when it comes to setting user preferences. First off, we have cookies and session storage. Both of these let us save information for later and quickly restore it, and there are plenty of APIs for using this kind of stuff. Secondly, CSS makes it really easy to style items on the screen and is far more favourable for most companies out there.

Processing performance is a big advantage here too since we can do major processing on a server that is connected to the application rather than doing it on the local machine. This is a huge advantage that can help with mission-critical situations, such as a traffic monitoring system. 

Another major argument is scalability. Whilst some desktop languages really suffer as applications grow, web applications are by nature sub-divided into smaller programs and can be seen as more scalable. Expanding an application written in web based technologies does not need a full redeployment of the application, simply that a user refreshes the page. 

Security is also a huge advantage now, at least in terms of keeping parts of the application safe. This is because the code that is stored on the server will never be transferred to the client, so you can keep all of the secure stuff away from the users of application. This all makes it less likely that the application will be misused by its users.

Finally, the main argument for many developers, including myself, is ease of development. HTML, CSS, JavaScript, PHP or JSP are easy to develop for. It is this argument that draws most developers to it.

Site accessibility

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

This page was generated in 0.29 seconds using 2097152 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.