You can listen to the podcast and read the show notes here
Michaela Light: Hi, welcome back to the show. I'm here with Gavin Pickin, the ContentBox evangelist at Ortus Solutions. And we're gonna be talking about all things ContentBox today. So, we're gonna look at why you wanna use it and what you'd use it for. And we'll look at the new API that's coming out in it and all the cool things you can do with that.
And, there's some of the hidden features in there which let you have a mobile app be the front end or even output JSON packets with just a simple change. Also we'll look at the contents tool as a way of storing custom settings, which is better than using a database. Gavin will explain why that is.
We'll also be looking at themes. Which are out in ContentBox, and what you can do with them. Lots of cool stuff there. And then, Gavin will be revealing some of the new stuff in ContentBox 4.0 that is gonna be unleashed during the conference. So, welcome Gavin.
Gavin Pickin: Thanks for having me. I appreciate it.
Michaela Light: So, let's come back to that. What exactly is ContentBox? ‘Cause not everyone uses it. And why would you wanna use it?
Gavin Pickin: ContentBox is Ortus's creation. It's basically a content management system for ColdFusion. So over the years we've obviously built plenty of website for ourselves at Ortus. But also for clients along the way as well. We were not really happy with the previous content management systems around and instead of building our little apps every time we- Luis Majano, of course, decided to build ContentBox. So it's been out in the market for several years now and we've made a lot of changes over the last couple years.
I came on as a content evangelist about two years ago now. So I'm in charge of getting the word out about it. But also one of the team members, I'm actually building it. So Luis and myself are working on ContentBox and, like you say, we use that for all of our order sites now, and a lot of the clients. It's a great content management system.
It has all the features of ColdBox, because it was built on top of ColdBox and supports ColdBox modules. But also, itself is a modular app too. So, the UI, the actual core of ContentBox is actually three different modules that you have to install when you install ContentBox. And it has all the features that- Users, roles, permissions, it has pages, and blocks posts, and a media manager and- There's a lot of great features out there and we're adding more and more all the time.
So we think it's a great content management system and it's getting better all the time and we're adding more things and we're adding more plug-ins and widgets and it's just a great base. I don't really build any apps now without it. Because it has all that built-in … Everything, basically. It has the users, the roles, permissions, the administrative interface allows you to add menus and items into it. So, almost every website or app you build needs all that so why not just build on top of it, and then using the ColdBox modules you can just plug straight it or build. It's just a great starting point. In a nutshell.
Michaela Light: Well, thank you. So, if one of the listeners wanted to try this out what is it gonna cost them?
Gavin Pickin: It's free. It's a completely open source and free. If you're using CommandBox, or CLI, you can install it in one line. You could just do install ContentBox dash installer, and you'll have the new version which is 3.5 installed in seconds. Then, you just type “start,” and then away you go. You've got a new ContentBox server up and running on your machine. You can even try it right away by using the embedded H2 server as part of the package so you don't even have to worry about setting up the server, you can just have it install and start playing with it.
Michaela Light: Wow. So, powerful CMS and it's all open source so if people find issues or want to add features they can do that? And share them with the community?
Gavin Pickin: Yup. Exactly. It's all written on ColdFusion, obviously. But we have a little Forgebox set up there so you can actually add modules and widgets, so if you wanted to get a Facebook widget to show your feed or something on the side you can go to Forgebox and find it and install it. Or if you wanted to do something else with Twitter, or add some other features, you can do that easily through the Forgebox which is CommandBox's repository for all the packages. Install them, and away you go.
Michaela Light: So ContentBox now has an API. Why would you add an API to ContentBox?
Gavin Pickin: That's the thing. It kind of already had one. And most people don't know about it. And so the session I'm doing; ContentBox API Unleashed, actually sort of shows you what's already there that you probably didn't even know about. The main reason we have it is, obviously today everyone's moving mobile, more API based. So it's just sort of a natural progression. And the last few years we've been doing into the box, without this mobile app, and we're like, “Why don't we just use ContentBox to deliver the content?”
So, inside a ContentBox we actually store all of our data in a content store. It's a hierarchal system of displaying our data. And if you go into the box website and you go to the speakers, or the sessions, all of that data is actually little snippets from our content store that gets pulled out via API caused internally and displayed on the page.
So, when we built our mobile app, it just basically says “Hey, ContentBox. Give me a list of sessions on this day. Hey, give me the list of speakers. Give me their photos, et cetera.”
And the API responds to that. So, the same content can be used inside your website and inside your mobile app, or whatever you want. Because it's just an API. And so, we've got some nice features built into it now already and they say some things you might not even know about. So, I don't want to give too much away, but- It's as simple as changing a file extension.
Michaela Light: If you're using this output JSON, what would you be doing with that? What cool things might you be doing?
Gavin Pickin: Maybe you have something where you've got something fancier at your office or what-not. You maybe have a screened presentation. So you could actually show your latest news events on a big display screen outside your office. If you're at a conference you could have different information shown up there. We could actually set up, into the box, a little speaker sort of profile spotlight and we could basically have a little app that just goes out and pulls a speaker randomly out of a list and displays them on the big screen. Anything like that is simple enough to do and it's all about devices. Something wants to talk to you, exposing API makes it real easy. And we don't just do JSON. We can export as XML, or whatever you want pretty much. There's several different formats you can export- Access the API through. Just JSON is one of the most common ones these days. Everyone thinks REST, API, JSON at the same- And that's fine. Obviously we support that.
Michaela Light: Cool. So, part of ContentBox is the content store, where you can store custom settings and fields in there. Why would you do that rather than just putting that stuff in a database?
Gavin Pickin: Obviously you can access the database. ContentBox is built on ORM and it's built on top of the database. So when you're building a module of something you may wanna create some RM objects and everything, and that's great. But we wanted to make it easy to add data to the database or add content to your website without having to worry about, “Oh, do I have to create some CFCs and RM objects” or “Let me go create these database tables.
If you're having this on multiple services, maybe staging, production, and you don't wanna mess around with it? We just made it simple enough to store this data inside ContentBox. And it stores it in a database, but it just abstracts that away for you. So, it's a content store. And it's just like a blog post or a page but the content store items don't have a normal output. So instead of being a blog post or a page with certain other settings, it's some of the base piece. You have a title, you have a slug, you have a description, and the main body of the page and a few of the settings. But it doesn't have the specifics of those other types.
Then you can use it how you want. You can add through custom fields for whatever you want, and basically like a custom content type. So that's what we do. Speakers, sessions, there are all these content types. And we basically link them together using their slugs and that's sort of a nice way to do that. And if you come into the box you'll learn a little more about what we're planning in 4.0, which is our custom content types, which actually builds on top of the content store. And it even stores the settings for how the content store works inside the content store. So you got a little inception going on there, which is pretty cool, we think.
Michaela Light: It does sound cool. So, are there any other 4.0 features you can mention coming up?
Gavin Pickin: Most people that are using ContentBox now, the big thing is, they've obviously used other CMSs here and there and one of the big things that people talk about is the support for images. We have our own media store, you can upload images. And we've just recently added some options for editing images. So now you can do cropping and that type of stuff all inside the media library which is nice. But a lot of people want thumbnails for different things and different sizes. So when you add a blog post now you can choose your featured image. So you can select an images. But by default, ContentBox hasn't previously re-sized images to thumbnail sizes or banner sizes, or what-not.
So, we're basically working on that right now. We're gonna have image sizes so you can stick your small, medium, and large sizes, and we're even looking at ways that modules, when you install them, can register an image size. And so when you create an image it'll actually resize that appropriately. So if your module requires a certain size image for its banners, it can register that and all the images can be resized appropriately. So that's another big one that a lot of people have been asking for.
4.0 actually, we have a lot of big stuff that we've just done in 3.5. So 4.0, we're still out there. Like I said, into the box will be talking a little bit about the road map and what we're planning for 4.0. And adding more multi-tenancy features is another thing. And also, a variety- Trying to make it easier for a variety of themes and override modules easily without having to go three to four layers deep inside your site. So we're trying to pull all of the custom code out of the ContentBox to make it more user-friendly for those who are actually diving into the code.
Michaela Light: That sounds like a good idea, 'cause that way when a new release comes out it won't break your code.
Gavin Pickin: Exactly. And we already did make a lot of changes for that with 3.5. The big thing is the change to the installer. So as I said before, you can do “installcontentbox-installer,” and it would actually install your code. But what we did is we completely reorganized the dependency structure and everything to make it more stand-alone and more separate. So that's a big change there. But you can actually install just the site code or you can install just ContentBox. So maybe you already have a ColdBox set up. If you just wanna install ContentBox into that you just now say “install ContentBox.” actually install that piece. Just the module into it. Not the entire site, not the entire structure, but just that ContentBox module. ‘Cause ContentBox is just a module running on a ColdBox set up. So, as simple as that.
Michaela Light: And for those who don't know what ColdBox is, it's a framework. Is that a fair summary?
Gavin Pickin: Yeah, I mean, it's basically the equivalent to Rails for Ruby. It's a big framework with a lot of features in it. We've stripped it down to be core plus modules now. So for the longest time everybody said, “ColdBox is too big. It does everything, it's a kitchen sink.”
And while that's true, it can do everything, it doesn't require you to start by changing the structure to basically, a small core with lots of module plugins. People are basically pleasantly surprised how small it is, how quick it is, and if you wanted to do validation or if you wanted to do RRM or what-not, you can just basically add that plugin. Previously, people were thinking you had to install everything, you had to slow down your site, 'cause ColdBox was the kitchen sink of the ColdFusion community. But it's not like that. It's super quick. We run things at millisecond speeds for our framework pages and everything. And it's great.
The beauty is too, a lot of ColdFusion developers have this problem, and I had the same thing for a long time too, where it's like you'd basically reinvent the wheel because you didn't know how something worked or you didn't know where to find it. So you would basically build your own version or what-not. Everyone has their own content management system they've built. Everyone's done it. But why build you own when you can use the expertise of everyone in the community working on something like ContentBox?
We've got some crazy smart people contributing to it. Not just the people at Ortus, but other people in the community too. They've got the best caching solutions. They've got the best database structures. They've got all. The themes and everything else. They've solved the problem. They've solved it many times, and they've incorporated this code so why try and do it yourself? ‘Cause it's not gonna be as good. If you wanna make something better, it's open source. We're welcome to people contributing and making it better and some of the best stuff we've done, like the last file editor, that wasn't done by an Ortus member. That was someone from the community who contributed to- They did some great work. It's really awesome. I'm excited to have that too.
Michaela Light: Cool. So you mentioned themes earlier, why would you want to use a theme in ContentBox? ‘Cause I know they only came out in the current three versions.
Gavin Pickin: Previously they were called layouts. Layouts were simple enough. They matched a lot of how ColdBox layouts kind of worked. So, it was a nice wrapper for you to be able to get your layout around your theme- Around your page so that it looked like something else. They worked okay. But things were just sort of a step up and not just the language, 'cause most people use the term “themes,” as like a collection of layout pages as well as fonts and styles and images and whatever.
So that was part of it. But we also upgraded them too. So now that there not just a layout, which is pretty simple. A theme is actually almost module-like. A theme can actually include modules. So when you install a theme, you can install plugins and everything else as well. We can actually depend on these modules and then include them.
So, the themes are really powerful. We have build processes for our themes and that's something you can learn about at Into the Box. Where you can actually have compiled JavaScript, compiled CSS, do all the updates through Bauer and what-not, and have a powerful output.
The first thing you do when you install a content management system is you either choose a theme or you customize the one you have. So, everyone changes the theme. That's the first thing you do. Themes are important. And we've got some really nice official themes that we've built based on some of the latest designs out there. And obviously, you can build your own themes. So the other session that I'm doing at Into the Box is about developing themes for ContentBox. So you learn a little bit about how to customize one that exists already, but also how to make your own ones as well. So you'll learn about layouts, and views, and templates and how they work and you'll learn about including modules or not. It's like, if you're gonna work with ContentBox, you need to learn about themes. This is the place to do it.
Michaela Light: I read that themes have events in them as well. What would you do with those?
Gavin Pickin: That's one of the cool things with ColdBox's interceptors. What you can do is, at a certain point in time you can basically- The system will announce an event. So maybe you have something like, “open side bar” might be an event. So whenever you're showing a side bar on your site it's gonna announce the ContentBox “Hey, the side bar is starting.”
So maybe you wanna put into the box speaker button there. So you can have a little bit of code that listens for that and then checks that logo for you automatically. You can have something at the bottom of the page where, right before the buddy closes, you wanna put your Google analytics. So you can basically say “Oh, right before the page closes I want to insert all my Google and my JavaScripts and whatever I need.”
So instead of having to go and insert this code into every single layout that uses it, ContentBox allows you just to put it inside a VIN handler, basically. It says when this is called from the theme, inject this code. And it'll do that. It's just like ColdBox, the reception points are amazing. It takes the control from in the file out into a separate point of view. So it's a really powerful feature and if you haven't used for ColdBox before, then you're missing out. That's one of the big cool things. I love them. They just make life easy for everything. For security, and logging, we use them for the APIs for security and that type of thing. They are really cool. And that's basically tied into the theme.
Michaela Light: And then, if you're creating a theme can you export settings in it so people can customize it, who are using it, or?
Gavin Pickin: Yup. Exactly. That's exactly how it works. What we've done recently with the latest changes in three-one and three-five is, we've actually updated the theme settings. So instead of just having a few settings where you can maybe change a couple of the button names or something on a couples sections you can actually go a lot further. We have it where you can basically change your homepage layout as far as to maybe put a hero image and some text and what-not. We actually have spaces where you can choose the color, so you actually have color in the theme settings.
And with interception points, like you just mentioned, for the themes, you can actually have a custom interception point for on your theme settings. So if you wanna use some crazy UI tool for picking images or cropping stuff, you can actually insert it into the theme settings form on the fly. So, if our theme setting aren't good enough you can make your own, basically, which is pretty cool.
As the theme developer, we know what all these theme settings mean. So when you- I'll put them on the screen, everyone's trying to use them a lot of times it's like, “Wait a minute, what does this mean?” And so we've added simple little things, like little tool tips that you can display, or little modal windows that can pop up to give more information. As someone who is using the theme you have options for that.
So as a theme developer we've given you the tools to make it easier to do help with modals et cetera. And we've found that that helped a lot. Because obviously we built the thing, we know what these things mean, right? Sometimes. This makes it easier for others using it too. So we're really trying to build up the themes and make them more powerful. Like I said, that's the first thing everyone does right? Is to install the theme or customize the theme 'cause they wanna make it their own.
Michaela Light: Yeah. And you mentioned modules earlier. Are they like little widgets that you put in the theme or are they more than that?
Gavin Pickin: Technology is interesting because every CMS has a little different terminology. But we follow the ColdBox stuff down. So ColdBox has modules, which is a grouping of code which has its own configuration, and a set of handlers, and fuse et cetera. So that's normal MVC. And then inside that module, inside ContentBox, you have additional things. So widgets are, like you said, a little piece of code that will display something in the theme. A module can have several widgets and it can have ORM objects and other things too. But a widget by itself is basically a function that generates some HTML or what-not to put in your page. So a module itself may have multiple widgets and you may have a social media module, for example that has a Twitter widget and a Facebook widget, et cetera. You can install that module and all those would just become available. But yeah, inside the theme you can add your own widgets, or add modules which have widgets, or install modules that have widgets. So you've got a lot of options there.
Michaela Light: And as one of the sessions, is there a workshop day on ContentBox?
Gavin Pickin: Yes there is. And that's the cool thing about Into the Box, now that we're broken away from the other conferences. We have the two full days of the conference but we have that workshop day as well, and so we're providing a ContentBox workshop the day before. It's a full day. Myself and Esmeralda, who is one of the theme designers and programmers with ContentBox. She's actually gonna be helping me lead that workshop as well as the theme session. But that full day is actually free. So we're offering that as a free option. We know that ContentBox is a great tool and we're gonna wanna share that with everybody so we're making that free for you to come. There are limited spaces, so if you guys are coming to Into the Box and you haven't decided on a workshop, choose quickly. ‘Cause it's free and it's filling up fast. We're gonna make that workshop very hands-on, friendly workshop with- We're hoping to keep it to about 10, 12 people so we can really get that one-on-one time as well. We're focusing on the whole setting up ContentBox and how you would get started with it, but also how to convert a legacy site.
So we've got one of the community members that let us be the guinea pig. So he's our guinea pig, and Charlie Arehart, obviously a big member of the ColdFusion community, has a great site with lots of blog content and amazing presentation, which has thousands of sessions in there. And we're basically converting them over to a ContentBox site. We're customizing his modules, we're importing his blog from Mango Blog to ContentBox. So we're doing a lot of different stuff and you'll basically learn, how can you bring your current site into ContentBox? So we walk through the different steps. Looking in detail of how to do things and modules and everything.
If you guys are coming Into the Box and you want to learn ContentBox that's the best way. You get me and Esmeralda with you guys for a whole day, learn about everything you could possibly wanna know about ContentBox. So hopefully you guys can come and get the most out of it. We want to get ContentBox out there and more people using it, it's only gonna get better.
Michaela Light: Cool. So let's change gears a little bit. Why are you proud to use ColdFusion?
Gavin Pickin: I've used ColdFusion for a long time. So I started back in university, back in the 90s. We had a consultant come in, we were the first e-business team to the university. Our job was to pull the crazy web world of the 1990s, and every department the university had their own crazy themes of designs. So we were set up with the task of creating this big website, try and get some continuity, consistency for everybody, and bring them all together. So we learned ColdFusion and back in the day and everything. It was just great. I'd use PHP and everything at the same time and it was just amazing to get started. Obviously over time other languages I've picked up and got popular and what-not. But I can still do everything I've ever done with ColdFusion. There's issues that we had with some tooling, possibly, where he get left behind a little bit. I don't know if you've noticed or not, but Brad, and Luis, and everyone at Ortus have been doing some amazing things and now we have package management. I don't even know how I'd work without ContentBox anymore, just being able to install a module or set up a site, I just couldn't function without it.
It's come a long way. Especially in the last couple years and that's why I'm so proud to work with Ortus and work with ColdFusion. Unlike most people who are just moving on from ColdFusion, we're making it better. We're helping all those companies out there that have all the legacy sites. They just can't afford to just switch over to Ruby. That's just too much work. So we're helping them bring their code into the future. Making an OO and making and learning how to cluster and scale. How to move it into containerization and to work with a cloud and everything else.
ColdFusion's got its issues but every language does. One of the biggest things that we notice when we're- As Ortus, Brad, and Luis and everyone is going to other conferences. They have Nexus et cetera to look at other languages and frameworks. ‘Cause that's what we do to try and make ColdBox better. They're noticing that they're behind us in some ways. ColdFusion may have its problems but it's also got its advantages too. I've used it for a long time and I still see a positive future with it, even if we're only converting legacy for a lot of things, I think once people realize you can write CommandBox scripts in it, you can do server roll outs with it. You can use it in docker. It's got a lot of pros too.
Michaela Light: Yeah, maybe you could say “It's not your father's ColdFusion” as they used to say about a certain automobile.
Gavin Pickin: Exactly. It's different. We've caught up on all the things that everyone hated in 2012. I wonder how many of those people that left three, four years ago. They left ColdFusion to go to other languages, might have stuck around if they realized what we had coming. If we had CommandBox, if we had package management, we had all these built tools and everything. We had docker containerization and all that. Maybe they wouldn't have moved on.
Michaela Light: Hard to say, but as long as people are excited about ColdFusion and new people are coming in and using it, I think ColdFusion will stay alive.
Gavin Pickin: Yup. I think so too. At our user groups, I've basically been showing them CommandBox and stuff and not telling them what language it's built in and they don't know. They can't tell. Until you tell them that it's ColdFusion most people think it's awesome what you're doing. So it's the stigma. There's a lot of things that we can do to make ColdFusion better and at Ortus that's one of our big things to. We're committed to ColdFusion. We're not leaving. So that's one of our things that we discuss after is what we do to make ColdFusion and the community better.
Michaela Light: Well let me ask you a question like that. What would it take to make ColdFusion more alive this year?
Gavin Pickin: This year? That's tough. Obviously-
Michaela Light: That's why I put this year on it. ‘Cause if I just said, “What would it take to make ColdFusion better?” You might say, “Well, in 2030 it'll be doing this cool stuff.”
Gavin Pickin: Yeah. I think a lot of it is just education, it's getting it out there. I know Adobe has gone to some other conferences and everything. But how much are they really pushing it? The certifications out there right now, we've talked about that too.
Education is a big thing. We need to make it easy for people to get moved over. That's the thing too, starting new developers and trying to teach them ColdFusion is not the easiest thing but it's something we gotta focus on. But at the same time, a lot of companies, they actually find a lot of success in bringing the PHP developer or an ASP developer and then showing them ColdFusion. Because it's not that different from job descripts and the syntax and the structure and everything else. It's not that tough for a developer to convert. And usually you'll get a much better developer that way, 'cause they understand programming. It's just syntax. It's just a conversion instead.
And so at Ortus we're actually working on Ortus University, we're making courses for new developers as well as how to convert from other languages over to try and make it easier for them. That's the big thing that we see. One is image, but the other thing is bodies in the community. How can we get more people for those jobs? And for the people in the community, how you can find them jobs. So that's a big thing for us is to help train, support, teach, and obviously the more we're doing- Maybe we gotta be a little more vocal too.
‘Cause these days, I don't know if you noticed or not but everyone is like, “Oh, I found a site that's running ColdFusion.” That's the site that has CFN still in the name. Still in the URL. But I dunno how many sites that we've built, but you don't ever see CFN in there. You never see the file extension. So, how many sites out there are ColdFusion that nobody even knows about? We're not making a big deal about it so most people think it's not there. They just assume it's something else. So maybe we should encourage people to say, “Hey, this is built with ColdFusion” or what-not. Or these are the plans we're putting out. ‘Cause we got a lot of people building ColdFusion sites but we're just not real vocal about it. Maybe that's part of the shame that ColdFusion developers have-
Michaela Light: I know you're gonna be- One of the things you were gonna do in the keynote is addressing that ColdFusion shame and helping us get rid of it.
Gavin Pickin: Yeah, that's the thing of Ortus. We hear about the community. We're not leaving. We're doubling down. And that's one of the things we wanted to talk about, to discuss with the community and figure out, you know, these are the problems. These are the myths that we can de-funk. And how can we, as a community, do this? That's one of the big things too, is like we're Rick Handon said something about Ortus single handedly keeping ColdFusion alive by building these tools and stuff. I know there's other people that have to step up too. We have to do it as a community. So yeah, we have a section about that. The past, present, and future of ColdFusion and what we intend to do, and we invite you guys to help. Let's make ColdFusion great again.
Michaela Light: Exactly. And help people realize that. And that's why I launched this ColdFusion Alive podcast. ‘Cause I want people to realize ColdFusion is alive and there's a lot of cool stuff going on.
Gavin Pickin: Yeah, that's for sure. The thing is, most people don't know about it. Maybe that's not a bad thing that if you're trying to get community attention that isn't a good thing.
Michaela Light: So what are you looking forward to at the Into the Box conference?
Gavin Pickin: First thing is people. Whenever I go to a conference it's my opportunity to catch up with friends new and old. Also just to talk geek, talk sharp, and I love that. We only have a limited number of developers in town here and everything. I enjoy getting together with all of them whether they're mobile developers or Ruby developers or what-not. It's great to get together with all these ColdFusion developers and tell stories, share those war stories and everything and that's great. Like I said there's a lot of smart people in the community and a lot of smart people are gonna be there. We've got a great number of speakers so I'm gonna enjoy that and having that time to be able to sit down and chat while you're eating.
I know it sounds funny but it's like people just sort of relax and you really get to connect with them a lot better and that's the thing about a conference. You get up early and you have breakfast with everybody and by the end of the night you're having a late dinner and just chatting around, everyone's got their computers out hacking or talking or whatever and it's just really good. It's just a great time with people. And so that's the big thing for me. Obviously the ContentBox workshop is a big thing too, I'm looking forward to that and I'm really wanting to get that time with people to see what else we can do to make it better. ‘Cause that's the thing. We want to make it something we all use and but also we get more people using it. It's only gonna get better and the more things we have, the more widgets we have, the better it will be. I think we're at a place now that we can really build on top of it. So that's what I'm really looking forward to.
Michaela Light: Cool. So if people wanted to find you after listening to this podcast how would they connect with you?
Gavin Pickin: Okay, well if you go to www.gavinpickin.com, you'll see a nice little profile page and it has links to my blog, my Twitter, my LinkedIn, my Facebook, so that's the best way to get ahold of me. Obviously if you go to ortussolutions.com we have plenty of things there as far as more information about ContentBox. If you go to events you'll see some of the roadshows that we've done and the previous modus developer weeks so you can see some videos and find out more about what we're doing there. Don't forget, enter intothebox.org so you can check out the conference and find out a little more about the conference there.
Michaela Light: Great, well thanks for being with us today, Gavin.
Gavin Pickin: No problem, it was a pleasure. Always good talking about ColdFusion and hoping to see a lot of you guys out there at Into the Box. Looking forward to it.