You can download the audio and read show notes here
Michaela Light: Welcome back to the show. I'm here with Seth Engen from Computer Know How. In fact, he was the co-owner of that. Founded it quite awhile ago back when ColdFusion 4 was out. We're going to be talking about adventures with ColdFusion and ContentBox in the wild. Not just theoretical but practical. We'll check in what ContentBox is, how it's different from other open source ColdFusion CMS's, why you should be using ContentBox themes, and some of the amazing stuff you can do with them. How ContentBox widgets make it easy to program common business needs, how creating modules help with integrating ContentBox out of software. Welcome Seth.
Seth Engen: Thanks for having me.
Michaela Light: Let's just start off for folks who don't know, what the heck is ContentBox?
Seth Engen: Well, ContentBox as the website and some of the documentation indicates is just an open source CMS, Content Management System. It's very similar to a WordPress, something like that. But for us, those familiar with ColdFusion and have written and programed in ColdFusion over the years, ContentBox is written in ColdFusion and built on top of ColdBox. Some of the Ortus solutions suite of products, stuff we've interacted with for about as long as we've interacted with ColdFusion overall but just a really solid content management system for your use in your business and with things that you do on the web and those things that you need custom programed. A great content management system for your use.
Michaela Light: Cool. You know, there's a lot of open source ColdFusion CMS's out there. Mura, FarCry, Preside, if I'm getting the name right. How is ContentBox different from those other than it's built on top of ColdBox?
Seth Engen: Actually that is probably the biggest difference I think. I haven't had a lot of experience with those. I think the difference, and even with other non-ColdFusion based CMS's but they've really built ContentBox with security in mind initially. Very much a modular architecture. Designed it, and we've seen this with some of our business customers and their successes, designed it to scale.
Then not only their interaction with us but our interaction with the ContentBox team, the Ortus team really support being a huge benefit. I mean, to be clear, you can get a lot of different content management options and solutions out there but are they supported? ContentBox is, I think one of its strengths is support. Not only with a company like ours or directly with the Ortus team, just a great supported product as well. And scalable. Not only does it work well, it's well supported.
Michaela Light: Cool. Tell us a bit about ContentBox themes. What they are and what amazing things you can do with them.
Seth Engen: Well, I'm not sure that this is actually probably the one place where ContentBox is very similar to other content management solutions. I mean we're dealing with in theming essentially HTML, CSS, and Java Script. This is the one area where it's probably most like other content management systems but with ContentBox I think there's a real power. Obviously there's other content management solutions that are built in ContentBox but they really give you the ability to tie in very quickly with the kind of programming that you like to do.
We've used them over the years after we get past the initial basic theming of the site, we've used them to build some custom menus that work with Twitter Bootstrap for example. Being able to tie into something that in ContentBox is called the ContentBox Helper. We can very quickly get to the data of the menu and then wrap that as we need it to theme it properly. Sometimes you seem to be a bit painted into a corner as they say as far as how the structure of a code comes across and with ContentBox it's been very customizable. The CB Helper has helped us to do that. That's one example.
But they really give you access to the underlying features of not only the content management system but also just really digging down into the core. Not only because it's open sourced but getting you access to the underpinnings of the CMS and allowing you to get as deep as you want that way and go as custom as you want. That's where I really feel, after you get past the basic theming of it, it differs quite greatly from other options. We love the customization capability. I'm going to talk a lot about that today and in my talk upcoming.
Michaela Light: Can you give us an example of something you've done customizing the theme for a particular business?
Seth Engen: Yeah. Actually probably one of the biggest things that we've had a problem with initially was the basic menu system that comes out of the default theme in ContentBox is like every other content management system wrapped with a bunch of code that may or may not work with the styling that you're trying to incorporate. With ContentBox we were able to tie directly into the CB Helper and pull just the data and develop the menu exactly the way we wanted to build it. Initially, and this isn't the custom solution I was speaking of but they've got menu builder built in now that allows you to do some of these same things.
They're giving multiple ways for a person, whether it's a programmer or somebody who is just a customer wanting to use the product, they're giving a number of different options for you to answer those needs with various tools throughout the system. The menu system is probably the one that comes to mind giving us really full control. We were able to do whatever we wanted to do with that system. Make that menu look exactly the way we wanted it to look for that site.
Michaela Light: Cool. Is basically a theme in ContentBox pretty similar to a theme in WordPress or Mura or any other CMS?
Seth Engen: Yeah. I would say so. As I mentioned I haven't worked with those a great deal but as I mentioned, theming is so much, so similar across CMS's. When you really get down to it, regardless of what the content management system is built on, you're really dealing with HTML, CSS, and Java Script at the most core level. The question is what capabilities then above the HTML, CSS, and JS they give access to and that's where you're really able to tie into the ContentBox system and make it work for your needs.
Michaela Light: Is there a place where you can download themes other people have made?
Seth Engen: Yeah. Yeah. It comes with some, depending on what version you're running. I think the older versions came with four different themes built in. There's actually something called Boot Swatch that I was originally a part of working with and Boot Swatch is nice. It's based on a project out there, bootswatch.com I believe, and that allows you to toggle between, I don't know the exact number, I mean I don't know if it's quite 20 but certainly 15 different themes that you can flip back and forth. But you asked the question, “Where can I get others?” There are some other options out on PorchBox, which is the capability in ContentBox to go out and download widgets, themes, and modules that people have built.
Michaela Light: Cool. You mentioned widgets. What exactly is a ContentBox widget and how does it make it easy to program for business needs?
Seth Engen: A widget is just a ColdFusion component. It's actually a singular file in CFC that you can write some logic into to handle whatever the requirement that you have is. Then it's really just a drag and drop into the system and it'll detect the widget and you can place that essentially on your page. We've used them to … I'll just give you a couple of specific examples. A lot of customers come to us, the first they that they ask for is maybe something like a business directory. They want to be able to show maybe some clients that they work with or different municipalities will want to list maybe their departments and their phone numbers. We're able to leverage what in ContentBox is called the Content Store.
Content Store is just basically a warehouse of whatever structured information you want to put in there. Then you can leverage that with tools. We've built a widget called Data Listing Widget and I'm going to go over this at the conference too. The Data Listing Widget basically iterates over the Content Store elements in a specific category. An example of Business Directory you're able to essentially put that directory in front of the users on a page with that widget, the Data Listing Widget. One other thing we do with that Data Listing Widget, we actually use it in a couple different well world sites to do frequently asked questions, which allows us to wrap other things around it.
Because we're dealing on a base level in the Content Store with just data, we're able to allow the customers to update their own information and the customer then doesn't have to interact with HTML, the JS, the Java Script or the CSS. We're allowing them to type in information, to publish that information via ContentBox but then we're doing the work to loop over that. Whether that's in a frequently asked questions example or a business directory situation. Both of those examples are where data listing was used.
One other way that we seem to get a lot, the listing of media items like maybe in a business they want to post their agendas every month. They have a meeting and they want to post the agenda before or maybe even the minutes after. They want an easy way. Customers want an easy way to be able to upload these documents without interacting with HTML again or needing to know how to program and things like that. Through the ContentBox file or media manager, They're able to go into a folder, drop the file and then the widget, which is something we call File Listing Widget, it rates over those same files and puts those on the page.
What we're really excited about is when we can take a widget or some solution with a theme and take some of the complexity out of updating a site for the customers. They don't want to be programmers. They want to get their sites updated quickly and so ContentBox really allows them to do that through some of these capabilities that we're given to build widgets and eventually here we'll talk about modules too today. Really gives us the ability to take the programming out of it for them but give them the capability to update their site easily and quickly.
Michaela Light: Cool. With the widget, you have a CFC behind it and some of the properties of that CFC are exposed in the user interface so the users can tweak the values and change its appearance or change how the data is sorted or anything of that nature.
Seth Engen: Yeah. When you're placing a widget in ContentBox you're able to, it's basically a singular modal rather that's popped up and that will have the configuration options we've exposed. The other widget to maybe sort the data ascending or descending to maybe turn certain things on or change maybe which columns is sorted. Data Listing Widget, which actual data is exposed or presented to the front end. Yeah. When you're placing the widget there's an ability to change some of the options for the widget so yes, that's exactly right.
Michaela Light: Cool. You mentioned ContentBox modules. How are you using those to integrate with other software Seth?
Seth Engen: That's a great question. That's actually a huge need. Obviously we're not an island. Any customer that comes to us usually has some kind of an integration that they want to do. Modules is perfectly, a module is just a basic ColdBox module or ContentBox module and you're able to … We can custom develop whatever we want in that. Usually it's accompanied by a widget. In a lot of cases it's accompanied by a widget that then it exposes some of what that module maintains.
But a couple of specific examples, customers typically come to use with eCommerce requirements. Some not for profit sites will ask for online donation capabilities. Obviously you can do stuff like PayPal and things like that. We actually put together a donation module, which I'll be going through as well and that integrates directly with Stripe so you can change some settings in the module. You can deploy a widget in a couple different ways. One, kind of a full donation form but also a smaller little simple widget for the home page to do a call to action for that person to donate some money to that organization. A donation module is integrated with Stripe.
We've actually built a module that actually also utilizes something called FullCalender which a lot of people may have heard of. It's really taken FullCalendar and bringing it together with the Google Calendar API and the end product for our customers is just a calendar for the customers to, or for their visitors to see. But the neat thing is they're able to interact with Google Calendar to do the data entry so there's no interaction after the widgets been deployed to ContentBox their interaction is through the Google Calendar log in. Then that just flows to their site directly. That's another example of integration with a ContentBox box module.
Michaela Light: How are modules called? Is there an event that files them off?
Seth Engen: As I mentioned the widget is typically how they're exposed if that's what you mean. Usually like with the FullCalendar module we change some basic settings in the module like where we're tying back, to what Google account we're tying back to. That'll get set in the ContentBox module itself. But the actual, the part that visitors to the sit see is actually done through the widget so then the widget is tying back into. It's typically when you're at the most base level, when you're deploying it to the page it's usually done in a widget or from a widget.
Michaela Light: Cool. In your talk Into the Box are you going to be showing some code examples as you go through all these things?
Seth Engen: Yeah, my goal is to … We're obviously talking to fellow developers. The goal is to get into as much code as possible. Once again, stay away from the theory if possible and really talk real world application. We've had experiences … I mean we've been working with ContentBox for years now. I've done numerous talks at both Into the Box and what was called Box Developer Week, now Ortus Developer Week. We talk about a lot of theory. We talk about, “Okay, here's a simple site.” But that doesn't necessarily get you to point B with your customers. Like, “How can I get this calendar out there,” or “How can I present this data on my site?” “How can I quickly get my agendas out in front of my customers?” “How can I take donations?”
The goal is to talk real world business needs but as you mentioned, I want to dig into code and show them. What the real rubber hits the road kind of point is you can develop custom software but you still have to tie into the underpinnings of ContentBox and so I really want to highlight those areas. The places where they can take control of ContentBox and the page presentation they're rendering and show where those connections are made.
One other example, it's not a completed project but we're actually working on some international English stuff, some English/Spanish translation. Showing how they could do that with their sites as well. We're going to be showing that. There's a bunch of projects. I don't know, I think I have an hours time, how I'll actually get through all of them. We've got a neat project that integrates with the editor in ContentBox called CK Templates, which the goal with that project is simply to make the editor on the admin side of ContentBox look as much like what the customers will see. What the visitors will see at the website.
You've heard of what you see is what you get. The goal is make it as much like what you're ultimately going to see on the front of the website. That's a really neat project. We're going to hit on another project that allows you to drop icons into your themes. Really, I referenced, when I talked about this talk that I'm going to be doing, a field trip. We want to do kind of a walk through and have as much fun showing some of the things that we've built.
Honestly, I think probably everyone but maybe the one I just mentioned, the internationalization module, I'm not sure if it'll be completed but everyone of these is going to be available on GitHub and ForgeBox so people should be able to just go to their ContentBox box installs and download these and use them. This isn't just, “Here's what we built, I hope you can build something this cool.” This is really an opportunity for them to take exactly what we've built and maybe even make it better. It'll be available for people to download and to use in their own projects as well.
Michaela Light: Fabulous. Well that sounds great. Let's just change to a slightly different topic, which I'm asking every speaker I'm interviewing, which is why are you proud to use ColdFusion?
Seth Engen: Well, some of it goes back to my first interaction with ColdFusion. Probably most of it goes back to that and the amount of time I've worked with ColdFusion. But I was, believe it or not it was late 90's, interacting with ColdFusion in its earlier forms. But when I looked at what it took to do certain things with the ColdFusion language I was immediately struck by the simplicity of it. Just started building from there. It's just a great tool, great language, what I consider to be very direct in the way that you implement certain things. I think that's why we've seen the success in products like ColdBox, ContentBox over the years. The tools that we've put together. Just fell in love and I've loved building programs with ColdFusion ever since.
Michaela Light: Cool. Sometimes we see posts saying ColdFusion is dying. They've been around for 10 years and ColdFusion is still alive. Let me just ask you this, what would it take to make ColdFusion even more alive this year?
Seth Engen: Well, I think Coldfusion is a great community but a lot of people, they are having opportunities in other languages, things like that. There's a thought that ColdFusion is dying. We get a lot of requests from customers looking for ColdFusion support. I think community is key. Education like we're seeing at the conference like what we're doing with Ortus here. Great examples of education. I know later in the year typically Ortus Developer Week so education is big really. Showing people the similarities. How you can create maybe an easier way in ColdFusion what they're doing in other languages.
Communication amongst developers, education, the community is definitely key and that's a little bit what we're doing here today too. That's what's going to … Just to get the word out you know. A lot of people have a lot of weird ideas about what ColdFusion is. Really old information you know. They say that the syntax … it's changed a lot over the years and I think people have some old information and it's really … Getting the word out that way I think would be key.
Michaela Light: Cool. What are you looking forward to at the Into the Box conference?
Seth Engen: Into the Box, anytime we can get together, Ortus Developer Week is online but anytime we can get together the people that we meet there, the networking that we can do is my favorite part. A lot of smart people. I love to learn and there's a lot of people speaking on a lot of different topics. Excited to learn but honestly mostly the networking is a huge draw for me and being able to rub shoulders with some of the great friends and great co-developers.
Michaela Light: Fabulous. How can people find you if they wanted to learn more about what you do?
Seth Engen: Yeah, probably the most direct way, which also has our contact information on it is our website. That's compknowhow.com. It's short for computer know how. It's C-O-M-P-K-N-O-W-H-O-W.com. Definitely our website. Then all of our developers are listed out there and the services that we offer and yeah, compknowhow.com.
Michaela Light: Great. Well, we'll put that and all the other things mentioned in this episode in the show notes, which you can find on the teratech.com site and I want to thank you for being with us today Seth.
Seth Engen: Yes, thank you for having me.