Just a quick note to let people know that I have started my new role, as the CTO at MailOnline (www.dailymail.co.uk), and so things have slowed down slightly re. further development on Calipso. Hoping to pick things up again once things settle down.
I’ve also been working on weekends getting my wife’s new online store up and running: www.aluka.co.uk, and as well as getting married with a baby on the way – it’s been a big year!
Ok, I’m now at the point where I have most of the user stories I was interested in working and live on the Calipso site.
There is only ver basic documentation re. installation etc. available at the moment, but I will be adding a lot more over coming weeks. I’ll also be aggressively refactoring (as a lot of the code has been written to prove to myself that it works), so it is by no means stable.
If you’re interested in contributing, please contact me – I’m definitely looking for people to help me on this journey!
Ok, so I spent some time over the weekend pulling together the rough outline of a CMS built on Node.JS, MongoDB, Express and Mongoose.
The idea is that I can build this on very similar concepts to Drupal, re. modules, themes, blocks etc. that enables me to build the skinny core of must have modules (content management, users, admin) and then see if others will join in and contribute other modules of interest (e.g. chat or presence).
I will be switching this blog over to it in the next couple of weeks, eating my own dog food so to speak, so look out for that! Otherwise, you can find it as always on github: http://github.com/cliftonc/calipso.
Update: You can find the site here http://calip.so.
Any feedback welcome at this stage.
Released version 0.1.1 to NPM:
- Added inflection library (thanks to https://github.com/vladtoni for the suggestion) – if you create a model called Person, the controller and plural will be People (for example).
- Added cluster library and configured to run in cluster mode by default (https://github.com/learnboost/cluster)
- Small changes to the default pages and styles.
Install as usual, via npm install express-mvc-bootstrap. Current thoughts on what next are:
Add proper dispatcher library to enable named routes (e.g. grails or li3) and remove this code from the controllers.
Add proper test harness and test creation, as well as write tests for framework itself.
Add a ‘service’ script that creates services that work purely as JSON rest services instead of HTML controllers.
Add socket-io scripts that enable realtime ‘stuff’
Add default auth and user / group library – will do via a plugin model.
Add a simple plugin model.
Please let me know if you have any comments or suggestions on where to next!
I’ve created a very simple module to integrate the Lithium (http://dev.lithify.me) Framework into Drupal as a module. Why? Well because of it’s very strict namespacing, you can include it without any overlaps (you can’t with Cake or Kohana). Accelerates building of non-content, complex apps where extending Drupal using CCK / Views etc. and being constrained by the node model doesn’t make sense for you.
Everything is on my github page: https://github.com/cliftonc/li3_drupal as usual.
You simply need to install Li3 (and may I add that this is an absolutely awesome framework with a lot of potential – come on 1.0 release!):
1. Download lithium from http://dev.lithify.me. Clearly it has some dependencies such as php, a web server etc. if you’re reading this I’ll assume you’ve figured out how to install those
2. Download li3_drupal plugin – lithium branch, place into the app/libraries folder.
git clone -b lithium email@example.com:cliftonc/li3_drupal.git
Then configure Drupal:
1. Download and install li3_drupal module and install into your Drupal 7 instance.
git clone firstname.lastname@example.org:cliftonc/li3_drupal.git
2. Edit .module to point at your installation of Lithium (change paths as appropriate).
3. Enable module.
What is included:
- Drupal security adapter – uses the standard Auth::check and Li3 session management to interact with logged in Drupal user (very basic)
- Routes – based on the configured sub-path
- Drupal bootstrap to set environment (needs to be enhanced)
- Enable li3 commands to be run from an admin page ?
- Add Doctrine plugin (this does work – but removed to simplify initial release – want to be able to add as simple plugin).
- …. ???
Spent some time this weekend coming to grips in more depth with Node.js, and particularly playing with it from a traditional ‘Web App’ perspective (rather than really pushing the boat out and looking at the more real time possibilities – I’m leaving that for the point at which I understand it all properly!).
I’ve posted a sample application that I will use as the starter template up on my github account:
I built this application to create a template MVC ‘style’ app that I could then use as the start point for further development. I used the excellent examples in the main Express github (https://github.com/visionmedia/express) repository, specifically the MVC example, as the starting point. I have however changed it quite substantially to make it clearer and remove some of the ‘magic’ that confused me at first when learning. If you are familiar with other MVC frameworks hopefully my file structure makes some sense.
It depends on:
You need to manually install (FYI – I use Ubuntu 10.10 on my laptop):
- http://www.mongodb.org MongoDB: NoSQL Database, install manually.
- http://npmjs.org/ NPM: Node package manager, used to install the remaining.
And then install via NPM:
- http://expressjs.com/ Express: Application Framework for Node.js
- http://mongoosejs.com/ Mongoose: Node.JS ORM for Mongo
But I’ve included in this project:
- http://jqueryui.com/ jQuery UI: UI Library
- http://taitems.tumblr.com/post/482577430/introducing-aristo-a-jquery-ui-theme jQuery Aristo Template: Fantastic looking jQuery UI Template.
- Install all the dependencies above.
- Clone project somewhere (e.g. /var/www/express-mvc-bootstrap)
- Run: node app.js
- Browse http://localhost:3000/
- I need to add a proper github pages site for it, with a tutorial of how to use it to setup a new application.
- EJS is currently embedded in the lib folder, this should either be a submodule or installed via npm (didn’t work for me via npm)
- I’d like to write scripts that can be run to enable creation of ‘template’ Models, Controllers & Views (like Grails)
- Write some amazing apps?!
Ok, I’ve finally decided to give in and create an account on Twitter. Mainly because after I started posting to my blog again, I noticed that actually a chunk of traffic came to one of my more recent posts via Twitter (a little unexpected and thanks to Trevor Snaith who posted the link).
So, feel free to follow me (or not!), I am intending only to use it to post things related to my blog, not related to what I might be eating at any point in time
Tweet me @ClifCunn
Ok – picture this:
You are sitting in a meeting discussing a potential new project that has appeared in this years budget round (or however projects are conceived in your organisation), it’s transformational, so is going to have a large impact on the way the business operates (no sh*t you say – but give me a moment, there is a point here). The usual suspects are all there, a ‘Director of [Insert Silo Here] Technology’ or two, a ‘Head of [Programme Management | Delivery | Operations | Business Analysis]‘, heck, even an Enterprise Architect or two, all to have the first discussion around how the project should be structured, planned, analysed, delivered etc. Now, I can absolutely guarantee you that at some point in that discussion, someone (and my theory is that the more important sounding the title the more likely it is that it will be them) will say something like “I don’t think THE Business … ”
Queue mental groans of ‘arrggghh’.
Now, I could explore the reasons why people use this statement (and may in a later post), but rather I want to concentrate on the impacts of the use of the term THE Business at an organisational rather than personal level.
First, I want to define it:
THE Business: Used in conversation or argument to refer to a different part of the same large organisation, typically the revenue generating part(s), by members of a shared service (such as technology or finance). e.g. “THE Business want the process to work this way.” or “THE Business prefers thick client software so that they can use drag and drop.”. Typically used to attempt to stop a discussion, as THE Business refers to an amorphous group that can’t be challenged directly.
Ok, so what are the impacts of the use of this term? Well, I think they are massive:
- Divides different parts of an organisation into operational silos.
- Massively impacts the ability of an organisation to make wide reaching decisions or implement wide reaching change.
- Contributes to knowledge asymmetry (particularly the business / technology divide)
- Reduces accountability and makes it easier to transition to a blame culture – e.g. it was THEM not US.
Am I attributing too much to this term? Perhaps … as many cultural problems in large organisations are seated deeper within the management and organisational structure, but the reality is that if an organisation that uses the term THE Business excessively, took steps to analyse remove it’s usage (not by banning it, but by addressing the root causes), I think they would be a far healthier (and wealthier) organisation as a result.
Ok – it’s easy to throw stones and point out problems, what are some solutions?
- Develop a common language and model of how the business operates and communicate this to everyone in the company – this takes time and effort (and money), and can only be done by example from the top – make sure everyone understands that they are one part of a much larger whole, and can see their place within it.
- Run real employee inductions that do more than explain HR policy and your core values, and ensure that any departmental yearly function / update includes updates on the rest of the company.
- Don’t separate shared service teams entirely into ‘service centres’ at different locations – create a department by all means, as there are benefits with respect to career opportunities by grouping like-minded and skilled people together, as well as outsourcing – but leave them embedded** within the business units they serve.
- Put real weight behind temporary placements / swaps between departments.
- Make sure that projects are never a ‘technology project’ or a ‘marketing project’ – be transparent and communicate what all projects are doing, why, and their progress.
- Any other ideas? Please leave a comment!
Note: Having sat on both sides of the fence, I would definitely agree with the argument that this cultural problem and the use of this term developed within shared service groups such as technology and finance due to the excessive use of management consultants, who clearly have a vested interest in a technology or shared service viewing THE Business as a client – it makes it much much easier to sell outsourcing!
I’ve been giving this an in-ordinate amount of thought lately, and for those of you who don’t know me, it is because I finished up at my last job in April (lead enterprise architect at a UK television company), and fulfilled a life long dream of jumping on my motorbike and travelling off around Spain for a few months practising my Spanish (see photo to the right). Needless to say, while travelling I didn’t give this question a single moments thought, but when I have returned, and have had to start considering what I do next … now this question is really bugging me!
Ok – let’s start with why I became interested in being an ‘Architect’ (used in the purely information technology sense) many years ago:
- They were the person on the project who knew more about the overall problem, and more importantly, the solution, than anyone else.
- They needed to understand and be able to communicate both the solution and how to get there – upwards to the stakeholder, around to other team members.
- They needed to make difficult choices – what tools, what technology, which people?
- They need to deeply understand good project management practices – what use designing a solution if you can’t get anyone to implement it?
- They need to understand estimating, financials etc. – because if you can’t articulate the cost of one solution vs another you will never win an argument.
I could say more, but I think these are the specific things I thought an architect must be able to do, and are all things that attracted me to wanting to be one some day.
Now, my problem. I’ve been called numerous times in the past couple of weeks by people who have seen my CV, and who want to talk about me applying for a job as an Architect: Chief Architect, Enterprise Architect, Enterprise Data Architect, Solution Architect, Technical Architect, Applications Architect etc. etc. and they all seem to have quite rigid definitions of what these things are, which all seem to go against all of my (hard earned I think!) understanding of what makes a good architect.
So, as I re-read the Agile and SOA Manifesto’s the other day, I thought that I would have a go at writing a quick and simple Architect Manifesto to explain what I think is most important for an architect, and what I have always looked for first and foremost when adding new architects to my team or projects.
The Architects Manifesto:
- Collaborative over rigid hierarchy and formality
- Flexible over rigid adherence to frameworks
- Business oriented over technology driven
- Simplicity over complexity
- Open over closed
- Grounded over blue sky
- Technology agnostic rather than technology bound
- The whole picture over just some of its parts
- Bears with fur over shaved bears (link)
Would appreciate your thoughts or comments!
I guess the thing that is grating on me at the moment, is that there are a lot of people out there looking for ‘architects’ when actually what they are looking for is just a senior developer who can actually talk to your stakeholders. Yes, it’s important for an architect to be able to get their hands dirty, but to get the most value out of having one they should be looking at the bigger picture, 2-3 steps ahead of the people writing the code – not writing any code themselves (unless it’s an emergency!).
Don’t get me started on how many people these days are asking for (or calling themselves) Enterprise Architects, when the reality is that all they want is a software architect who can operate in big ‘Corporate IT’ environments. Maybe I’ll save that for another post next week!
I have written a simple travel blog (as I couldn’t find anything that seemed to do exactly what I wanted!).
- Link a post to a Picasa album
- Link a post to a Google Maps location, or a route between a number of Google Maps location
- Post a story
- Allow for multiple trips
- Be maintainable online
- Look great!
Just for fun, I decided to write it in a PHP framework called Kohana (as php is the easiest language to get running on this web server), using mysql for storage and jQuery for the UI layer – everything is REST based, though not pure REST, as I am only get/post’ing
A demonstration version of the blog (database will be refreshed regularly):
Link to source for my travel blog:
It still needs quite a lot of work to make it more configurable, and to add security and a few other nice features. If anyone wants to help, please get in touch. I’m still in holiday mode after riding my motorbike around Spain for the past few months, and will be working on some of these personal projects while I consider what I move on and do next!
Error: Twitter did not respond. Please wait a few minutes and refresh this page.