To use this website fully, you first need to accept the use of cookies. By agreeing to the use of cookies you consent to the use of functional cookies. For more information read this page.

Jamie Balfour'sPersonal blog

The 13th of July may be my own birthday and I'll never forget to celebrate it, but it's also the birthday of Dash.

The new name of Dash was conceived on my birthday in 2017. That makes Dash officially just over 1 year old!

Whilst the last year has been pretty damn quiet for Dash, July has been great for it as I've spent a lot of time working on improving it. Just today I've finally got round to adding multiple notes, last week I added the Girder Framework to it and just a bit before I changed the front end to use object-oriented meta data.


Last month, I announced that Dash was now getting BalfPick. This was the first time I had integrated one of the other components of my Web Independently Styled Project into Dash. It was an important moment for me because of two reasons. Firstly, it meant that Dash would finally be getting the dropdown boxes it needed. And secondly, it was the first step to integrating my personal projects into Dash.

The next step was, I guess, to bite the bullet and make this a thing. Well from today, I'm very excited to announce that Dash has had its first major makeover since becoming Dash last year and is now built with the Girder Framework. No longer is it tied down to a CSS stylesheet that relied on duplication of styles but it now focuses on a much simple Girder-based grid system.

This means that certain pages look far more consistent with each other, certain styles are better developed and in general, it will be easier to develop Dash. This is similar to how it helped me with my personal website when I switched it to Girder. Although Girder is not prominent across my website, there are parts where it is hugely important, and that's what it's all about.

On top of that, there have been new placeholders added and old ones have been renamed. Please take a look at the help files in Dash when you have upgraded to see all the placeholders if you use Dash at the moment. There is also now a cookie acceptance box because Dash now tries to comply with the cookie policy in case your own surrounding website does not and Dash also now uses TinyMCE 4.7 for a far more sleek look than before.

Best of all though, and as a side-effect of Girder coming to Dash, here is the new Dashboard:


In the last few months I've not been able to put as much time into Dash as I'd hoped. However, fear not! I've recently updated Dash with some snazzy new things and some minor improvements.

First of all Dash now includes BalfPick, my own dropdown/select box - a vast improvement on those pesky ones built in to the browser. If you've not seen how BalfPick works, take a look at it on my website or take a look at my sample blog.

Secondly I've fixed the issue with the invisible scrollbar in Firefox. You see the sidebar is meant to be scrollable, but it's meant to hide the scrollbar. This caused issues on Firefox but it's now been sorted.

On top of this, I've made some general improvements to the UI - the login screen now supports the glossy/glass look that I've been testing out across Dash using the backdrop blur effect.

Finally, small performance improvements have been made since the last update so it's worth trying out this version just for that.


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

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:

$current_user = DashLoginManager::GetCurrentUser();
$form = new DashForm();
$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();

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>

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
  <div class="image">{POST_IMAGE}</div>

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.


I've been banging on about BalfBlog for at least the last two months. The most important two months of it's journey to becoming a stable content management system that can be used by many. 

The staple aim of BalfBlog is to develop a concise, well-defined, well-built and independent of any styling, content management system. It will always rely on the host website's core styling in order for it to produce posts. This means that a bit of technical knowledge is needed, but very little.

The Dashboard is very easy to configure, with a set of easy to use options and tools to make it easy to manage your content. 

In May 2016 my own website changed to BalfBlog for article and review management and in October 2015 my website introduced my very first journal (one that nobody can access but me, of course).

Of course with time, the focus has shifted from being a blogging system as it was when JBlogs first started. In fact JBlogs never meant to come out of it's shell and become anything for use outwith my own website. When BalfBlog was announced, I made the version jump from version 1.1 to BalfBlog 2.0. This name change was made in 2016 to keep in line with my other projects in my Web Independently Styled Project (WISP) such as BalfBar, BalfSlider and BalfRibbon but it was never going to be permanent.

With the introduction of Article Mode - which is used in my articles and reviews, BalfBlog stopped just being a blogging system but a full on content management system (CMS). This was a big step and one which made it difficult to keep under the BalfBlog name. For a long time a name change has been on the cards.

Now, I'm proud to announce that BalfBlog will be known as Dash Content Manager from now on!

Why Dash?

Dash is always stylised in italic when I refer to it because it's similar to what the logo for Dash will look like. The name Dash came from several roots. Originally I was going to name it Atomic, based on the concept of atomicity within databases, but I liked the name Dash better.

The name is far more representative of what it is. Dash represents a fast system, which indeed it is. The name Dash is actually a bit of a homage to the agile way in which it was developed since to me a dash is like a sprint. 

Dash of course also represents the core part of the Dash structure, since the main focus for BalfBlog 2.4 and Dash is the dashboard. 

Dash is itself a recursive acronym:

Dash: Adaptable, Secure and High-performance Content Management

Let's go through those words to see where they fit in:

  • Adaptable - BalfBlog 2.2 introduced plugins, and Dash extends the way plugins interact. This makes Dash adaptable
  • Secure - Dash is designed with a sophisticated and secure system to authenticate users and verify they are who they say they are. No unencrypted passwords are saved in any database and it's not possible to access data outwith the boundaries of the dashboard.
  • High-performance - Dash is designed to be lightweight and fast. Features that have been added have been designed to have minimal impact on the performance of Dash.
  • Content Management - BalfBlog was a blogging system originally, and only managed content in a blog. Dash on the other hand (and of course later versions of BalfBlog) is designed with all kinds of content in mind. 

Dash can now even manage your files within the assets directory thanks to the new file manager.

Another big update

Another big thing I should mention is some that related to the version jump from 1.1 to 2.0 when JBlogs became BalfBlog. Now that Dash is nearing ready for release, I'm doing another version jump. Except:

BalfBlog 2.4 => Dash 1.0

Yeah that's right, BalfBlog 2.4 is actually now called Dash 1.0. 

The future

There's still plenty planned for Dash such as single installations multiple blogs, page management and a new comments system (possibly).

If you are wanting to see the latest version as it develops, visit This rubbish subsite is dedicated to new features being added daily, so it will vary all the time. At some point I will add styling to it but it's low priority.

Powered by DASH 2.0 (beta)
Code previewClose