Masters of the Universe – A Web Systems Suite
Okay so this is really fun. Just over four years ago I was working at a popular mortgage company as a back-end Tech Lead and was tasked with developing a PHP web framework to replace the dated and abominable system they currently had in place. Their current “framework” was like the ugly bastard child of an MVC with grade three burns. In other words it was total shit (all these years later and I still seem to harbor a great hate for it). The web had been advancing quite nicely and we were now looking at the birth of Web 2.0, so not only was it a misery for us developers to code in the current system, but it had now become a hindrance on what we were able to accomplish. So management finally understood the necessity to invest in a new system and I was charged with leading it’s development, I was finally able to realize a vision for a framework I’d been dreaming up for a while.
The first step of course was to come up with a cool name for the framework. After much brainstorming with the front-end Tech Lead (who was the co-creator of the framework) we finally came up with a name we both agreed on – Skeletor – not only a powerful villain from one of my favorite childhood toy franchises, but the name just seemed so damn appropriate for a framework. I was super excited with the name and the project, and I wanted everyone else to get on board and be as excited as I was. I also had the vision that the framework would belong to a web suite and comprise of various user interfaces to manage things like the URL catalog, error reporting, and debugging.
So the following is the very first piece of work I did for the project. The document was put together before the project was completely sold to management and definitely helped seal the deal. I also had the requirement to teach the rest of the team the fundamentals of OO programming and MVC frameworks. So my idea here was that each member of the team would get a character from the MOTU world, which represented a module within the framework, and they would have to become that character and learn everything about the purpose of that character, and understand it well enough to present it to the rest of the team, and eventually develop-out their module. In the end it was only two of us that were assigned to developing the framework, which we did and we did well, and that same framework now serves up over a half a dozen websites with over five million page impressions a month. So this is just a mock-up for something that never really paned out as planed, in the end we never really fleshed out and finished what I was attempting here, but even still I think I came up with a really fresh approach to teaching the concepts of OO development, or teaching anything for that matter, and to this day I still look back and try to match that same vision I had then with the work I do now. Enjoy!
![]()
The web systems suite comprises of everything involved in the website process:
- Framework
- Framework Objects
- CMS Application Interface
SKELETOR – The Framework
The framework for the web applications. All applications live within an instance of the framework. It consists of libraries, classes and run-time infrastructure.
- Logical and concise directory structure
- Extends PEAR
I HAVE THE POWER – Master File
The master file for the SKELETOR framework. Mod rewrite points to this.
- Controls environment and global settings
- Initializes common global objects
- Routes, dispatches and renders the browser call
QUEEN MARLENA – The Model
The model defines the properties of an object.
ETERNIA – The View
The view contains all the output for the page call, with defined placeholders for logical driven content. An object may have multiple views.
KING RANDOR – The Controller
The controller contains the default behaviour and helper classes of an object. All Skeletor objects extend the Skeletor controller.
EVIL-LYN – The Error Handler
The error handler takes care of where to log, and how to react to an error.
TRAP JAW – The Database Abstraction Layer
The database abstraction layer sits between the framework and the databases and handles all queries and results.
MAN-AT-ARMS – The Security Layer
The security layer controls access and permissions for the user.
BATTLE CAT – The Content Catalog
The content catalog is both a CMS interface and a stored representation the its data. It defines what view and model a URL should dispatch.
RAM MAN – The Forms Catalog
The forms catalog is a CMS interface used to build the web forms and define how the captured data is stored.
CASTLE GRAYSKULL – The Session Handler
The session handler controls how session data is stored (e.g. serializing objects) and where it is stored to (e.g. written to the file system or a database).
STRATOS – Redirect Handler
The redirect object handles how all the various possible redirect types are handled. It will consult with the content catalog to know how to handle a URL redirect (301 moved permanently, 302 temporarily redirected, etc.)
TEELA – Form Handler
The form handler consults with the Forms Catalog
PANTHOR – The Request Dispatcher
Consults the catalogue hash map and calls the appropriate object.
SORCERESS – The AJAX Handler
Enables a page to speak telepathically with the server.
SNAKE MOUNTAIN – The Skeletor Control Center
GUI to configure and control many core aspects of the framework.
- Generates new applications
- Control user access
- Control error handling
TRI-KLOPS – The Search API
The search appliance interface.
ORKO – Documentation System
This represents the importance of both automatically generated code documents (PHPDocs), and manually generated user-friendly documentation (HOWTOs).
Hmm. I don’t really know what any of this means but I LOVE He-Man. Orko was def my faves! Does She-Ra figure into this framework thingy at all?
This is absolutely hilarious!
Although for some reason I thought that TrapJaw would be the error handler. You know, like “error trapping”, I guess.
Paul still has his Prince Adam doll at his desk :)
@Gillian see it’s fun even if you don’t get it! No She-Ra sorry.
@Garcia Yeah some characters roles make more sense than others – Sorceress the AJAX handler that speaks telepathically with the server was always one that amused me. To be honest I didn’t spend a whole lot of time trying to match a character to an object so they don’t all make huge sense, for example Trap Jaw just seemed really mechanical to me which is how I look at a database. Make sure you shoot the article over to Paul, and say ‘hi’!
I have heard of this mythical document before.
To be honest though, the current incarnation of Skeletor bares little resemblance to the original anymore. New metaphors have been found over time and some parallels between .Net have been added (DataSets, DataGrids, DataSources).
I think I have *the* Skeletor “action figure” now. :)
http://photos-e.ak.fbcdn.net/hphotos-ak-snc1/hs224.snc1/7134_168346711292_583656292_4068932_4801491_n.jpg
Guard it well my good man!