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

Now that ZPE 2.0 is really progressing, I thought I'd let you know about how it is doing in this post. Note by the way, that ZPE 2.0 is my C++ implementation of ZPE.

To be honest, I haven't worked as hard as I could have on ZPE 2.0 as other things still take precedence such as websites I have been working on. However, ZPE 2.0 got a bit of work last night that adds several features:

  1. If statements (no conditions yet, but if, else and end if)
  2. Tree generator view (one of the first modes added to ZPE 1.2 because it makes it easy to debug the code)
  3. Memory management tools

What will need to come next is a bit of interpreter stuff. To be honest this is where things get more complicated and I will likely need to take a bit longer than before to build it.

It's been a while since I last worked on BalfBar but the latest improvement is a huge one! The latest update is version 1.2.

The newest BalfBar release brings a bunch of changes. Most important changes are removals which now includes the floating logo (BalfBar shouldn't manage this) and the Dark Mode (later named Alternate Mode). 

Let's start with why the floating logo / logo base idea was removed. In fact, let's start with why it came to BalfBar in the first place. Many of you will remember that I used the floating logo on my own website. This was removed in about 2015 when I changed to simply have my name. No body who used BalfBar that I know of was using this feature and more importantly, BalfBar shouldn't need to deal with minor things like this. It's removal was obvious and it makes the SCSS file much easier to understand.

Next, Dark Mode. One of the oldest features of the menu was Dark Mode, originally inspired by Mac OS X when it offered us a dark menu bar etc. I became a fan and decided to upgrade my own menu (powered by jQuery Smart Menus) to have this feature. When I developed BalfBar to replace it on my website I had to include the feature. Now I realise that even I don't use this feature. The main reason for it's removal is that firstly it complicates the SCSS file, secondly it will increase the CSS output file considerably and thirdly it can easily be added if needed by just compiling two SCSS files with the different themes anyway.

The SCSS file is now completely cleaned up and ready to use again. I'm also working on adding some new menu types to it including a large menu like I used to have. This will be sometime before it is ready though since my other projects are now taking precedence again.

I have now updated the JS file to work much more fluidly. However, no longer does BalfBar add a fixed_menu class to the HTML but only to the menu. This came from the idea that it's possible that two menus maybe on the same document at the same time, causing both to go to 'fixed mode'. It also allow it to remain more clean and succinct.

One more thing about the new change is that there is now both a desktop and mobile fixed height option. This also means the removal of the permanent mobile created in the CSS. To make a BalfBar instance always mobile, use -1 as normal.

Posted in BalfBar
balfbar
1.2
wnp
menu
bar

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();
Powered by DASH 2.0