Blog Byron

Avatar

Byron source code on Subversion

The source code for Byron, the heavily under-development content management framework for ASP.NET is now available through my Subversion repository.

Subversion is a system that allows developers to work collaboratively on applications, because it puts all of the source code in one place. You can also let guest users download the code, and it makes versioning easier and ultimately gives multiple developers more control over their projects.

As I’m the only developer I’m mainly using Subversion as a way of allowing others to see my work. Other sites exist for .NET developers (like CodePlex, Microsoft’s answer to SourceForge) but they often lack the automatic element that allows you to push your changes back to the server quickly. (I use Microsoft Visual Studio 2008 with a plugin called AnkhSVN that provides a fully integrated interface to Subversion.)

Byron is now being used for the Rhubarb Radio Website to power both the text content and the schedule, and in time (once I’ve made a few more tweaks and started writing the documentation and improving the code commenting [ie: adding some]) the framework will have its own site.

Anyway, should you fancy taking a look, you can find the source code for the libraries that are included in a Byron Website at svn.bluemilkshake.co.uk/byron/. Once the system gets its first major version number a test site will be included in the repository, so you can see how a site uses these libraries.

Dropping off the social planet

I’ve been busy with new contracts and other commitments over the past couple of weeks, and my blogging has suffered. It’s a common side-effect of business and a mismanagement of proprieties.

Most people put blogging quite low down the list of priorities when they come up against their own personal busy season, but in the same way that you should never stop chasing new business when you’re already stacked, you shouldn’t stop blogging when you’ve got ideas in your head, just because you haven’t made the time to write.

Of course, that assumes you’re blossoming with ideas and viewpoints. What do you do when you’ve got nothing to write about? Should you blog “for the sake of it” or only when you have an original, unprompted thought? Do they have to be mutually exclusive?

That’s enough questions.

So, in the absence of another polemical argument, I thought I’d give you a heads-up as to what’s going on in Bluemilokshakeland.

Byron, my fancy content management framework is getting an overhaul to make it more scalable and increase its usability for developers. It’s already very efficient but as a developer tool it’s lacking any form of intuitive logic.

I’m currently doing some work in Henley in Arden (in the Midlands, on the way to Stratford, UK) and sharing social marketing links and ideas, which has lead me to think about getting a page of links setup on bluemilkshake.co.uk, or working with my del.icio.us list to provide a comprehensive list of my recommended reads.

Also got lots of projects on, and am thinking of getting a dedicated Linux box for all my various WordPress sites, and to host any new Ruby on Rails projects as and when they come about.

So that’s me. Thanks for your patience and I hope to be back and as divisive as ever very soon!

Byron, deadlines and pulling an all-nighter

It’s been a long time coming, but finally Bluemilkshake has a .NET site again, after popping over to WordPress for a wee while.

WordPress is a great system, and one of the things I loved about it was the way you could just “get on” with writing without really having to worry about anything else, and that’s part of what I’ve tried to achieve with Byron, the content management system that this site is built on.

I moved hosting a week or so ago, from a budget PHP host to Fasthosts, and with the move came the necessity to close down the original site, moving as I was from PHP to .NET (in short meaning that the old site wouldn’t work).

So I put up a holding page claiming boldly that the new site would be up by July 1st, a deadline which had already been put back a few days. I had a number of other projects on at the time which needed my attention so inevitably my own site suffered, leading to something of an all-nighter, the evidence of which you can see in the three videos below.

10pm

12am

3am

There’s nothing like sticking to a good deadline is there!?

Anyway...there’s still a lot more to do on the site, and a lot of content to add but I felt it important to at least have a place I could direct people to, plus it’s nice to get my blog back again!

(I’ll be working on getting all the old URLs to redirect but in the meantime the RSS feed URL that readers use to subscribe is being automatically redirected so you should be able to pick this new post up in your RSS reader.)

Byron’s first stumbling block

On Thursday I started work on my new content management system for ASP.NET, called Byron. I wanted to make it both flexible and efficient and in doing so I’ve had my first setback, and it’s all to do with data.

ASP.NET has a great model for creating flexible applications that can be configured very easily and without having to write too much unnecessary code. The Provider module means that you can put all the logic for a set of functionality in one place, and worry about the nuts and bolts later.

For example, I started off with a DataProvider system. I created a base class with a load of functions for accessing information about users and their roles, so that I could build a login system for the admin area later down the road. I then built a MySqlDataProvider which inherited from the DataProvider class and which would actually handle the instructions that the DataProvider was being given.

So basically the user system says “reset this user’s password” and the DataProvider says ”OK. Oi, MySQL? Check this user’s password would you?” MySQL comes along, resets the user’s password and tells the user system it has done so. (A very simplistic description, but hopefully it makes sense.) That all works great because the MySqlDataProvider knows what data to access, in what table and what to do with it. Now comes the tricky part.

I want the system to be a framework or platform, more than a CMS. I want Byron to form the basis of all .NET sites I develop in the future, so that means the system needs to be flexible enough to deal with any type of content, be it a page, a blog post, a contact form or a news article. Because there are subtle differences between examples 1, 2 and 4, a catch-all system wouldn’t work, so total flexibility was what was needed.

So I built a ContentProvider and setup a whole load of stuff in the site’s configuration file so that new types of content could be created, understood and rendered. It all went swimmingly until I came to the point at which I’d have to access data for each page, post or article.

And that’s where the stumbling block came and whacked me square in the noggin. How do you access data from a database without knowing

  1. what the content will be used for, and crucially
  2. what form that data is held in?

It could conceivably be XML, a MySQL or MS SQL database or even - heaven forfend - a bunch of text files. If I wanted the system to be totally flexible it would have to cope with all of these, and more. And that’s actually OK as long as you know what data you need, but because the content system was dynamic too, I didn’t.

I knew that if I really knuckled down I could create a really fancy generic query system where the complexity of each query could be communicated and passed from the ContentProvider to the DataProvider and back again. But this would end up slowing the system down, and I’d have a foot-long white beard by the time I’d finished. So I had to make a compromise, and from now on, Byron will only support a MySQL database.

I wanted to allow the support of any database that can interpret SQL (a “programming” language for databases), but there are limitations which I won’t go into, so it’s MySQL or no SQL. Hey, if it’s good enough for WordPress it’s good enough for me!

Say hello to Byron

A few conversations, be they online or offline have lead me to think about whether I should be demonstrating my .NET skills through my own CMS. My priorities have shifted since I setup this site on WordPress, and now I think demonstration is more important than procrastinating.

My mate Kevin is already using version 2.0 of Bluemilkshake.ContentManagement on his site DigiKev, but it doesn’t give him everything a blogger needs. Yes he gets the basics: he can add new posts, add links, images, metadata and so on. But it doesn’t ping any servers when he updates his blog, and it doesn’t notify any posts to which he has linked.

Plus the system is not necessarily the most efficient. It was built on a module basis (a little like WordPress widgets, except those widgets don’t have to be stuck in a sidebar: they actually form the makeup of each post), so each block of text is one module, and an accompanying image is another.

It’s because of the issue above that I thought, rather than upgrade an existing system I should think about it from a new perspective, taking the things I love - and removing the things I hate - about WordPress. I should point out though that I’m not out to produce WordPress for ASP.NET, and I’m not creating a blogging platform. I want to create a content management system that implements a really solid blogging system.

So Byron is born. It’s an ASP.NET 2.0 application using a MySQL database. Why MySQL? Because Microsoft SQL Server is just too damned expensive. Why ASP.NET? It’s too long to go into, but it’s by far the more powerful language, at very little extra cost when looking at shared hosting. I’ll be writing it to support any form of database (or even a set of XML files), but this might not come till later in the development process.

I thought it’d be a great idea to blog the development process of this new project through from its conception to its first deployment and provide code snippets where they have value. If you’re not a programmer this will hopefully give you an idea of how a CMS is built, and if you’re a PHP developer this should show you that ASP.NET developers are real-world programmers.

I should point out that in an earlier post I extolled the virtues of systems like WordPress because of their “pick-up-and-go” style. That still stands. You can setup a new WordPress site in about five minutes from a standing start and that’s no mean feat, so I have nothing but respect for that system. It works too; really really well and the development community behind it is immense. I just think it’s important to put my skills on show on my own site.

Wish me luck!