To can listen to the podcast and read the show notes here
Michael Smith: Welcome back to the show, I'm here with Alex Skinner, and he is one of the co-founders of Pixelate, a big agency in the United Kingdom that focuses on development using CFML and we're going to be talking today about a talk he's going to give at into the box, a whirlwind tour of preside application for framework in the wild. That's not the official title of it but that's what he decided to call this episode.
Alex Skinner: Can probably come up with a better title.
Michael Smith: Well you still have a couple of days before the conference to change everything. So we're going to look at what the heck preside is and why it's more than just a CMS and we'll look at why Pixelate moved from Adobe coldfusion to other coldfusion engines back in 2005 and why they shifted preside itself from closed-source to open-source five years ago and how it lets you build complex business systems on top of the preside application framework. We'll also mention the daredevil risk he's going to take by doing live coding during his workshop, which is always dangerous.
The advantage preside gives you of non-throwaway scaffolding when you're creating your applications and several of the cool features that let you accelerate custom code development on top of preside which are very different to the way other CMSs let you add custom coding, so it's kind of interesting stuff there. Then we'll look at … he's going to talk about some extensions with the elastic search and the star wars mashup and if we have time, we'll talk about data tendency and how it handles that and multi-lingual data and versioning and document management versioning, rollback and timing. So all kinds of interesting stuff there. So welcome Alex.
Alex Skinner: Hi there. Thanks very much for having me.
Michael Smith: Yeah thanks for staying up late, I know it's pretty late in the UK so appreciate you doing that. So, I think the question is what the heck is preside because not everyone uses it. It's not the most popular application framework CMS out there.
Alex Skinner: No, it certainly isn't and there is what is preside now versus what it was historically. So historically in 2002, we were using a number of large content-management systems, we were implementing those for clients and these were big ticket items and we had a subset of clients that could afford those kind of systems and the rest of people couldn't and we were building applications with coldfusion. Invariably, what happened is that as we were building applications, the number of applications we were building started getting more and more complex. Our literal sort of framework for when people couldn't afford the big enterprise systems started getting more and more capable, to the point where … eventually we got to the point where we thought well actually, we're not far away now and the amount of functionality we need to add to sort of compete with the bigger systems is really quite thin.
So, back in the day, it was enterprise content management, it had a license, we did relatively well selling it into some quite large organizations. But time moves on and essentially, we've gone through a bit of a journey with coldfusion so we were very excited about the Java move. We saw the development seven, when different versions came out we started losing faith a little I think it's fair to say, we were a little uninspired by the releases and we started weighing up our options so back in 2005 we went on a little bit of a non-Adobe coldfusion journey. Which pretty much went through all of the options available from sort of BlueDragon.Net, Blue Dragon, through open Blue Dragon then we discovered Railo and now we're onto Lucy. Now we are 100% Lucy shop that is really behind and we're obviously a member of very focused on Lucy.
So right now, we have a team and I have to do my fingers and toes for counting the people, but I think we have around 20 production staff, they're all Lucy developers, all Lucy and preside developers. Essentially, we're building complex applications so historically speaking, it was all about CMS and the complex extensions that people wanted, was very much an afterthought that you would bolt in or you would build extensions. In re-architecture of preside in 2012, essentially we made the decision as a business that we knew that we needed to open-source the platform. We looked at all the different content management systems available at the time, we made a very conscious decision that we didn't want to use those and we've been doing CMS for the best part of 15 years so, we've got some pretty strong opinions about how things should be, I guess.
We did look at all the different options available and ultimately, we decided that even though we were building everything from scratch, we'd stick with Lucy and and we thought that was the most productive system that we could work with and essentially, that re-architecture really turned preside from being an application that predominately does content management and solves that problem to far more of an application framework that a content management system happens to be built with. So one of the outer box implementations for complex data driven application with versioning and tagging and rollback and all of the things that a decent content management system needs, because we … I say we very loosely … Dom made some decisions really around architecture.
Because of how we approach that, any complex business application gets that stuff for free. So, right now, the vast majority of work we're doing is predominantly complex business websites that have strong content management and integration with other business systems but we have people that are building systems that have absolutely nothing to do with websites, on top of preside add-on.
Michael Smith: So they have a front-end to a phone or some other front end?
Alex Skinner: So, we have an instance of an organization that is using preside to manage effectively a data warehouse, so large existing database synchronization framework of data coming in from lots of different sources, preside happens to allow them to create an admin interspace to their existing database, nothing to do with content-management. There's a large organization based in Germany who … this is I guess the beauty of open source … we got contacted to say we've been playing with preside for a number of months, we have an existing application, we want to run preside on sequel server and at that point, we didn't use sequel server because the sequel server support was patchy, but they were very keen on sequel server so sequel server support got sponsored and added into the platform.
Essentially, in that instance, they are taking existing application and they are just changing the administrative systems that are used by their editors and publishers, while retaining existing content and existing data models. So there's lots of different systems, compliance management systems, risk management systems, document management systems, learning management systems, anywhere you've got complex data models and rules and workflow and UI basically. So yeah, in a nutshell, it's not a CMS.
Michael Smith: So you mentioned some of your clients are like publishing companies, they have thousands or maybe hundreds of thousands of documents, you also have associations using it for membership management, all kinds of complicated situations.
Alex Skinner: Yeah so if you take the example with membership associations, so Pixelate as a services company has around 80 clients, they will have different CRM or membership management systems. Historically, that would be a load of different ones so that tends to be, more these days, it's more Microsoft dynamics, is a very common choice. What we have is we have data synchronization frameworks that form part of preside for wiring API's and syncing data backwards and forwards in a reliable and consistent way. Then, the ability to effectively do personalization and rules and things like that so different people based on who they are, get a different experience. So that's a lot of the functionality in preside that the platform team worked on obviously come out of predominantly the need to pixelate but I would say the needs of pixelate are quite common in terms of what we do.
Michael Smith: So you mentioned you didn't by default use Microsoft sequel server, were you using My Sequel or some other open source Sequel or?
Alex Skinner: Yeah I mean we like My Sequel, we use Maria DB. Things like we're working on an application at the moment where they want it to be fully redundant all the way down the stack, so that's multiple low balances, active passive, multiple web servers, but they want active database plastering and that's something that sequel server has never been particularly good at. Things like that working quite nicely.
Michael Smith: And then, what's the rest of your stack, so you've got preside is on top of Coldbox is on top of Lucy, and then what are you using for the web server?
Alex Skinner: Tom cat engine X and then effectively Xenex. We like [crosstalk 00:10:48]
Michael Smith: So it's all open source?
Alex Skinner: Yeah as much as possible. I mean a lot of the people that we work with, preside marries very well with platforms like Microsoft dynamics because Microsoft dynamics has similar concepts around the ability to create custom entities and that maps very well with presides concept of custom entities as well. So yeah, we inter-operate with non-open source systems but our stack is open source, absolutely.
Michael Smith: Great. So you mentioned that you moved your code to open source and I talked in depth with Dom Watson about that in episode seven of this podcast, but what was the business reason for going to open source? He gave the technical reasons. That the code was a bit of a mess and it needed totally redoing and you know, you wanted to-
Alex Skinner: Yeah I mean it's difficult, right? Because I can be very honest looking back right now at that code base. It's like having to try to admit that your child is ugly or something. It's not something … yeah I can say that certainly, hitting the delete key was definitely the right decision. Building it on top of Coldbox was the right decision, I think Coldbox is vastly superior to any of the other NVC based frameworks out there and I don't think that's just Lucy. I think that's across the board. I mean, the main reason was that for whatever reason, the marketplace, if we look … we work with organizations that go out through formal tenders, a lot of the consultants that were involved in the procurement process around these big programs were advocating either open source so the comfort factor of should you fall out with your agency, you can take this elsewhere, which of course we all understand the practicalities of that really. But, or you know, we want ubiquitous platform, right?
So things like these platforms that are very popular. The nature of the work that we do is that you know, the CMS is around I don't know, 30% of it and 70% of the build is custom work, so what we were doing is we were saying okay well people seem to be shifting towards open source, we want to make sure … we think we've got something to offer in that regard. For us as a business, the revenue for the CMS element of the deal was not an insignificant amount of money but it wasn't a huge percentage. So, we were sort of saying well actually if we are giving away the CMS, we still have maintenance contracts, we still have support contracts and what not, so invariably it's just shifted the makeup of our deals rather than actually producing revenue, that kind of thing.
That was one thing that was really just to sort of move with the times and I think on the website side of things, closed source platforms on the web are pretty much dead. Obviously excluding Adobe Confusion which has a beautiful and bright future but I think there is really a shift from commercial systems for mainstream development. That was the main reason.
Michael Smith: So you mentioned that a lot of the work is doing custom code, tell us a bit about how preside makes it easy to build a complex business system on top of it and how that compares to your typical CMS.
Alex Skinner: Well I think a lot of CMSs are … obviously they're solving problems, they are more or less opinionated about different things, perhaps. Maybe some configuration options around how you can solve certain problems. But more often than not, when you are wanting to extend the application, there are hooks that you can call and there are certain points or interception points where you can bolt your stuff in and you might use, in other systems you might use framework one or you might use whatever, in you might use .net MBC to build your application and sort of make it inter-operate with the content management system.
But there is a clear sort of dividing line between the two platforms and we see examples of that on the open source systems where you install a WordPress plug-in and you get an additional menu item within the admin. For us, how productive we are in building the 70% is what matters because that's where our profitability comes from. So, what we were looking at was saying well much like the commercial I would say well-architected systems in the commercial space like dynamics, you are building your custom applications on top of our platform. You're not building it next to it. We don't get in your way if you are a Coldbox developer, you write Coldbox and you happen to get a load of clever super passes and clever service layers that allow you to do multi-tenancy, multi-lingual elastic search integration.
All of the things that we need within the content management part of the application, you kind of get access to for free. So that means that certainly for the types of applications we build, we've been able to build things five times quicker than some of our competitors and that directly translates into being quite competitive in that regard. So, it's really around that sort of unique architecture and just to cover that a bit more, we came up with some specific concepts like cascading inheritance whereby you can inject or override any part of the preside application simply by convention. You can override extensions provided by other people, by just decorating or overloading the parts of that extension that you don't like, so there's a lot of work gone into the architecture.
I would say, I'm sure Dom wouldn't agree but I would say that for me, in some cases it feels like there's been some happy accidents where I'm not sure at the very beginning of the journey we necessarily realized what we were going to get but some really good architectural decisions in the beginning have really paid dividens. So yeah.
I think for us, we've had instances where we had a very very large deal that we went for and they loved what we were saying and they were going to select us and effectively they then said look, you know, you told us in your presentation that how could somebody else work with this platform, should we fall out of love with Pixelate and I said well look, a competent developer given a weeks worth of training could build that application with preside, I said this during the pitch. And that came back to, not bite me because it worked out very well in the end, but essentially they came back and said okay well we want to test your map, so they sent us a .net developer for a week who had never touched Lucy before, and in three days Dom trained him on Lucy and preside and Coldbox in kind of a deep dive and he built in two days a document portal with multi-versioning and commissioning and stuff like that.
He actually came away and said for my organization, should I have a need to deploy an open source, we'd be interested in looking at this. So, that kind of stuff is exciting, you can convert .net developers.
Michael Smith: Come from the dark side.
Alex Skinner: Dark side, yeah exactly, depending on your perspective. Yeah.
Michael Smith: So when you have this customization using cascading inheritance, are you doing strong coupling there or is it loose coupling or- how are you seeing that?
Alex Skinner: I guess from my perspective you are … do you mean how restrictive is that inheritance? I didn't really follow, sorry.
Michael Smith: Well, when you add customizations to some other CMSs, you're really not getting into the CMS, it's not strongly coupled with the CMS. If you do like a WordPress plug in for example, that's pretty not tied in.
Alex Skinner: Yeah it's-
Michael Smith: Because you can't change the core behavior of how it works.
Alex Skinner: Yeah so I mean you're blending your extension in, you're not sort of coupling it. You're able to manipulate any form field, core behavior, all of the good stuff that Coldbox gives you around intersection points and things like that. You're mixing in your functionality. To give you an example, a lot of the time when we're creating components, you're not using extends. You never say my component extends this component. Because you don't know what you're extending. You may be extending the core preside base but maybe someone is going to install another extension that actually sits in between your extension and the core presides code so you never extend core, it's always using a Pixelated system to work out the inheritance.
Michael Smith: You mentioned one of the other neat things is you can tag into the data layer instead of having a rich API. Tell us a bit more about that, yeah and you mentioned you had a special cfparam tag as well.
Alex Skinner: Yeah it was kind of an example of a lot of what we're spending our time doing is when you use one framework, one system, one platform and you've got enough people using it day in, day out, little changes that you make can have a big impact. I guess the more developers you have building stuff. So one of the things that we did when we were … and I say, try to continue to do regularly, is to say what do we want the experience for the developer to be of interacting? For example the data layer, so if you take a really common scenario in the CMS world, you're constantly binding data to templates. You're doing that, you've got your listing page, you've got a new detail page, got an events listing page, a shop, you're doing this sort of constant stuff where you're binding data to visual layouts.
One of the things that we looked at was saying wouldn't it be nice if you could decorate the top of your views with some parametrization, such that preside would automatically go and get the data from the right place in the database. Now obviously there are some instances where you absolutely don't want to do that, you're going to build handlers and service layers, all that kind of stuff, but for the simple requirements, that's very powerful. What that means is, just in a really simplistic scenario is, you could build a news module and your news module could list data and have a listing screen and a detail view and I could come along and I could love the news module, but I want to change it. Now rather than this problem of having to cut and paste codes and mess it up and end up with some kind of Frankenstack, we allow you to effectively say okay we're going to add an additional property into a CFC that is defined in your application. We're going to overload the form because that will allow them to pick an asset perhaps, an image for a thumbnail.
We're then going to override just the listing view, and we're going to add a parameter in obviously for our thumbnail image but we're not going to have to touch your service layout or you're not going to have to touch the wiring because if you've done it in the right way, then the column appears in the database, it's made available to the data layer and it automatically gets wired into your overridden version of the template. So that I think is one example, another good example would be something like derivatives. So derivatives are a series of transformations that are done in an order against an asset, so a good example would be an image, where we want to say I want to flip the image, I want to resize the image. We effectively allow you to take those transformations that you would do against assets, package it up into a name and say I just want to apply this derivative against this particular image and then resize it or whatever.
A good example is PDX where you're saying I want to pull out the front page of my PDX as an image, and then I want to make a thumbnail. So that kind of stuff.
Michael Smith: That sounds really powerful, saves a lot of manual coding.
Alex Skinner: Yeah and it really is a case of the platform team regularly working with our services teams to say what are the common things that you're having to build from scratch or what are the common things that are taking large amounts of time, so spending time with the developers and seeing that perhaps this here isn't as optimal as it could be.
Michael Smith: So is your presentation all powerpoint or are you going to be doing live coding or?
Alex Skinner: It's going to be … there's no powerpoint at all. We don't do slides, I mean there'll be a slide to say this is me, this is who I am, this is preside, now lets look at some code. So, I'm pretty used to that because I spend a lot of time demoing the platform and showing the platform and I make dumb mistakes occasionally, which I have repeated a few times but I now know what those dumb mistakes are when I try. So I'm really looking to take people on a whirlwind tour of preside in terms of showing how quickly you can build some pretty complex stuff and really the fundamental thing is that if you look at or if you look at [Jango 00:26:06] or if you look at play framework, all of these systems. They've all got staff-holding, they've all got this sort of I quickly want to generate an interface and developers will be very very used to that kind of stuff.
The fundamental thing with preside is when you are scaffolding your applications and scaffolding the administrative interfaces, those administrative interfaces are function-ready. So they have permission and you may have … you build it, you then decide you want to restrict which administrators can access it, you don't have to think about it, that comes for free.
Michael Smith: So you don't have to struggle scout footing away?
Alex Skinner: No and we have the key, so we have a … if you're familiar and I think Doom had the same thing, you'd hit a [tilder 00:26:56] and a little console would kind of bounce up. So we have a console that exists within preside where a lot of the commands for staff holding are done in that way, using a sort of a preside console. Obviously we love command box as well so we do a lot of preside commands for common things like generating new sites and that kind of stuff.
Michael Smith: Cool and you mentioned you've got some need extensions, I like elastic search and a few other ones, so tell us a bit about that.
Alex Skinner: Yeah, as a business we have some closed source extensions as well, I mean we I think Dom alluded to it in his presentation, we have one that we've been working on for about 18 months with the team that's a big events management platform. That's an extension but it's not really I guess relevant to the preside community. The main ones that we have, we have a open source, a very simple CNN that we're going to be releasing open source soon which is really just sort of extending basic user contact management activities, that kind of thing. We have extensions that started, well we have things that started as extensions that have come into core. One of those would be the task manager extension which allows you to create scheduled tasks and create all the interface around being able to see the scheduled tasks, set them up with and see them running and stuff like that.
I think the elastic search one is one of the ones that has paid the most dividens I suppose, for us as a business so what that allows you to do is define your data layer across your application of various tables and CFC's and whatnot. Once you install the extension, you can then decorate the properties of your components and say which ones of these you want to be searchable and how you want them tied into the search index and then what we'll do is automatically keep your data up to date with an index in elastic search, so that's a powerful thing. It makes certainly building the kind of applications that we build very quick.
Michael Smith: Neat! So I know we only have a few minutes left. You mentioned that preside supports data tenancy, slicing up the database between different users, what are some of the things that lets you do?
Alex Skinner: So, I guess with the sort of move towards containerization, when people have the need to have multiple tenants or customers within their softwares and service businesses, they may choose I guess to use more complex orchestration and run up different systems for different clients and things like that. In a really sort of simplistic sense, we have instances where we want to have multiple sites within one platform, so for one client. Lots of different hierarchies, different brands maybe, different audiences. We may want to have a single database table to manage products or manage news or whatever the content hierarchy or sorry content model that we're creating might be. But then we might want to make it so that when you're on one site, you only see the news for that site, when you're on the other site, you know. So you're segmenting or tenanting the data.
Effectively by just marking up the component with an attribute, we automatically do that for you for sites. We changed it recently, basically on the request of somebody in the community that is using it, in order to extend that tenancy and make it more powerful so you can define your own tenancy slices. I mean typically if you're building SAD applications, where you want to slice and dice the data and have different views on it and be able to segment it with permissioning then benefit.
Michael Smith: And then it also sorts versioning of the data if you've got lots of different versions for document or data? Multi-lingual all kinds of-
Alex Skinner: Yeah absolutely so if you think of a simplistic example. Say you defined news object, a news component, you might have the title, the description, the images that are attached to the news article, the date it was released and the author. Then you decide that actually you want that versioned, it makes total sense. Well in that scenario, you're going to have two database tables generated for that one component. Then you say actually I want to enable multi-lingual, I still want versioning, then you're going to end up with four tables, right? That we have for that one object.
The unique thing about it actually is that you can decide on a property by property basis as to whether you want that to be translated because you might have something whereby actually, the picture or the author or the date it's published or the date of release is still relevant and doesn't need to be entered again but you want the rest of it to be translated and what we would automatically do is as a developer, you don't have to understand or care about tenancy and as a developer, you don't have to understand or care about multi-lingual. As long as the front-end browser language is set, we automatically go and slice and dice and merge the data for you, so it's kind of yeah, it's quite powerful in that regard.
Michael Smith: Sounds very powerful. So let's switch gears a little and talk about why you're proud to use Coldfusion for all the stuff you do with preside.
Alex Skinner: Yeah I mean proud to use Coldfusion, proud to use CFML, I know … to me they're one and the same in terms of … I think it's a very powerful platform, we obviously preside is 100% Lucy, we do have desires I guess to run on Adobe Coldfusion. Not actually for our own clients, we don't need that. But we recognize that others in the community would like to run on Adobe Coldfusion especially when that's already set so, you know. For me, I still think CFML is an amazingly productive platform. I think the ability and we do frequently dive down into Java where we need to and the ability to be able to have a platform that you can deploy on tomcats, you can deploy on wildfly, you can deploy on big platforms and have all of the core stuff that enterprise Java gives you, but you can take non-Lucy or non-coldfusion developers and get them up to date very quickly.
Our model, we don't hire Coldfusion developers, it's very very rare that a new coldfusion developer starts working for us. Our model is that we take bright computer science people and you may have come from another MBC background and we train them up on preside. I think what's really exciting is when you see a rails developer getting excited about something using coldpox. That's really exciting, you know?
Michael Smith: Yeah because it's better.
Alex Skinner: Yeah it's better in my view, but popularity is self-perpetuating, I guess. The fact that PHB is everywhere, the fact that WordPress … we have a natural limiting factor in our business in the sense that we build very complex stuff, so as such, that means that the WordPress, I'm going to install a theme, I'm going to install a plug in crowd doesn't really apply in terms of … it's more likely we're up against a bit of a large scale system that's .net based or Java based. But yeah I think CFML is great, I'd love Adobe to do more. I'd love them to create exciting functionality and I'd like to see Lucy do as well in terms of …
Michael Smith: Yes competition is good.
Alex Skinner: Yeah and I think in general terms, it would be nice to see more interoperability between those two platforms in terms of, there've been a tense in the past to have a spearing group or have a language committee or whatever and for the benefit really of the coldbox guys and the people doing framework one and things like that, people who are trying to support multiple engines, so not just for the sake of going down a different paths. Be nice to see more working together but no I think it's an exciting time and I think Lucy is a very very appropriate platform for building complex systems and deploying the panel.
Michael Smith: Cool, so what would it take to make Coldfusion even more alive this year?
Alex Skinner: They should get in touch with us and help us get preside working on it for starters but I mean-
Michael Smith: Well when I said Coldfusion I meant CFML, the whole Coldfusion universe.
Alex Skinner: I know you did, I was slightly tongue in cheek. I mean I think to me, things that make it leaner and things that you know, taking influence from other languages and looking outside of the community and I think that's very appropriate for Lucy. I know they are obviously interest in what comes in 2016 and added compatibility for a lot of the core 2016 context in very short order, given the handful of developers that are building that platform. But to me, I think the are probably single handedly driving a lot of the advancement with CFML. I think people need to be more aware but just because commandbox has the word box in it, does not mean that you have to be in love with cold box, you have to be a test box fan. I think commandbox for me is massively exciting. We've got front-end developers that day in day out, they know nothing really about coldfusion but they use commandbox everyday. They are spinning up little scaffolded sites for testing their applications, testing their front-end codes and using commandbox every day and that's exciting I think.
Michael Smith: Yeah, it's amazing what you can do with that. So what are you looking forward to at the into the box conference Alex?
Alex Skinner: Yeah just finding out the latest things are, hopefully catching some sessions, catching up with the guys, we're really excited about where coldbox is going. A lot of the things we're thinking about adding into preside so, we were looking at really making our views cleverer with things like Twig support, that kind of thing. Finding out that that's on their roadmap then promptly deciding well lets see what they come up with. So really the opportunity is to catch up with the guys and yeah just talk tech and talk all things Lucy and CFML and generally catch up with the community.
Michael Smith: Fabulous and also there's the Happybox evening event as well which obviously can't be missed.
Alex Skinner: Yeah, mariachi bands and things from previous years so yeah. We didn't get to go last year but yeah, it should be good. It's along way, that's the only thing for us, is it's-
Michael Smith: You just fly to New York and turn left don't you.
Alex Skinner: Yeah, yeah. Something like that. I'm still actually waiting to hear whether my Esta or whatever is going to be granted so hopefully, otherwise-
Michael Smith: Yeah I'm sure your Esta will be granted, or you can just have a polite discussion with those INS people.
Alex Skinner: Yeah, exactly. No they're human beings after all so I'm sure it'll be fine.
Michael Smith: Yeah. They are yes. Well I look forward to seeing you there, thanks for being on the show Alex.
Alex Skinner: Thanks very much. Cheers.