You can listen to the podcast and read the show notes here
Michael Smith: Welcome back to the show. I'm here with Dominic Watson, the lead engineer of Preside at Pixelate Interactive. He is going to be talking about doing marketing automation using the Preside platform, which is a ColdFusion platform and CMS.
We're going to look at some basic questions here, why you'd even want to use the CMS and not your own homegrown piece of code or not use one at all? And why yet another ColdFusion CMS had to be created, and why they shifted from closed source to open source and problems they had with that, how Preside is different from ContentBox and Mura CMS and other CMS's and what exactly is an application platform, and how you can customize the Preside application platform with the extensions and cascading inheritance and overriding core behavior, and also why you should be doing marketing automation in your ColdFusion business apps.
Dominic Watson: Thank you.
Michael Smith: Yes, hello, joining us from England. Let's start off with the big question in the room. Why should people use a CMS instead of just rolling their own code or not using one?
Dominic Watson: Sure. I'll answer it, to start with, for us, we have a business that sells services, so we create sites for our clients. All of our clients require CMS. They are large organizations with multiple editors. They won't have their own in-house teams so they need to be able to create content through tools that are easy to use and have all the features that you require for managing content.
I suppose if the question is aimed at, you're an in-house team with a single application, why would you use a CMS? I would suppose, especially we're talking about using Preside as a CMS, it's around formalizing your processes around creating your content. Rather than doing it through code all the time and requiring that kind of expertise, you're doing it … Being able to focus more editorially. Just very briefly, if we were to look at that with Preside, it marries very well with your technical abilities and the ability to do a little bit of code to then allow your editorial side of things to grow much better.
Michael Smith: Yeah, so it kind of abstracts out the content from the rest of the application.
Dominic Watson: Absolutely, yeah.
Michael Smith: I was kind of interested in the ColdFusion state of the union survey this year. The biggest CMS was homegrown.
Dominic Watson: Yeah.
Michael Smith: Which is a little surprising. Let me just share that on the screen for the folks who are watching on YouTube.
Dominic Watson: Yeah, I guess it's surprising and it's not, right?
Michael Smith: Yeah, 31% of people taking that survey have a homegrown CMS. Actually, the biggest winner on the CMS category is 41% of people who don't even use a CMS.
Dominic Watson: Yes, and I don't think either of those surprise me. I suppose when you say, “No don't use a CMS,” a lot of people, I suppose, in that bucket will be people that don't need to use a CMS, right?
Michael Smith: Mm-hmm (affirmative)
Dominic Watson: The ones using a custom, homegrown … I think my previous, previous employer was an in-house team, everything built on their own framework, and I think it's really part of how CFML, ColdFusion has evolved. If you didn't pick up Mura, you weren't aware of that, the options weren't there. It's really easy to build stuff and we all love building stuff. I think, as well, I don't know if it's famous for it but cold fusion has a lot of developers that don't come from the comp science background. They've got into ColdFusion some way else and so the hobby instinct is much more there, right? To go, “Okay, let me build our own thing.” It's really a great language to do that so that doesn't surprise me.
Michael Smith: Yeah, maybe it's not-
Dominic Watson: Although it's not PHP with WordPress. We don't have that Goliath, right?
Michael Smith: No, but we have some good CMS's. We've got Mura and ContentBox which are both open source, Preside, which is open source, and then we've got CommonSpot and Contents, which are commercial, and I think Far Cry is open source.
Dominic Watson: It is, yeah.
Michael Smith: Yeah. Lots of good CMS's there.
Dominic Watson: Yes.
Michael Smith: I guess the next question is, there are so many CMS's out there, why create yet another ColdFusion CMS?
Dominic Watson: Okay. Again it's, from our own perspective, Preside has been around for a lot longer than it appears to have been around. It was at Pixelate. It was a commercial application that we licensed to all of our customers, but nobody else outside of Pixelate used it, but it competed on a lot of features for the other CMS's out there. We have a large number of medium, large-sized clients that were using it.
We had no made the decision to open source, and this is going to back, I think, 15 years. We had made the decision to open source it …
Michael Smith: Why did you-
Dominic Watson: In terms of our business, why did we open source it?
Michael Smith: Yeah.
Dominic Watson: For me, personally, my feeling … From the commercial standpoint my feeling was that it wasn't … Because there are so many other CMS's out there, the notion of trying to push it commercially in the CFML world seemed like an uphill struggle and not something worth doing, so for me it was, “Let's open source it, make the most awesome thing we can for the open source community and build relationships that way, and then see what opportunities we can get, because we're not going to build these connections otherwise, so may as well open source it.”
I'm also a big fan of open source. I try to use open source software as much as possible, so even at work when everybody else is on OSX and a few people are on Windows, I'm the only person that uses Linux so I'm quite strong-willed and kind of pushed that agenda, but there was a commercial side to that, as well.
The other one, actually, interestingly, for any business-minded folk, is when we were going out to tender for contracts, and they say, “What platform do you use,” they would stipulate that it had to be open source, so I think, from the business perspective, that was the key driver, is a lot of tenders wanted to see that you were using an open source platform. We found that we've won some of our biggest clients recently down to the fact that it's open source. They've been able to go onto JRE, see the activity, see what's going on and how we respond to the community, and that gave them confidence and enabled us to win the deal, so that's probably the biggest driver commercially.
Michael Smith: When you shifted from closed source to open source, what were the problems with doing that shift?
Dominic Watson: I don't think there were any problems at all, actually. If anything it's-
Michael Smith: You didn't have to clean up the code? The code was all beautiful?
Dominic Watson: Well, yeah. I just hit the delete button.
Michael Smith: You deleted all the old code.
Dominic Watson: Literally. I was tasked with, “Okay, we're going to make this open source.” I was recently maid lead developer at the time. I was like, “Okay, let's see how much of it we can keep,” and I scratched my head. We'd done some intermediary version of our code where we were enabled to build our applications with ColdBox but still using the old framework and it was sort of clutched together a little bit, and then contemplating what was needed to happen to migrate it and such fundamental changes, I just hit the delete button and went with it.
We've ran with it and we've not looked back. It's transformed our services business using that platform that we now have, but I suppose there were problems with that. There was a time where AI was developing stuff that wasn't being used for quite some time, and then once we were starting to use it, some of those early clients … The feature gap, but that's really problems with rewriting something from scratch rather than the open sourcing itself which has been nothing but beneficial, really.
Michael Smith: Maybe a hidden benefit of making it open source was that the code now needs to be more readable and maintainable.
Dominic Watson: Yeah, there's definitely … I'm very self conscious and the people I work with are very self conscious and when you're working in the open you have a sudden … You've got a much bigger impetus to maintain quality, I suppose, when you have voices around in the community that you've become weary of. That doesn't seem to be the case any more, actually. We're just happy to put out our stuff and we strive to make it the best quality just for our own pride, so yeah, it's definitely a good side effect.
Michael Smith: Now we've got multiple open source CMS's, including Preside and ContentBox and Mura CMS. How is Preside different from the other ones?
Dominic Watson: I would say, to start off with, we're probably more similar to ContentBox than Mura. The biggest difference between us and Mura is that we're really an application framework with CMS abilities. You can actually use Preside CMS purely as an admin application for some database without any CMS. You can just turn all those features off and use all of our application framework abilities.
Also, in terms of the way you develop your CMS, client-side perhaps, is very much more ColdBox style … Not even style, it's ColdBox, so, much more MVC and organized approach to the development of your CMS platform. In terms of our difference with ContentBox, it's really how we build extensions and applications and how we override the core offering.
Also, the other big difference is, with ContentBox they've done a really great job of atomizing everything, so you're using ColBox modules to … The kernel, if you like, of ContentBox, is relatively small, and then you bring in the features.
We take a different approach and we just put in everything that we know that we need to use all the time, and start off with that, and we're happy with that and we understand the philosophy of atomizing and breaking things down, but we seek to strike a balance, and obviously, we won't put everything in for the sake of it. We want to strike a balance where you've got more to start with.
As opposed to, from what I've heard of, say, Drupal development, where, you want to use a checkbox and a form, you have to install the extension to make a checkbox. They're kind of the extremes, and we certainly tend to the … We're not extreme, but we offer out-of-box much, much more than the other CMS's out there, and frameworks, yeah.
Michael Smith: Really, you might say that Preside is an application platform that has CMS abilities, rather than it's a CMS that you tack on your application to.
Dominic Watson: Yes, absolutely, and that's born out of the kind of work that we do, where … The pixelate business has largely been dealing with membership organizations. We have other types of clients but we will have a membership organization website with lots of editorial content, and yet lots where their members log in and do various types of task and integrating with CRM systems and things like that, so all that real custom application development, and the platform really signs when those two things are combined. When you're developing it, you're doing it all in one way. There's not this, “I'm building this separate application and I'm trying to figure out how to shove it into my CMS.” That's really it.
Michael Smith: When you say, “It's an application platform,” what exactly is an application platform?
Dominic Watson: From my perspective, what that means is it's a platform that is giving you tools and also, in our case, user interfaces to do the most common things. To have audit logging on changes, have versioning of your data, have content that's translated, that's more of a CMS concern, I suppose, the ability to build menus, admin permissioning, all of those things, but coming with a user interface behind that you can then just build upon. You're not having to think about developing that whole system for yourself. There's so much in there already that is the most common stuff that you need to build.
The platform just gives you a real leg up, and where you're having, then, to do more, the platform also is giving you concerns to be able to use that even in your custom development you'll want to use, so again, like the audit logging. You've got common patterns for doing that and then you've already got the UI built for you. That's really it, I think.
Michael Smith: What are some other examples of application platforms out there?
Dominic Watson: From what I understand of it, it would be … Ff we think about Python and Jango, I suppose, it would be an equivalent. I'm not experienced with Jango, so I couldn't give you a proper, full comparison, but I believe that does similar things. Where we are aimed at competing is things like Kentico, which are closed source, which are CMS platforms but also do other application development. Yet, I'm afraid I can't think of any other examples, really. I can't think of other examples in the CFML world …
Michael Smith: I wasn't restricting it to ColdFusion.
Dominic Watson: No, sure. CFML itself is an application platform, right?
Michael Smith: Yeah, it ties together a bunch of-
Dominic Watson: From day one-
Michael Smith: Functionality and puts it all in one package.
Dominic Watson: Yeah, right, and all the frameworks and platforms on top of the language obviously try to go a step further, and we go a lot of steps further. You've got cflogin and all of those things. Those are application platform concerns.
Michael Smith: In the Preside platform, you have extensions. Can you tell us a bit more about how those work? I think they're quite tricky to conceptualize the first time you come across them, but hopefully they're easy to use when you use them.
Dominic Watson: They are, yes, exactly, and they're easier to develop once you get the idea. A Preside application is pretty much a ColdBox application structure with some extra folders with various of our own conventions. The Preside core itself has exactly the same folder structure as your application, and your extensions also have the same folder structure and can do all of the same things that your application can do and the Preside core, itself, does.
With extensions and how Preside works is you can override and merge with just about anything in the core.
Michael Smith: Really?
Dominic Watson: Yeah.
Michael Smith: If you don't like something Preside does in its core behavior, you can just totally replace it?
Dominic Watson: Yes. To a granular level, as well, you could change the labeling. You could change the name of everything. We've got a contentious label for, basically, user groups, and they're called website benefits, which was contentious internally, but you can just go ahead and just change your .properties file in your extension and change the language of that, or you could rewrite the whole language of everything to a key as well as supply actual translations.
You have have an extension that was just translations, you could have extensions that add fields into the data model or take fields away from the data model, modify any form that you can see in the admin, and really … You can override that on the extension and then your application can override extensions. We have a commercial extension that we're developing at the moment that's an event management platform, and it comes with a core set of user interfaces, et cetera, but where we'll integrate it with a big site, they will want to introduce their own tagging, and so we're very easily able to, really easily, add those fields into the extensions data model and the extensions forms, and all of a sudden you've got the application-specific logic in there.
The key driver for us was this notion that you could have an extension that gives you the core features and that you don't touch it. If there's something you want to change, you just change it in your application. The only code you write is in your application and you do that once, and the same for the core itself. We have this notion of cascading inheritance.
Michael Smith: The advantage of doing it that way rather than just hacking into the core code is that when a new version of the core comes out, all the extensions continue to work, whereas if you messed around with the core code, you're now off on a different fork of code.
Dominic Watson: You can't then update.
Michael Smith: Yeah.
Dominic Watson: People are, of course, free to go ahead and fork it and make their modifications directly in there and then find that they can't upgrade. We can't stop people doing that, but we give you the tools so that you don't have to do that, and I think that's also true of ColdBox. We've taken ColdBox … We've made a few modifications to it but without having to touch ColdBox. A really cool one, and a really awesome one, I think, is, we have the ability … That you could have three extensions that all add a whole different action to a handler.
When we look up a handler action, there isn't necessarily one CSC that supplies all the actions. It could be several of them, and if you added a new handler action in your application, you would only have to add that one handler. You wouldn't have to extend the core handler, and it would pick out the right function from either the extension, the core, or your application, depending on which one implemented it, and it would always take your application first.
Michael Smith: I guess the fancy name for that behavior is cascading inheritance.
Dominic Watson: Yeah, I think so. It's one that we came up with but I'm sure it's not unique to us in terms of the naming of that.
Michael Smith: No, I think that's a term in other … CSS has it, too, so any object-based thing is going to have inheritance.
Dominic Watson: Yes, and it cascades.
Michael Smith: Yeah, pretty usual that it cascades. Otherwise, why would you do the inheritance, if you could only go one level?
Dominic Watson: Yes, yes. Yeah.
Michael Smith: Cool. It sounds like a really powerful platform for creating applications and letting you tweak around with the behavior without stepping on the core files. It's almost like the CMS is in there as a side benefit.
Dominic Watson: It's becoming … It's not quite, but yes. It's true to an extent.
Michael Smith: Though, the benefit of the CMS is also that, if you have people that are editing content, they don't have to mess around with the code or the database to get things to change. They've got a WYSIWYG interface to change things.
Dominic Watson: Yes, and some really nice features in that as well. One of the very first features in was a strong feature in the old platform, is widgets, which are basically the same as confluence macros. It's into your content, you don't need any development experience, there's a library of macros, or widgets, for us, that you can insert in. They give you a configuration form. You can knock out a simple widget in 10, 15 minutes, development-wise, and then you've got it there for editors to be able to do neat stuff with.
Michael Smith: Cool. Let's turn to marketing automation, because I know your talks on marketing automation. What exactly is marketing automation and why should people be doing it in their ColdFusion business apps?
Dominic Watson: From what I've experience of marketing automation … I'm a developer, I'm not a marketeer, but from the angle we're talking about, we're talking about the ability to reach out to your customers, A, automatically, and intelligently. You may have people that are on a free plan, and you've detected that they're doing certain things in your application, and maybe, with some smart rules, you can figure out that they're reaching some limits, so you can automatically push out to them and say, “Hey, have you considered our gold package?”
You could do that through an email or you might push it in the application itself. You might push some editorial content that's saying, “Hey, by the way, this that and the other.” You could be more sneaky about it, as well. Other example's where you've got an anonymous visitor that's looking at your site that you've tagged up with all sorts of topics, and you've detected that they've got a high percentage of a certain type of topic that they are looking into. This notion that you can then start pushing them marketing messages to call them to register and say, “This topic that you seem to be interested in, we've got this benefit if you sign up. We can send you emails about this kind of topic,” or something like that.
This is the direction we're going with Preside, and the upcoming release, which … I don't know when this comes out, might be the latest release and our previous release introduced this notion of a rules engine in the core platform, that's really powerful and that allows you to start thinking about this and implementing really nice solutions for your applications and your clients, and combined, as well, with the release that's coming up, we have an email center that allows you to manage transactional email as well as marketing email and combine that with any rich data that you have in your application to do really powerful things.
Michael Smith: Wow. That sounds really useful for someone who's got a SAS product or anything where your customers interact with you and you're sending out transactional emails or other emails to them to encourage you to do certain behaviors on your site.
Dominic Watson: Yes.
Michael Smith: What kind of emails does preside support? Just transactional emails, or … ?
Dominic Watson: No. We can do transactional emails and with the transactional emails we allow the editors to edit the content in that, so when you define the transactional email template that you will programmatically send out, say, an event booking confirmation, all you define is, actually, the variables that will be available to insert into that and you code whatever you need to do to generate that content, but then it's up to the editors to do the rest, and they're able to put in widgets, like we have in the front-end site. They're able to put those into the email content, so even in your transactional emails, the editors are able to put in some automated, even, content, that will allow them to promote other content.
Maybe it's an event booking confirmation. They could put in some content in there that says, “Okay, these are other events that are similar to that one that we know you haven't booked.” There's no point in promoting an event that you haven't booked. There's no point in them promoting an event that you haven't booked. They could-
Michael Smith: This isn't like a broadcast email where it's the same email going to everyone?
Dominic Watson: No, no, no.
Michael Smith: It's totally customized based on a behavior, and even when it's sent, it's only triggered to be sent when that behavior happens for that individual user.
Dominic Watson: Yeah, that would be a transactional email. Then we have editorial email that can be used for newsletters, and you would want to use this when you have really personalized content that you want to push, as opposed to using MailChimp. If we had a client that was sending out a newsletter that was the same every single time, I have confidence in our platform and I wouldn't hesitate to recommend using it, but I would guess that we would say, “MailChimp's probably more appropriate, at least for now until we have a little bit more experience.”
Michael Smith: You're allowing much more complicated segmentation of the lists.
Dominic Watson: Right, exactly. These rules allow you to filter in really intelligent ways based on whatever data that you can collect, so a lot of the times we'll integrate with CRM systems and we'll pull that data into the application, and so we've got a really rich data set, as well as all their interactions with the website, and I think I mentioned before, we have an event management system that is done on Preside, so it's an extension to Preside.
Actually, it's a commercial product, but a real common use case there is the editorial team for a big event will set up a series of emails that are going to go to delegates of that event, but they can then target deeper, so they can say, “It's a delegate of that event that has been to this category of events for the last five years,” so we might send them out something really targeted, or it's, “Delegates who are on this event are able to book on these limited sessions and haven't booked any of their sessions and we've got a week to go,” so the editorial team can set up those emails and can do a couple of things.
They can schedule when the email is going out and that could be on a repeated schedule, and they can also say, “Only send it out once to this individual ever, or once to an individual no more than once every six months,” or something like that. Then, if some data changes, which means, if the recipient is now able to receive this email, their email is going to go at the next scheduled time to them. That's one way we can do that kind of automated marketing.
A less, kind of, marketing example is, we have two-factor authentication for the admin, so what we could have, if you have a lot of administrators in the system, two-factor authentication can be a bit tricky to set up sometimes. You can do a custom email that's saying, “Hey, it looks like you're having trouble signing on with two-factor authentication. Call Jack, and he'll come down and help you with that, or provide a more in-depth guide than the onscreen help can give you.”
You can set up an email that filters on admin users who have two-factor authentication setup but who have never successfully activated two-factor authentication, and have never logged in within the last two days, or, you would probably want to do it 20 minutes, half an hour, and have that email send every two minutes, and only once to somebody. There's lots of creative things you can do with that, and for teams that are looking after a large set of users, they can think really creatively how they can start to target those users.
Michael Smith: That sounds very powerful, and it's like some of those more custom clothes marketing automation systems like Hotspot or some of the other ones out there. Infusionsoft is the other one that comes to mind.
Dominic Watson: Yeah, and I think, for us, there's an argument, obviously, for micro services, et cetera, but one of the headaches with that is needing to do all the integrations. Especially if you're in-house and you've got your data where it is, and you can just make use of it there and then using the language you use day to day, we think that's really super powerful.
Michael Smith: Right, because you can tweak around with.
Dominic Watson: You can build micro services with Preside, as well. Yes.
Michael Smith: You can still do all those extensions and override the behavior even in all this email automation.
Dominic Watson: Yeah, absolutely. Yeah.
Michael Smith: Wow. Let's take a shift to another question here, Dominic, which is, and I'm asking this to all the people speaking at Into the Box, which is, why are you proud to use ColdFusion?
Dominic Watson: Why am I proud to use it? I put it out there that we use Lucy online, at the moment, where we are, so I'm proud to use that for its open source origins. I'm also, I guess, proud to use ColdFusion for what I know that it can do and what we can do with it. What, particularly, I enjoy about coding in CFML, is the power and flexibility of the meta programming which we use day to day.
You're not stuck with what the language gives you. You can really nice, and easily, use meta programming to extend it to create your own frameworks, and I know other languages do that, but it's always much more direct to do things in CFML without … Compare it to Ruby that does some nice syntactic sugar around that. It's more straight forward. It's not quite so obscure as a language. It reads much better.
We're also a member of the Lucy Association, so I'm really proud to be involved with that and to help open source software stay alive and, perhaps, one day, that side of CFML will be what keeps CFML alive. That's what I hope. I hope Adobe ColdFusion never does drop it and that it remains strong and all of those things, but for us, we're really proud to be a part of that and to contribute to that to make sure it doesn't die.
Michael Smith: Yeah. That brings me to the next question which is, what would it take to make ColdFusion more alive this year?
Dominic Watson: Yeah, this year. I think ColdFusion … CFML, ColdFusion … I think we need to just keep on doing the good work we're doing. I think what's coming out of things like CommandBox and ColdBox is a real growing up. I think it's clear that the community and the work around the language, there's a lot of catching up to do with other languages, but I think, really, that's what it is. I think it's plugging harder and harder those tools that allow us to code more responsibly, and that when you get into those conversations with other language developers, and they're like, “Oh, yeah, but, but this,” you go, “Yeah, no, we have this, and actually, have you seen this? Have you seen developing commands in CFML in CommandBox? It's awesome.”
I wrote a script just yesterday that is a command line script. I run it just to set up some IP tables, port forwarding rules, and automatically setting up hosts files as a BASH script, but I wrote it in CFML. Try writing that that thing in BASH. You would be there for a week, and it was so easy in CFML. We have all of that power and I think more onboarding of people to those more responsible cutting edge tooling around the language, and contributing to them. We see really awesome contributions now in ForgeBox and getting people involved with that. Of course there's more to the world than just the box infrastructure but I really think that is the key area where we can launch ourselves.
Even people that don't use ColdBox, et cetera, and Box products, can use CommandBox with other things, and ForgeBox, migrating to that. They're also really good people to work with, and that community spirit, so, just contributing. Contributing, and keep getting better.
Michael Smith: Cool. What are you looking forward to at the Into the Box conference coming up soon?
Dominic Watson: Mostly, just chatting with developers and visiting Texas. I've never been to Texas.
Michael Smith: I was wondering. What are you looking forward to in Texas?
Dominic Watson: Just the different perspective. Houston, I imagine, is very cosmopolitan, but I imagine it's a very different place from where I've been before. I've been to New York and I've been to Minneapolis with Dev Objective. I am looking forward to meeting the friendly folk in Texas, but hanging out with developers, mostly, and getting the stateside perspective on things. From us, we're very much a European community and I think we don't get much opportunity to come together, so I'm really looking forward to do that.
Michael Smith: Are you going to CF Camp in Munich, as well?
Dominic Watson: Yes, we are sponsoring that.
Michael Smith: That's only a short talk.
Dominic Watson: Yeah, it is, and when you book on that, the system you'll use will be our EMS, actually, so you'll be using Preside to book on that event, so that will be cool.
Michael Smith: When people see those personalized emails and they think they're being taken care of, really it's a piece of ColdFusion code with some cascading inheritance going on to make it all appear friendly and human.
Dominic Watson: Yes.
Michael Smith: Cool. If people want to find you, how would they do that?
Dominic Watson: The website's at Preside.org. That has links off to our community forum and our Slack channel. There's a little widget. I think you've accustomed to doing that. We have our own Slack team that that's a quieter place for quite a small community, and it makes a lot of sense to have our own team with its own channels, so you can hop on there. We really pride.
Michael Smith: Is that preside.something or what's the site called?
Dominic Watson: I don't know. It's presidecms, I believe, .slack.com, but obviously with Slack you can get the invite, so if you go to preside.org, there's that little Heroku app that runs that you can click on and it automatically sends you an invite, and then you can join. That's really easy. That's certainly the best way to get hold of us. We do pride ourselves on our grown up and friendly community. There is absolutely zero nonsense in there. It's a good place to be, so yeah. Absolutely come in and say hello.
Michael Smith: Great. Thanks so much for being on the ColdFusion Alive Podcast, Dominic.
Dominic Watson: Thank you for having me. Thank you.