Sequel CMS Release V1 Alpha
At long last, after many years of development, Sequel, which has taken
over from the original idea, Milog, has finally got to a stage where
it can be used for it's original purpose - lightweight, powerful, flexible
web content management, and more.
As an example, thunderbirdlounge.co.uk is the first site to be using the
There is still a lot of work to go in to getting this to a full product,
but the foundational blocks have been laid and it's only a matter of
building in functionality that I have built up over the years as one-off-solutions.
A quick run down of the basic functionality:
- One stop shop. All sites that you have on your host can be managed from one entry point.
- Flexible design. There are no limits to your web content. You have
full power over the entire document, including headers - with no catches. The
only current limitation is one theme per site. Basically, imagine
building a standard PHP/HTML page, but let Sequel do the hard work of
security and theming.
- Database independent. Sequel is currently built on a powerful text
(I know, these words should not go together) database system,
which was one of the original pre-requisites back in the day. The design
allows for any database to be used providing the plugin is available.
Currently, only the Milog Query Language (MQL) is supported.
MySQL support is next in line.
- No SQL! All queries are built using something like the following:
Then, you can access any field using properties, or get the entire
row into an array. Full row iterative support is built in.
There is also much more.
Powerful development. It is easy to develop custom modules to give extra functionality
to either a specific site or every site you manage. All pages
are stored in modules.
Security. By default, all content requires the user to be logged in.
Security rules can be added to give access to specific pages.
The page you are reading is a secure page that has been given public access.
- Lightweight. Sequel is a very lightweight CMS, as only the basics
required for functionality are utilised by default. The entire user experience,
which is what you really care about, is completely customisable.
Currently, page loading times on my host are around 30-40ms - inclusive of
ALL CMS activity (that includes the text database!).
- System variables available on every page. This includes things
like environment, module, and theme settings.
The 3-component page (3CP - guilty, this is my acronym) model.
Each page that is available can have any or all of the following:
Anything defined in a component is available to the component(s)
that follow. This means you can define a variable in the processor
and output it in the content.
- Pre page processor (my_page.pre.php). Done before any output.
- HTML headers (my_page.head.php). Inserts the document into the HTML head tag
for including stylesheets, scripts, etc in a W3C valid way.
(Requires small bit of code in your theme head file.)
- Content (my_page.php). The actual content of your page.
There is also NO requirement for theme code (or
any code in fact) such as:
This is all managed by Sequel.
So, it's still a work in progress, and it does need some good UI,
but it is very much on the way
and will undoubtedly make my life (and others) a lot easier and allow
me to develop scalable, reusable, and easy to use solutions for customers.
I know there are other CMS solutions out there, but I'm just such
a stickler for coming up with my own stuff.
- Posted by James on April 24th 2012
KM Software: Setting up Synergy on Windows and Mac
So, I was looking for a KVM setup to link my Mac and PC together with the
same keyboard and mouse (so KM really). I run a seperate screen for each,
but wanted to leave behind the hassle of having 2 keyboards and mice. First
thing that comes to mind is hardware, but I came across an alternative:
this pretty sweet bit of software called
It will link any and all your pc's together with one mouse and keyboard
over LAN/WLAN and best of all, it's free.
Anyway, I ended up downloading it and following the instructions and,
although in reality it is quite simple to setup, it
still took me a while to get it working properly. Below are some instructions
to help anyone else out there set it up in about 5 minutes. Note: I still
have to instruct the client (my Mac) to start the service using Terminal
so I will still keep a keyboard and mouse connected - I can just keep it
out the way for 99% of the time.
On each computer, download the relative client from the download section.
I am using Windows 7 Pro 64 bit and Mac OS X 10.6. The Windows download
comes as an exe so you shouldn't have any trouble installing that. The
Mac OS download comes as a zip and the contents should be copied to
Now... the configuration. I am using the Windows machine as my server
and the Mac as a client. The Windows GUI allows relatively straight
forward configuration. For setting up the Mac as a server, you need
to edit the .conf file. Both have the same setup logic, just one is in text.
The main confusion I faced was with the naming; when adding your screen
setup to the configuration, make sure to name the screen as your network
name. My Win name was "James-PC" and my Mac is "MacMini.local". If you
do not keep the names the same you will have to set up aliases of those
names otherwise you will face errors when trying to connect.
Next, you configure the layout of the screens. This can be any layout you like,
but you must make sure to tell each screen where it is relative to other screens.
It is not enough to say that your gaming pc is left of your server, your must
also say that your server is right of your gaming pc - otherwise you will
scroll to one screen and not be able to scroll back!
You can also wrap your screens - just add a couple more links and you can
have infinite screen scrolling. Neato!
To make sure it works, use the Test button on Windows, or the -f (foreground)
option from Terminal on Mac. When your happy, use Start on Windows and
drop the -f option on Mac (unless, you want the Terminal open).
In addition, there are other ways to customise it - I have set it up so that I only
swap screens when I hold Alt while scrolling my mouse to the edge
of the screen. I made a command shortcut on the desktop of the Mac
so I can easily start the client on a reboot. You can automate it on startup,
etc, too, but you can Google that one.
- Posted by James sometime in 2011
Ok, it's been nearly a month since I wrote something on here. So here is
a quick update.
I have a new job! I am going to be a Service Management Consultant.
Yes. I finally have a job that can be defined by the phrase, "I work in IT."
(I am now looking at my Dilbert desk calendar...)
I have also been working like a dog for the past month trying to finish
a major project for my soon-to-be old company. I am currently writing this
at 06:55 having just worked all night trying to progress to completion
on an office block for a high-profile client in Canary Wharf. I can't
work days because the building is in use and we get in the way of people
- although, only as much as they get in the way of us. It's amazing
how angry people get at a light that turns on and off a couple of times.
There are three things I love about working nights:
- It is much easier to work. No distractions. No people.
- Travelling is *MUCH* less stressful. And faster.
- I really am not a morning person.
The main thing I have learnt about myself while working nights is
thing 3: "I am not a morning person". Once I'm up, I can stay up
pretty much indefinitely... assuming I have caffeine and sugar on tap.
There are many days when I will be in the middle of a load of code and
I can work until 3, 4, 5 in the morning. The other day, I did 2 days solid
with less than 3 hours sleep - which was broken up by 3 phone calls.
Yes, that is crazy, but at the same time, quite cool to know I can do it.
Now, it's time for some sleep, before the UPS man arrives.
- Posted by James on September 6th 2011
Searching a 2 Dimensional Array
For a project I am working on in PHP, I am doing a lot of work with
multi-dimensional arrays. In particular, I am searching a 2 dimensional
array quite often. As far as I can tell, there are three ways of doing this,
and what is of particular interest is speed of searching. In this instance,
there aren't any duplicated keys on child arrays to worry about.
The first way is to simply use nested loops with key and value variables
and then directly test the value using if().
The second way is to iterate through the top array and search each child
array using array_search().
The third way is to flatten the array and search it directly using
I was curious to find the difference because, aside from the nested loop
search, on the one hand you have
small arrays which are searched (ergo quick?) and on the other hand
a large array to be searched (ergo slow?) which, incidently, also required the
creation of a new array. The real question here
is how slow is a for loop compared to a direct array search?
It turns out, that flattening the array instead of looping it
is nearly twice as fast in all my tests, with the nested loop trailing
massively. This basically proves that searching an array using a looped
array_search is much, much, faster than using a nested for loop, while
searching a flattened array is faster still - by around 60%.
In retrospect and ignoring the nested loop, I guess the extra overhead of having
to use the search function for each array in a loop is what does it;
rather than using the search function to search one giant array where
the function overhead is only created once.
The only downside of the flattened array method is that you have no
way to find your way back into the original 2D array if you wanted to
modify a value.
Averages over 5 loops of 10,000 on a 10x10x100 array (10 arrays of 10
elements of 100 characters):
- Nested Loops Only: 541.81ms
- Nested Loop with array_search on child arrays: 128.12ms
- Flattened Array using array_search: 77.25ms
What have I learned here? It's a good thing to reduce the number of
functions being called when possible; that and nested loops are process hogs.
Download the script here: array-search-test.zip
- Posted by James on August 3rd 2011
Minecraft - Online
Ok, so I've been playing Minecraft for a seriously long time now.
I'm not someone who spends a whole lot of time gaming and by no means
do I think I'm a pro, but I do like to get immersed in a game.
Minecraft is just one of those games. It is so odd, but so fun at the
same time, and you can easily spend 3 hours perfecting a creation.
Basically, my brother in law added me to a MC server yesterday,
and the fun started all over again. Playing with other people is
so much more interesting - unless they burn down your house.
I'm also looking forward to seeing what Notch is actually bringing out
in 1.8. minecraft.net
- Posted by James on August 1st 2011
Electric Cars and Oil Dependency
I watched BBC's TopGear tonight mainly for the reason my friends managed to
get tickets and they were in camera shot (I also like it,
but have always missed it). Jeremy and
James did a piece on electric cars. Their conclusions were that they
like the idea of a motor driven car, but ultimately they are not going
to work realistically for anyone driving outside of London for quite some time.
First of all, the two cars were around £30,000 each - about twice
the price of standard cars in the same class. Secondly, the range they
could travel was only about 100 miles - before requiring a 12 hour (give
or take) charge up. Thirdly, and the main problem with them, is the batteries.
At *best*, they could last 10 years, but to be expected is between 3 and
5. The current cost for replacing the batteries? £7,000.
Fair enough. It's a developing technology, although the fact still remains
that the basic technology is really, really old. All of this is really not a
major issue as I'm sure it will get better as the years go by.
My only concerns with it are these:
- You still have to charge them up
with electricity. The production of electricity (in general) still
generates CO2 - so the notion that by owning one of these means
your footprint is zero is a bit silly.
- It still costs about £8 in electricity to charge up for 100
miles travel (TopGear). So, the costs are not too
dissimilar to the standard newer cars - it's just that you can only
travel up to 50 miles away from your nearest charge point.
(There aren't anywhere near as many moving parts, so this *may*
save on servicing costs, but then again they may not.)
- Why are we not pushing hydrogen technology better which
would remove these problems entirely?
Of course, I know the answer to the the last question, and it's a mixture
of greed, market control, economic stability and technology. We all know
technology is used as the main reason for not being able to do it, even
on TopGear, but
then we all know better. If we didn't rely on oil, the world economy
wouldn't have a leg to stand on. How is it that we have the technology to
safely turn nuclear activity into electricity, but we cannot
manage hydrogen? Maybe it's the fact that hydrogen is so widely available
and not something that could be controlled easily (in terms of the economy) - oil would become
redundant overnight, and a lot of people would be very unhappy about that.
I'd love to be 'green', 'carbon-neutral', even 'carbon-zero'. I do my best to be efficient with fuels,
but at the same time, I can't help but feel that I can't do much
to really make a change and the options available are really limited.
Every little helps, I guess.
has pointed out to me that hydrogen is 'incredibly inefficient
and incredibly explosive' and that it's very heavy when stored. We just
need better batteries for electric cars. I'm still sure that my other reasons for
not using it count for something though - no one wants to lose their business.
But then I'm no expert, and this is just my point of view.
If only I was a scientist.
- Posted by James on July 31st 2011
Is 3D dying?
I read yesterday that EA (Electronic Arts) has said that they are dropping
the development of 3D technology in games because consumers aren't
interested in it.
Now, don't get me wrong, I like the *IDEA* of 3D, but let's be honest,
it sucks, so in this example, I'm glad of what EA are doing. I'd rather
have money invested in making a game decent than making it 3D compatible.
I'm sure EA's decision also had something to do with how badly Nintendo's
3DS has done, but that's another story.
Yes, it can look pretty cool, but, with the exception of Disney Pixar's UP,
there isn't one thing that
I've seen (wearing 3D glasses made in 1972) where I've thought, yes, that
is definitely better in 3D. My only other exception is Disney's Muppets 4D,
which I love (and hope is still there).
Don't get me wrong, I love technological development, but I'm not
convinced that 3D is technological development. Really, it's just
a gimick for advertising and generating additional revenue
(i.e. paying more for 3D films). For me, 3D will only be accepted
when a) there are no side effects, b) it actually *looks* 3D and c) it
doesn't require additional equipment.
Basically, what I'm waiting for is
when I don't watch TV or watch myself in a game, I am in the TV or
in there playing the game. I guess I've a while to wait.
(I also think cinemas should provide simple things such as 3D glasses
that fit your head!)
- Posted by James on July 30th 2011
End of Facebook
I can't count the number of *minutes* (ok, ashamedly hours) that I've
wasted trawling through peoples rants, events, likes and dislikes on
there and so recently, I've packed it in. What I mean is, I really
have no interest in checking up on other peoples lives any more. I'll still
keep my account and perhaps peruse my 'friends' comments
from time to time, but I'll only really keep it in case someone wants to invite
me to a birthday party via it, because, in fairness, it is easier.
When I saw Google+, I thought it was going to be awesome and an end to
the global domination of FB. Only problem is I can't get access 'due to
oversubscription'. I know there are other ways, but I haven't been able
to find any (maybe I haven't searched hard enough).
It's supposed to be more competition to twitter,
but like me, apparently other people aren't convinced yet either
(judging by the fact Google stocks are down...). I won't be signing up
anytime soon unless I absolutely need to.
All in all, I'm not really sure how much longer social networking will last
in it's current form. For me
it started back with MySpace, and has now kind of stopped with Facebook.
Global networking isn't going anywhere, but I also think
there is still room for a fair amount of innovation and integration, and by that, I
mean that it is still yet to personally become as necessary as my mobile phone.
I'll probably do another post when it does become necessary.
- Posted by James on July 30th 2011
Finally done it!
Yes, I've finally got round to it - putting this website up! It's by
no means finished but it is here, which is a start. My main
project for the past few years has been MiLog (which is possibly
going to be subject to renaming) and that is the main reason this
hasn't gone up sooner. Well, now, I've just thought 'stuff it' and
decided to get the site up and show people like you what I'm working
on. If you want to help out, please let me know!
- Posted by James on July 30th 2011