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

Personal Blog

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. 

Browsers

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:

JavaScript
var  s = jQuery('.balfslider').BalfSlider({AspectRatioWidth : 16, AspectRatioHeight : 9});
jQuery('button').click(function(){
   s.Forward();
}

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. 

Site accessibility

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

This page was generated in 0.32 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.