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

2017 has been quite a good year for gaming but no one more so than Nintendo, at least for me.

Nintendo's two biggest releases this year have both been incredible. I'm talking about Breath of the Wild and Mario Odyssey and then let's not forget the launch of the Switch itself. 

I have spoken to loyal PS4 and Xbox One players and within both groups I have found quite a few of them were really wanting to own a Nintendo console for the first time for Breath of the Wild. To me, this marks a change because it was down to Nintendo marketing properly again. The Switch brings a fresh new Nintendo that feels more like the original Nintendo that disappeared in 2006 with the release of the Wii and one that isn't focused only on family games.

Yes, Nintendo have the year. There's no doubt.

After a ton of hard work and lots of relearning, ZPE 2.0.0 is now finally getting there! I'm proud to say that I have been able to rewrite the ZPE Parser and the YASS byte code system now also works with it. 

Pointers have been a difficult thing for me to master at first since I'm used to really high-level scripting languages, but by the end of next week, I aim to have all sorts of features added.

ZPE may now be used to power some of my websites if I can make it efficient enough. More than 30 hours have gone in since two days ago.

Now I need to decide if I want to pull the original ZPE and replace it. 

The Zenith Parsing Engine 2.0 and a lot of the interpreting and compiling features are coming soon. 

ZPE 2.0 differs hugely from ZPE 1.x because it is being rewritten in C++. As you can imagine this is a huge job for me but I've already begun rewriting the amazing parser and will soon begin work on a compiler and later interpreter. 

It's easy work for me and I love it so there's nothing to worry about. I will also likely open source the project too :). We can work together to develop the best programming language ever! Let's make it powerful, fast and efficient with memory (I'll need to write some GC tool at some point for it, if you've got experience in this, please please get in touch and we can work on bringing it to ZPE).

ZPE 1.x will continue to evolve alongside ZPE 2.x and will continue to recieve updates until I officially declare that ZPE 2.x is powerful enough to do what ZPE 1.x can. 

Next topic, Dash. Dash is now on hold for the foreseeable future. No reason other than a lack of motivation for it for now. And again, the lack of motivation is not because of anything but since it's in a really good position I want to leave it for a while before I work on it again. 

I'm working on website hosting and websites at the present time, so both of these projects are taking a backseat for the current time.

Also, I will rewrite the SCSS for BalfBar in the next few weeks because it was getting a bit messy.

Also, my Halloween theme on my website is here for 2017! 

zpe
2.0
2.x
java
c++
update
dash
halloween

First off, I have been developing websites since early 2010, and then I officially became a web developer in late 2012. When I say that I became a web developer, it's because that was when I saw the change from being a standard desktop software developer (look at my previous projects such as Painter Pro and Wonderword) to a web developer and got my first contract in January 2013. Since then I've come a long way.

When I first learned web development in 2010, I did everything with tables - because I didn't know much about CSS and found it a scary concept. As I learned Java and PHP in my own spare time I eventually picked up CSS as well. This was when I started to actually think maybe web development was the right place for me. People started to notice my website and my works such as BalfBar and BalfBlog and so on. Now, years later my website development has become a bigger part of my life - I take on jobs again.

I left my job at the start of October with the intention of doing freelance work for a while, at least until I get into teacher training because I know it's where my skills lie (and because I couldn't cope with the travel to my previous job). 

However, a few years ago I spoke to someone who had been developing websites (whilst transferring some sites to me) for some time and took some important advice. We discussed hosting sites ourselves and he told me that clients who host with you will be easier to manage than those who host with someone else, and they can get a much better tailored service. He claimed that he had been developing websites for about 7 years and manages them all himself. 

This bit of advice stuck with me for about 5 years but I didn't really act on it. Now after all those years of using different accounts for each website I built, I'm now managing all of my clients' websites. This makes both of our lives easier.

Be a good developer and host

I want to be a good web developer and host to my clients and I do this by offering them everything for so little compared with competition. My hosting and services are considerably cheaper than the competition but I currently only offer them as a single package - you can get a website created by me and I'll host it, the two are not mutually exclusive so you can no longer get a site by me and not have it hosted by me.

I offer a range of services, and maintain sites to keep them up to date with the times. I recently refurbished two of my oldest developed sites at no cost to the owner. You see, I actually enjoy this kind of thing, so doing this is a favour to me too.

To be a good host, I have a range of new things. For instance, I moved everyone on my server from PHP 5.5 to 5.6 and now to PHP 7.0 and have enabled the OP cache and so on. I have developed a bunch of reusable tools for users and I'm prepared to install other tools that users need. I've spent a lot of my personal time learning about web server maintenance and I've become really knowledgeable about it so that my clients can experience the best.

Future updates

My brother and I have been discussing a business venture that would have a significant performance improvement for all of the hosted websites at no extra cost. To be able to achieve this, however, we will need to get enough websites to host so that we don't end up paying for something that we make a loss on.

Posted in Web Development
web
development
hosting

Today I'm very happy to announce immediate availability of ZPE 1.5.4. This long awaited update brings a ton of performance improvements and new features including:

  • Switch statements - a new feature to ZPE is the alternate way of writing a when-is statement is the standard switch statement (or case statement). This has been developed to be something of an aliase for the when-is statement, so it will compile to the same op code and will operate the same way etc.
  • Server based ZPE improvements - the server based ZPE will now create thread children that will handle requests. This is a very powerful and useful feature that will allow ZPE to operate much more efficiently on multiple requests at once.
  • Constant tracking - the compiler will now no longer permit constant duplication or reassignment and will halt when it finds this, saving on interpreter time.
  • New object declaration (finally) - in a move towards a more JavaScript syntax for object definition, objects are now declarable within braces as { name : "Jamie Balfour", color : "Orange" }. This new move makes it faster to declare objects, as well as making it tidier.
zpe
1.5.4
october
2017

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.

Posted in Website news
website
update
news

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
  • Sprint 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 Sprint engine to parse them)
  • Help system is getting a complete redesign
Posted in DASH Project
dash
content
management
system
cms

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. 

Posted in Tech talk
atom
ide
new
visual
studio
code
web
development
developer

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.

Posted in DASH Project
content
management
dash
Powered by DASH 2.0