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 very happy to say that I have kept my word on website changes in that I haven't made major changes to the structure of my website in the last year. Minor usability tweaks have been made but nothing major, and a lot of the stuff that I have changed has remained quite consistent with the 'new' flat interface.

General tweaks to make the site more efficient with bandwidth and processing time have been made and as a result, I feel that my website is much better, even better than it was a year ago when I made the change to remove a few hundred lines of JavaScript and CSS and made my website much flatter.

If you feel the same way, please leave feedback, I'm really interested to know. Also, my website achieved 1000 people each week this month - by a long shot the best result to date. It has also moved up 11,852,082 places in the Alexa ranking system as a result of this surge in the last month alone. 

Alexa Ranking

I think a lot of the improvement on my website comes from the fact that I have not been focusing on these changes and ensuring that there is good content on my website, as my blog is now one of the most viewed parts of my website and my reviews are not far behind. 

A lot of the time changes are now directly to improve the DragonScript concept for a more efficient server side website. I have also been removing bits and bobs from the accessibility menu, since I no longer feel the need for this.

However, as a suggestion was made to me to do this, I will be updating my website with a new cover picture-esque thing like Facebook pages have. This will likely be a picture of Perthshire or somewhere in Scotland.

Whilst I only suffer moderate depression compared to what I had at first, I do still suffer. Occasionally I get very 'down'. When you get like this the anger starts to build, you get very angry with myself over nothing, overreact to situations and you contemplate why you're in the situation you're in. All of these are pretty normal side effects of depression.

People blame you for your way of reacting - they never quite fully understanding what happens inside your head. This is because they don't understand what depression actually means. When I get down without knowing why and ask "why are you angry?" or "why are you sad?", the truth is, there's no reason. And more importantly, I cannot figure out how to stop or prevent it.

But I've figured out why this is. It's down to the fact that we are not trained on what depression is and how to deal with it. At no point in our lives are we ever told what depression is and how to cope and more crucially, deal with it. 

There's a lack of information available on depression1, and a lot of it is highly specific. When you go and see your GP for instance, they will give you a pill, or in my case send you to a professional (all that the professional did was diagnose me as clinically depressed and ran some tests on my congnition and so on) or send you to a counsellor who will talk with you. All of these are good in the short term, but knowing things for the long term is far more important - and even with the support I've had at home and so on, depression still manages to creep back in. 

Explaining the problems caused by being depressed to friends and family is difficult since in most cases they've never had a problem like depression themselves. I'm telling this from experience because I knew someone who was depressed before I was, and I did not understand or see what depression actually was at the time. There's a lack of information for them too.

I also find that depression drugs and treatment do not work, and more importantly leave you with more problems than you had at first (at least some of them). There is evidence also that describes what I am describing - the side effects of depression drugs can actually be pretty severe2. There are medications out there will do the job, and some of these are herbal, but a lot of these drugs are risky to say the least.

So what's next? For a start, more information on what depression means and what the patient may be suffering from. Knowing when someone is depressed is pretty important, and it can be preventive of something more serious. Also, there needs to more information on keeping people with depression safe, because when you go into these downward spirals it can be very difficult to get back out. If there was information on methods to prevent this that you could use yourself (I occasionally get these and choose to watch a film or go on a walk on my own) it could prevent the downward spiral from even really starting. Finally, and perhaps most crucially, there needs to be far more information on the effects of the drugs that can be taken for people with depression since so of these drugs may have adverse side effects such as becoming further depressed or anxious. I took on some of these drugs myself when I was really bad, and I found that although they helped with my depression they made me far more anxious.

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.

As many of you know, I'm a huge fan of the Warcraft game series and since the very first game I ever played was a Warcraft game, I've always been not only entertained by the series but fascinated by it's lore. 

Once about 10 years ago, slightly after the release of World of Warcraft, I declared that I could not play the game because of two reasons. The first of those was the price of £8+/month and the second was that I believed it would ruin the Warcraft story lines. 

Well today, I tried out WoW for the first time (and I've been wanting to do this for a long time, but I really do not like the idea of playing it on my own). My opinion has changed. I learned so much about the mechanics of the game today (I thought at first that players battled each other constantly, it seems I was wrong!).

Today I even got the pleasure of experiencing a moment I remember from 14 years ago when I played Warcraft III (my favourite game of all time) for the first time when I saw King Terenas' throne room.

King Terenas' throne

An amazing sight - King Terenas' throne

All of this is enough to convince me that this game is for me. 

I obviously thank my good friend Calum for finally making me see sense and getting into WoW!

With Pokémon Sun and Moon just around the corner I felt that it was high time that I compiled a top ten list of the worst Pokémon in terms of design. Remember, this is opinion based. Disagree all you like but it will not change the fact that this is my opinion.

I think my list does pretty much summarise the worst designs and names, and I think it goes to show just how bad it's getting over time. My list is only the top ten, I'd like to say that other Pokémon deserve to be in here too such as Magmortar, Diggersby, Probopass and Binacle. 

#10 - Escavalier

Escavalier

I'm just not a fan of either Escavalier or Accelgor. Escavalier (for those who do not know, cavalier is French for a knight or mounted warrior) is the combination of a cavalier and Excalibur (King Arthur's sword). The Pokémon has two jousting lances, which just look ridiculous in the first place, and is encased in armour not too unlike that which cavaliers would have worn. Just silly and uncreative. 

#9 - Machop, Machoke and Machamp

Machoke

These humanoid Pokémon really make me angry and always have. The very fact is they are based entirely on humans. The name is even pathetic, since macho is a word in English which just means 'tough'. They even wear a pair of underwear and have slick back hair. All in all, Machoke is my least favourite of this family since it really does resemble a human far too much.

#8 - Purugly

Purugly

I hate cat like Pokémon in general, since all of them are incredibly boring. None quite make it to the same ranks as Purugly. It's name is just atrocious; a terrible combination of pur (like a cat) and ugly. And it is ugly. This Pokémon shows absolutely no signs of unique or fresh and really just adds another silly cat Pokémon.

#7 - Cofagrigus

Cofagrigus

A sarcophagus/coffin Pokémon?! In fact, a possessed coffin now makes a Pokémon. I hate the pre-evolution, Yamask, just as much as this, but I pick on this because firstly, it looks childish and pathetic and secondly because this is just pure lazy. I imagine this all the time to reside in Gobi's Valley in Banjo-Kazooie back on the N64, but not in Pokémon.

#6 - Garbodor

Garbodor

Okay, a pile of rubbish is now a Pokémon?! This Pokémon is crap. It's design is horrible. It looks like a combination of a bin liner (garbage bag) and rubbish that's spewing out of it. It's name is terrible too: a combination of garbage and odor. 

I can tell you, I would never be a proud owner having this pile of crap as my Pokémon.

#5 - Klinklang

Klinklang

A rip off of the original Magnemite family but looks even worse. Magnemite and co are one of thos families who really look awful, but Klinklang and just feel like somebody thought "you know what, we'll rip of the crappy Magnemite family and make a new range of crappy Pokémon". 

Klinklang is a terrible name too - a combination of klink and klang, two sounds associated with metal hitting together. 

#4 - Chandelure

Chandelure

A fecking possessed chandelier?! Really just when you didn't think it could get any worse (well you probably did since you are reading towards the worst Pokémon design ever) we get Chandelure. This Pokémon's name is a combination of chandelier and lure since being a Ghost type Pokémon it lures others. Who enjoys fighting using a chandelier then?! 

This Pokémon's typing is great since Fire and Ghost is a rare combo, but since it's ugly design (and it's family aren't any better) I just refuse to use it.

#3 - Klefki

Klefki

Another 'possessed object Pokémon'. Yeah right! Game Freak once again ran out of ideas and when one of the creators of these Pokémon got into his car and started the ignition suddenly came up with the idea that we could really use a keychain Pokémon. No bleeding way. 

Game Freak still brought it in and we now have our third possessed Pokémon in the list. Another absolutely waster of a Pokémon. 

#2 - Honedge

Honedge

Alas, Game Freak, the creator of some of the most successful games ever, decides to continue to shoot itself on the foot with the introduction of Honedge. This is one of the worst names ever. Hone, which literally means to refine or sharpen in the case of a blade, mixed with edge, specifically talking about the edge of the blade. It's evolution's names are just as bad. The name Doublade (double blade) and Aegislash (Aegis was the name of Zeus' shield in Greek Mythology and slash mixed into one). 

Anyway, once again we have another 'possessed object Pokémon'. This is another one the developers thought to look to the real world and just cheaply use an object and claim it to be possessed.

#1 - Vanilluxe

Vanilluxe

Woohoo! Number 1! 

I absolutely hate Vanilluxe. This Pokémon has the most childish design of all Pokémon, fails to introduce anything non-real world, and is just beyond belief pure lazy. I despise this Pokémon, and not just because it's an Ice Pokémon, but because this Pokémon is just awful. The name, which appears to be a combination of both vanilla and deluxe, is pathetic. "I'll have a deluxe vanilla ice cream please". Deluxe appears to have been stuck in here also since this is a tertiary evolution, making it the 'deluxe model of the family'.

Who would want to fight using an ice cream?! And how on earth is it so powerful; Vanilluxe has the highest base stat of any non-legendary Ice-typed Pokémon?! 

It's design is awful, obviously appearing to be like an ice cream cone with two wafers in it's head and then a giant cone shape for holding at the bottom. Honestly, when I saw this Pokémon I laughed and shed a tear at the same time - I literally froze and double checked what I had seen was correct.

I'd like to thank Calum for unintentionally suggesting I write this post.

We all know that responsive designs are the way to go. For a long time now my website has been fully responsive, but one of the features I used that was developed by someone else was the responsive table. For as long as I have had it in use on my website I have disliked it.

I dislike it because it shifts the first column of the table to the left, essentially floating it above the rest of the table, whilst letting the user scroll the rest of the table. It created an ugly, ugly mess of things being thrown all over the place. Alas, finding the best solution for a responsive table could be much easier.

What about using an overflow:auto and display:block on it? Good idea, but the problem is that now the tables will not stretch the full width of the container.

The solution I am now using is a combination of JavaScript and CSS. The solution involves using jQuery's wrap function like so: jQuery("table.responsive").wrap("<div style="overflow: auto;"></div>");which will wrap each table with the class responsive in a scrollable div (see, very little CSS and JavaScript). Also, by giving the table inside a minimum width of 100%, they will always stretch the width of their container (which is the wrapper div), ensuring that they are always 100% of the content.

The problem though is with the interaction design side of things - how are users supposed to know when they can scroll some table in the middle of the content?

After reading a few articles, I found a comment in one of the websites with a link to this page. This allows you to make scrollbars always visible - something that should not need to be hacked together but should be a CSS feature, but Apple and Google don't agree with this so we do need to hack it together.

Although this does not guarantee that users will notice the scrollbars, it does leave some possibility that they might notice them.

Tables are a difficult thing to work with and making them responsive is one of the most difficult things to do in terms of usability. Let me know if you have any solutions to these problems.

Here is an example table, resize your browser or use a smartphone to test it.

Name Platform Year Sales Revenue
Warcraft: Orcs and Humans MS-DOS and Mac OS 1994 1,100,000 $45,000,000
Warcraft II: Tides of Darkness MS-DOS, Windows, Macintosh, Saturn, PlayStation 1996 1,000,000 $50,000,000
Warcraft III: Reign of Chaos Windows and Mac OS 2002 3,000,000 $175,000,000
Warcraft III: The Frozen Throne Windows and Mac OS 2004 5,000,000 $95,000,000

Tonight I am happy to announce the next version of ZPE, version 1.4.4. This is next stable release of ZPE that can be used for production and it brings a variety of new changes including:

  • The revamped LAMP parser introduced in the update versions of 1.4.3 (i.e. 1.4.3.10 and 1.4.3.40)
  • A better LAMP interpreter
  • The new Try-Catch statements
  • New increment and decrement operators (+= and -=)
  • Added string concatenation through the concatenate operator
  • Better error handling and better internal error messages
  • The hashing algorithms (SHA and MD5)
  • The associative array now uses the => instead of = to make an association
  • Objects and structures have merged into one
  • Added scopes (public, private and friendly) to variables
  • Made the interpreter more efficient with memory and less likely to crash

ZPE 1.4.4 which is the stable release of the beta updates of version 1.4.3 is the best version of ZPE to date and it is by far the best version I have released! I have finally finished the core of ZPE and no longer need to add any more constructs to the main language (although you can suggest some if you'd like). I cannot tell you what this feels like to finally have the language work like any other language out there but to have achieved all of it's aims.

The future of ZPE

The future of ZPE is going to focus on conversion between languages and the standard library. I will leave ZPE at version 1.4.4 for the foreseeable future since the version numbers tend to come from the fact that an internal feature has been added to the compiler or interpreter. Of course if bugs are found they will be fixed and ZPE updated. 

In the meantime, I will hopefully begin the construction of a formal language syntax for the language. This will take some time but it should be pretty good fun too. I will be focusing on improvements to the internal documentation of ZPE but I do intend to take a step back from the main development. 

My final remark

I really cannot believe that I have ticked all of the original boxes in ZPE as of today. Concatenation being added just today was the very last step in to making the language perfect and now it is (or at least in my eyes)! I hope you enjoy using the latest and greatest ZPE I have ever made! 

Help me to make it to 2,000 downloads by next month by spreading it! (it has been downloaded just over 1,000 times and the ZPE pages is my most popular page on my website after my personal blog).

07.08.2016
ZPE 1.4.4 has been released to my Download Center as a free download. Enjoy.

I'm not really doing much on my website in terms of design but I am simplifying my website by removing things I no longer deem necessary. The first of those was the removal of Dark Mode (a feature of BalfBar and always will be, but not of my website any longer) since I was always in favour of the dark menu myself and will not be letting users choose the light menu any longer. I have also removed the invert colour feature of my website as of recently and will next be looking at removing the max page accessibility feature and the font size changing features. I will also look at removing other accessibility features and I'm not sure where it will end. 

Whilst I'm posting this in August (wow, August already), the July update of ZPE, known as ZPE 1.4.3, is by far the biggest change to ZPE since 1.4.0. Although a lot of the changes described here were marked as being under version 1.4.2, they were only available as part of the experimental mode during that version.

This update is a huge update to the RMM parser and replaces it (largely) with the LAMP parser - a logic and mathematical parser. 

This update makes it more efficient as both logic and maths are processed together. ZPE 1.4.3 also reduces the size of compiled programs and improves the efficiency of the code when interpreted. Another major change that was brought in was the unification of logical symbols - the word "AND" is the exact same now as "&&". This will again improve the efficiency of the interpreter and reduces the number of checks done there. Logical and mathematical expressions are now also assessed (not evaluated) as to being a logical or mathematical expression at compile time thus reducing the time spent assessing at runtime. 

1.4.3.10 fixes structures as promised and unifies them with the object type with a bit more flexibility. Global variables and constants can now be assigned to be public, private and friendly within scripts, giving more power over their scope. 

1.4.3 also drops the XOR from the logic parsing, but adds the xor function to the built-in functionalities. 1.4.3.10 also made a change for associative arrays since they no longer use the = sign to represent an association but the => symbol. I had many people saying they liked this in PHP when I did my feedback request in June and I had been planning to implement this since version 1.3.4 but it was still in the backburner. At last, I can finally say this is done (whilst this will lead to larger programs since there is one extra character, compiled programs will still be the same in size).

I deem this to be the best and most complete version of ZPE: 1.4.3 officially brings an end to my monthly update system (which has largely been kept to, but has occasionally fallen behind). 

The next version of ZPE aims to bring in enumeration, although it is yet to be decided whether or not this is fully necessary. 

I'd like to remind everyone that tomorrow (July 29th 2016) is the final day you will be able to upgrade for absolutely nothing (yes for free!) to Windows 10. This is the last chance you will have to update to the latest version of Windows at absolutely no cost, no quibbles and it's not a trial version.

I certainly believe that Windows 10 is the best Windows to date, and believe that everyone should upgrade and give it a try since it's free and going back the way is easy enough. I also believe that not trying it is a big mistake and that not installing it at all would be silly! 

So give it a try!

Site accessibility

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

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