Monthly Archives: September 2008

Thoughts on CMS’s as Version Control Systems

I got myself to thinking about versioning content in a content management system.  It seems to me that when it comes down to it versioning of content is integral to the success of long term usability of a CMS.  As any website grows more and more users will need to have access to both create and maintain the content of a website.  But I was thinking that version control can server a better purpose then just helping with workflow.

Let’s apprise one of the weaknesses of the internet, permanence.  After I post this article on my website, the website would seem to be the same website, but looking at it from a different perspective you could consider it to be a “new edition”.  Much like a book, adding new information and reprinting it, you would have a new book as a different edition.  The problem with this analogy is that with books you can take the two editions and compare them side by side, but with a website the old edition is gone forever (kind of).  Comparing two editions of a book can show you exactly what changes have been made, while there is no way of knowing exactly what has changed on a website.

Now this is not entirely true, The Wayback Machine at the Internet Archive, continually scans the internet and saves old copies of information. RSS feeds have been adopted to allow subscribers to keep informed of changes made to the website.  And Wiki’s have sprung up in the attempt to allow content to be kept up to date and versioned.

What I would like to see is a standard for websites that allows the website itself to be versioned.  Make a website capable of being displayed as it was at a specific date and time.  Allow for milestones to be created for the content and the website as a whole.  Imagine having a draggable timeline above the website and being able to change the date you are viewing the website from.  This could even be extended to have a timeline per piece of content.

I am taking a lot of this idea from version control systems like CVS, SVN, or Git, but with one main difference.  Content should also be able to be predated to allow content to show up at future times as well.  Using version control as an embargo system is just one of the many advantages of thinking of a website as a viewpane on a timeline.

How long will it be until we create an internet of self archiving websites.  How long until we stop using technologies such as RSS and The Wayback Machine as stopgaps.  Let’s address this issue before it is too late, if it isn’t already.

SQL Server BULK INSERT Using a Data Field?

I have wondered for a while if there is a way to use SQL Server’s BULK INSERT command using BLOB or CLOB data Instead of a local file.

The reason for this is that when writing imports, using both Coldfusion and PHP, parsing and importing the data into the database is the weakest link.  It is relatively simple to write dynamic SQL to import data into my existing schema when copying from data already present in the database.  It is quite another matter to attempt to run thousands of INSERT statements from my web application.

I can’t ask a client to use SQL Management Studio to import their data into a table and then use a web app to run the import.  I don’t want to expose the database to the user and vice-versa.

At present I can only think of one good way to implement an import process and that is to allow the user to

  1. Upload the file.
  2. Create some sort of import plan (associate the content).
  3. Save that plan in some way.
  4. Run a scheduled task to run the import in batches.

I am dealing with imports of possibly hundreds of thousands of records.  Also note that I have limited access to the database as it is possible that the app will reside in a shared hosting environment.

Git for Windows Users

Here I am compiling information as a windows user that I needed or should have known while working with Git.

I still have issues trying to push using Git to a network server, as does a Mac using coworker.  I think there is some configuration issue or Git just doesn’t work well across networks.