Read the show notes and watch the full episode here
Michaela Light 0:01
Welcome back to the show I'm here with David Ballenger and Tom King and we're going to be talking about CF wheels a ColdFusion framework for the rest of us and we'll look at what CF wheels is and what's coming up in the new release of CF wheels and some really cool things you can do with restful routing and the CRM that's built into it and lots of other cool stuff so welcome Tom and David and if case you don't know them that two of the four wheels on the CF wheels team I guess you could call it a CF wheels bus so to speak and Tom has been doing cold fusion since 2001 and he he joined see if we'll switch from one what a while ago
and he even spoke on it and see if camp few years back so three years ago now so
David He is our Canadian ColdFusion connection
currently living in Argentina so he's very international and he's been doing cold fusion since version four or five which is a long while ago so and helps get cold fusion more exciting in Argentina and Latin America. So
welcome David and Tom
Thank you having us
Michaela Light 1:30
yeah so I guess the the elephant in the room is for those people who haven't UCF wheels and I know from our cold fusion developer survey the State of the Union survey not everyone uses CF wheels the maybe people wondering what what is CF wheels I obviously has something to do with ColdFusion but but what is i
was just you can just go ahead
Tom King 1:56
Tom King 2:00
it's an MVC based framework. And it was inspired somewhat by Ruby on Rails. And it's got about let's go over 10 years worth of development in it. And
the idea was to have a really successful framework where we got inspired by the Ruby on Rails concepts and translated them as Seth, I think, David, you know, a bit more about some of the sort of history side of it, don't you?
David Belanger 2:27
I do. Yeah. Rob Cameron in 2005 was a big Ruby fan love Ruby on Rails and wanted to see if you can translate it to cold fusion. And he did. And basically, he just kind of quickly created a framework you started with the view and the controller and then later on, he added the model and then he kind of realized that he wanted to go back to Ruby. So at that point pair your inner from Sweden took over the project, and he was joined by Chris Peters, and that was a very long period a couple of years where they really got the ball rolling on the project. Got it on GitHub.
It open source really did a lot of contributions with a lot of other people. And I discovered actually in 2014, and I discovered it as a result of I changed jobs. And the job I landed into said, we're ColdFusion wheels started where a CF wheels house and here it is.
I said, Great. Well, I guess I better learn about it. And luckily, Chris Peters and put a bunch of videos up online. And it was very easy to use, very easy to learn. And I say that having come from a FuseBox background, which was a great framework, not quite as easy to understand us. So I was very, very happy with the way that CF wheels was organized.
Tom King 3:42
I had a similar experience where I tried
a couple of frameworks. I mean, I can't even then claim number which ones but I got to the point where I just didn't you know, I had to walk away from it and I ended up basically writing my own little
Many frameworks, you know, reinventing the wheel time and time and time again. And then I came across
Chris Peters, his screen casts, and it, just something clicked. And it was a really lovely thing because I've got to the point where I could, once I sort of got over the basics, I could start guessing what the function name should be in the framework, you know, and sometimes it's just really nice when those things just, you know, all click into place. So I had a very similar experience of just being able to drop right into it. And it's definitely one of the things we try and preserve today is that sort of ease of access for someone who might not never even touched the framework.
Michaela Light 4:43
So how long did it take you to learn it? Both of you? I'm just curious, was it a day or a week or a month?
Tom King 4:53
I'm still learning it every time I open the core code up. I sort of have to get in train, train the way through it. But no, I mean, I had I had working apps within, you know, a couple of weeks sort of thing.
One of the things about it is, it's very convention based. So if you don't want to put tons and tons of configuration and you don't have to, and you can also favors this hybrid development style. So why is it famous, it allows you to do sort of hybrid development. So you can take existing code, you know, like a block of code, which you know, works and you can just insert it into a view if you wanted to, just to make it work and so it was very, very quick entry. So you can just go right well, I know this code works let's pop it here and run it through wheels and you know, as if by magic it sort of works so is that that was really useful for me when I was trying to migrate legacy applications into wheels
David Belanger 5:57
convention over configuration for me was
The biggest seller, because everybody in the office at that point had a different way of doing things. And when I, when I went in to see if wheels and I opened these other projects that were using wheels, I pretty much immediately understood what they were doing. Everything was organized in a way that was easy to read, easy to find, you just knew where things were happening, or were they had to happen, things that had to happen in the in the model, the viewer, the controller, and while there's a lot of people out there that aren't big ORM fans, I am because it's very streamlined. I mean, you're using objects, the objects are calling these methods. It's very clear what everything is doing. And some people say, Well, you know, I just can't do enough with it. I can't get detailed enough to what I want to do. Well, if you want to go ahead and put your queries and you can there's nothing stopping you. We have complex reports that need complex queries that sometimes aren't great for ORM so we do it there's nothing stuff here. We're not breaking convention or configuration. By doing that. We're just doing what we need to do to get detailed reporting done.
It's just it's a great base to start from for any app. And that's why I loved it.
Michaela Light 7:06
So you mentioned convention over configuration. Could you explain that a bit more? Because that may not be something people are used to
if they haven't done Ruby on Rails or CF wheels. So what does convention mean? When you're actually coding?
David Belanger 7:24
Basically, it's knowing where to go, because it's already set up for you.
When I'm looking at. I do an example, if you're dropping into a new wheels project, you set up a scaffolding right off the bat, it's going to ask, okay, what kind of objects are you going to be using? What are you dealing with? So we always use the books examples. Cool. I think the CFO accuracy of web application kit books always talk about books and or movies in this point. So you so I'm going to talk about movies and right off the bat, it throws into the controller, your editor.
function so your crud, your create your read your update, your delete, and it kind of structures everything the way it's supposed to work. And before you could call these directly by putting, you know, here's your, your item that you're working on, let's edit that. And it would have the word edit afternoon and what we've done with 2.0, which was a great addition. And one of the things that I really focused on in last couple years, we've made it RESTful. So now we can actually make an API. And if I want to edit something, instead of actually using the word edit, I can just do a patch and, and instinctively that verb which is hidden from the user, the server knows that patch means we're about to edit something. And this is not it's more secure, because we're not actually telling the user what we're doing. We're just doing it so everything is set up for you. You don't have to think about it. I just instinctively know now again, this is the convention part that if I want to do this, I'm going to use a put in version 2.0 or I'm going to use an edit and version
1.47 was the last one. I think we had 66. Yeah.
Michaela Light 9:08
And so is the no configuration file is not one of those XML files like you get in some of the other frameworks or
Tom King 9:17
no, there's, there's no XML at all, actually, in the configuration, so it's all, you know, see a script we've got, we've got, obviously a lot of framework specific variables, which you, you can turn on and off or whatever. And so there are configuration files. And obviously, we have multi environment settings. So we'll have, you know, production development, testing, etc. So there are configuration files, but they they're not complex XML documents or anything.
Michaela Light 9:49
So how does CFWheels differ from ColdBox or framework one or FuseBox you mentioned it's easier for beginners to get into
to, is there any other because they're all basically can be used as MVC frameworks are? Absolutely. So why does it matter which one you pick?
David Belanger 10:12
Um, that's a good question. I was, I found, I went into the box the first time last year, and I really got into cold box to find out what it was really all about. And I found a lot of things very, very similar to what we were doing. And that's because for an MVC, they're supposed to be similar. That's the whole idea, organizing your code in an MVC way, so that everybody can find what they need. I just found that with wheels, it was quite literally a copy paste the framework and you could edit whatever you needed to edit directly there, you didn't need to know about I'm gonna use the PRC so PR and the PRC was the this is the memory space that cold box using, I can never remember what it stands for. But you have to kind of know about the memory space, I think the cold box was also big on closures. If I'm not mistaken, that's a little more you have to know a little bit about how that works, I had to change everything together to get that working. I think cool box is a great framework. And I think once you know what you're flying with it, but I think there's a little bit more of a learning curve than it would be four wheels user.
Tom King 11:15
I also think that some frameworks like framework one is designed to sort of do its thing and just get out your way
and we're not trying to do that we're trying to actually produce order on chaos a little bit maybe so and we will try to give you the tools as well because we've got so many so many features in the framework
which we you know use all the time like things like form helpers and you know really quick ways of constructing really complex layouts and you know down to really simple things just like like string formatting you know so we try and get all those core features in there so that you don't have to go on to cF live.or who are what was that you know what was that string thing they use six years ago you know we try and put the sensible stuff in there which people need
Michaela Light 12:09
so if you if you had to compare these four frameworks call box framework one fuse box and see if we all two personalities or animals you know what
what would you say to them kind of roughly felt like to you
Tom King 12:28
off there's a good question that wasn't ready for that one
David Belanger 12:31
I don't I don't really know to be honest with you I mean I think framework when the whole idea was at a supposed to be simple one file looking for
an animal Wow. I don't know like a bird pro Lino. Something that just flies. Flies just does its thing. fuse box. I hesitate to say this, but I was going to my first image was a dinosaur. And we should never use that in the cold.
But unfortunately, I loved fuse box. I really did. It just fell out of support. It fell out of favor. And everybody just gave up on it very quickly. And sometimes good reason. I mean, there there are easier things out there.
And I do like cold box. I find that it's it's got a great support team behind it. The the artist guys are fantastic. I think they do a lot for our community with all of their tools. And I know we're gonna we're going to talk about in the show too. It's just for me, command box alone has been a game changer in the last couple of years. It's really helped me a lot to do my work.
Tom King 13:36
Yeah, I second that the, the otters guys with with command walk. So I mean, I'm looking at deploying an app at the moment on Docker using command box to see if wheels app on the back end in a, you know, Docker image into Fargo. And that
Michaela Light 13:55
my mind a bit really, cuz like a few years ago, that would have been
Tom King 14:00
horrible thing to have to actually do. You know, you'd have to set up a see two instances and all sorts. So the the modern CF tooling those guys are coming up with, I'm a massive fan of. And, you know, we use, we've actually got to see if wheels CNI which we use for things like command line unit testing. So we were actively engaging with those tools. And it's really nice to know that the otters guys are there because you can ask them a question at any time. And so, yeah, they're always answering questions. I don't know how to get anything done.
Michaela Light 14:35
I think they're a hive mind connected by slack. You know,
playing nice, good way.
David Belanger 14:42
I'm King. By the way, whenever you ask a question on CF wheels. before I've even finished reading the question, Tom has already started answering it.
Michaela Light 14:52
So I think we got to animals in their framework. One is a lightweight bird and fuse box as a somewhat ancient dinosaur.
I didn't hear what the animal fur coat box or CF wheels was,
David Belanger 15:06
man, it's really hard to think of an animal for these things,
reasons that I love this but I'm thinking Holbox more along the lines of a tiger because the they are getting more aggressive with it. They are publicizing a lot. They're doing the conferences, they're really putting the word out there that that this is, this is an animal that can really get in there and do a lot of work for, you know, and really dig in my best Tiger impression and giving
for CF wheels.
I like it. I'm going to call it a horse. Because it's, it's useful, it's practical, you put it in, you instinctively know where you're going to do with a horse, you're going to write it, you just look at the horse. Okay, I know how this works. I get on. It's, you know, the people do it. Let's go. You know, there's there's not a lot of thinking involved when it comes to for that particular animal.
That's my answer.
Michaela Light 16:07
Great answers. Yeah,
Tom King 16:10
so I got some, I realized we will just take a step back, because we kind of made an assumption that everyone in cold fusion land is using a framework. And I know from surveying developers, that's not actually true. There's, there's people out there who either don't use a framework at all, maybe they tried one out like you did, Tom and didn't like it and haven't touched one since, or maybe they've got a homegrown framework, and, you know, so let's start with first one, why should use a framework at all?
It's actually in our documentation. It's it's one of the first pages and we actually asked that exact question. And I mean, I think I think the answer is fairly obvious, and so much that you don't have to use a framework to course not, I mean, you know, a five page static ish website. Yeah, you could find what else, of course, good, but you don't need to. What I like about using a framework though, is, if I started a project, I'm not quite sure where it's going to end up. I like having that flexibility of being able to go, Okay, I'm gonna have to turn this into, you know, something with a full RESTful API and back end, and instead of having to sort of redo the entire project, I can just carry on my merry will away,
Michaela Light 17:30
and just, you know, that I know that support structures there if I need it.
David Belanger 17:37
And if I
Michaela Light 17:39
What about? Oh, go ahead, David. No, sorry,
David Belanger 17:42
if I was to add to that, I would say to that, whenever we're working with legacy apps,
we can't just assume that the developers in our shop are going to be there forever. They aren't. There's a lot of jobs changing. And every time I come into a new code base, just finding things waste a lot of time. So a framework is it forces an organization and for me, that's the biggest, even if you're a one app shop, it doesn't mean you're going to be a one developer shop. So the next guy that comes into the next girl that comes in who starts working on this app, it saves so much time to know where everything is, and to be able to fix things that for me, is the biggest selling point of a framework. That's why I think everybody should be using a framework doesn't matter which one we prefer wheels, of course, but you know,
Tom King 18:30
I like the fact as well. But when I come back to code in just a few months later, I know where the stuff is. Yeah, cuz I've got wheels apps now, which are, you know, donkey's years old? And, you know, occasionally you have to, you know, dig back into them and go, Oh, right. Okay. Yeah, you know, you know, you just know exactly where you are straight away.
Michaela Light 18:51
That must have been wheels, one version one if it was donkeys instead of horses.
Yeah, maybe. Maybe we'll one point for 1.3 that they were good. But perhaps less stallion like,
so what about people who are using a homegrown for framework? Because there's a lot of developers who just build their own framework? And why should I change to one of these other frameworks?
Well, changes? Sorry, dude, you different? Oh, no, go ahead.
Tom King 19:26
Well, I was just thinking, it's a very similar thing. I mean, if you ever have to pass your code on or open source something, you know, to have something where I as a developer, I mean, if I find something, I want to contribute to it. And by having a framework with at least some conventions and documentation, I'm lowering the barrier barrier of entry in open source. And I think that's a good thing.
David Belanger 19:55
And for me, I've been in a situation in our office, especially where we did have home grown frameworks on this particular job, a couple of previous ones. And the thing about our open source framework is there's a lot of people in the community who are who are finding small bugs and fixing them. And you don't always have the manpower in your shop, to constantly looking at your own code to find these little bugs. So it comes back to the, the more eyes you have on a project, even though your particular project might not be open source, the framework is, and that's a great thing.
Michaela Light 20:28
And I think also, you know, the fact that there is a framework people, you know, this gets documented, I was gonna say better but documented at all, I mean, a lot pogrom frameworks I've seen, there isn't any documentation, yeah, you've got this whole set of documentation. And so to the other frameworks,
Tom King 20:47
we're quite proud of our documentation issue. I mean, it's, it's not like I've written it all. I mean, it's cumulative over the years. But the there's, there's a central API reference. So you can very quickly find the function in the framework you might be need to deal with. And we that's not just online, that api.co.org, we also distribute that with the framework and you when you're in development mode, you can just browse it. So you can, you can pull it up at any point, even if you're offline, you've still got all the documentation framework there. And we use Java doc to pass it in the source code and pull out all the arguments and lots of stuff. And that's quite nice as well. So it means that people can start changing that core documentation via GitHub as well, obviously, but it also has a secondary function we. So once we've done that whole Java doc passing thing we now let you when you write your code in the framework, the same syntax and customization is, and it will pull it in and sort of merge with core framework code. So if I pass you on a wheel to buy app, which had been decently documented in the code in Java Doc, it would be all there alongside the corn syrup wheels documentation for the API reference, which is quite nice little package. So that was just designed to sort of save time so that you could document your own for you your own applications function really, really quickly.
Michaela Light 22:25
So let's move on to some of the exciting features in CF wheels. I know restful routing is one that's currently in CF wheels. 2.0. Wait, what exactly does that mean? I mean, I know what rest is that. So a way of sending data between two different apps or API's,
but you've got some routing in there as well.
David Belanger 22:48
Yeah, I use that a lot. I since version two point, I was actually a very early adopter 2.0 because of the rest of the road. And we created an API for iPad apps. And when one of the things I like about as you have complete and total control over how your external apps communicate with your API, you control everything you control, the deletes, the edits, the the ports, what we call, you know, the guests or the posts, and you, you can really tailor the experience, you can also Taylor, what you give back to your endpoints. And in my case, the iPads in error codes in Jason strings, you know, in data, it's having complete control over all the security and all of the endpoints of your app, because we have a very handy routing table that lets you do that.
Michaela Light 23:40
And what would you How would that help you in creating your app?
David Belanger 23:45
Well, we've always had the convention over configuration. So we're still staying with
URLs that are very intuitive. So when you talk about you are you going to talk about the object you're working on usually, and the ID possibly of the other you're working on. And then instead of any other words, that's when you use those hidden verbs with the restful routing, and you can turn them on or off. So there are many endpoints that are just information only. So they're pure gets, and we don't need anything else. And certain endpoints you would never give to,
in my case, an iPad, you would never get delete, for example. So you make sure that all of that is turned off for certain access points. But you can also create special roads. And that's what I have a hybrid application where your API handles the iPad stuff, but your administrator handles everything else. And you can also control those endpoints within your app. So you can give your administrators who are logged on on the web certain features that are not available to anybody else, you have complete control of that,
Tom King 24:50
we often actually refer to it as resource based routing. So for instance, in
Michaela Light 24:56
our, in our mapper,
Tom King 24:59
which is the function we call with all the change requests, we would have, you could have something simpler resources with the name of the resource. So it could be something like cats, right. And that by default, then you could send a get request to forward slash cats get all the cats, right. And then you could send
Michaela Light 25:22
a POST request to forward slash cat to create a cat. And again, it's part of that convention that
Tom King 25:32
I'm all my control and methods are going to match up to this stuff. And I can do is one sort of little shortcut and I can open up all these access points, or I can then sort of, you know, start tailoring it and restricting it and say, so I could do something like say, hey, I've got a resource of cats, except except the Delete function within over into these cats, because I like cats.
Michaela Light 25:57
So does this mean you you've can easily have your CF wheels app, you know, expose all the model has as an API. So you can have a different front end, for example, if you're, you know, doing Angular or react or view as your front end?
Tom King 26:18
Yeah, you could approach it several ways. I mean, you could either have your CF wheels app as a pure, you know, JSON API, or you could have just one path one of these tasks like forward slash API, well, not your own ACF, but, you know, forward slash something, v1 or whatever,
that could be your JSON API as part of your larger website, maybe. So there, there's lots of it's very flexible, I mean, we can we can pretty much get what we want from it.
Michaela Light 26:52
And it does this relate to micro services at all? Or can you have the app split up into different pieces, and there will run say separately and just talk to each other, or
Tom King 27:04
we tend not to get that approach. I mean, I I think one of the going back to the slight differences between the frameworks, I mean, call box is, you know, for instance, a really good example of a very modular framework wheels is much it's much more of a slightly old school, monolithic framework, but with plugins and with lots of features already there. So you can of course use see if we all as one part of your microservices, you know, infrastructure, absolutely, I was reading the other day that you can run CFL on lambda functions now. So I don't know. Who knows, maybe you could put see if we will define a lambda function and have it as a micro service.
Michaela Light 27:46
But yeah, so I'm not quite sure how to answer that question.
David Belanger 27:49
Yeah, I think I'm with Tom on that one. I don't see it as a micro service focused framework at all.
I always tend to avoid the term monolithic because it's gotten such a bad name, when really, there's nothing wrong with having a back end app that is in one place and self contained at these certain services are still run that way. We don't need micro services for absolutely everything on the planet. It's like one of those things, it's the latest fad, you know, everybody's doing it. Well, I'm still with cold fusion, because they haven't changed that much. And they haven't been a fad for a very long time. I like that. I like the fact that I can rely on it.
Michaela Light 28:23
It's a backwards compatible fat.
David Belanger 28:25
Yeah. And it's going to be around for a while. And there's always people that know how to do it, you can always find developers to help. And there's lots of resources out there still, you know, so micro services. And I do like keeping up to date on a lot of these things. I'm not saying that progress is bad. But I have seen in many, many projects, a lot of money sometimes spent on the latest, greatest thing, and oh, no confusion. So let's just leave it and yet cold fusion is still running in that office. And what they did is have completed or it hasn't been migrated, or they decided that it wasn't a good idea to migrate. And then there are these budgets, that and this endless funding of money that is going to new ideas, when really what you had worked all the time just needed a fresh coat of paint sometimes, you know, it's,
it's just crazy. I don't,
Michaela Light 29:17
right. So what can we do, because I think that's a big problem in in all programming development, that there's a lot of
decisions that are not made for business or technical reasons, but they're made for fashion or political reasons, for want of a better name, like, Hey, is this cool new technology, we've got to use it,
Tom King 29:39
we are seeing increasingly a separation of concerns in so much, you know, the multiple front ends with a single I'm single, sort of powerful API type back end, and I'm definitely going that route in my, in my larger projects, you know, the things which justify it stuff where I might have to scale the back, you know, on AWS or whatever, right, whatever it might be, and then have, you know, Vue. js on the front end iPad app, iPhone app, whatever it might be. So I think that one that was a that was a keeper, I think we'll keep that one.
Michaela Light 30:15
So one of the other things I you mentioned earlier was you love or am in CF wheels is our am totally integrated into to that. And maybe we had to explain to listeners what LR M is just in case some of them haven't done that. So it's a date way to access your data, right object, I forget what the R stands for
David Belanger 30:39
mapping object relational mapping. So basically, instead of writing sequel statements, you make calls to the methods to do your data, because that's how we works or is it a different level know, it's the object oriented approach. So you're going to talk about your objects, like I said, the example of the books and books, you're going to use keywords in the room. And the easiest one is find, all right. So from books, you know, books dot find all with these characteristics, and boom, it goes out and finds it. But every single It doesn't matter if it's books or pencils are crayons, whatever, it's always going to be dot find all that's when we talk about the convention that we're using to find these things. So you always know what it's going to what it's going to do, because the terminology is the same. So he wanted to find everything that actually does a search, like find all I can search on my code, and suddenly have a big long list of all the fines I'm doing in the system, there's no surprise there.
Michaela Light 31:40
So it makes maintenance easier
David Belanger 31:42
it does. And it's not just maintenance to, I find, it's very good for organization. Because the other benefit of RM, which is one of the things we haven't touched on yet was when you're going to do an update, or a say, for example, we have triggers in there that will trigger before you do the same or before you do the update, or after you do the same or after you do the update. And you can run additional code. So you can actually change things together, that needs to happen in a certain order. For example, if you delete something that is important, because you're allowing an administrator to do so. But the rules say, you need to notify certain people on happens, well, you've got yourself an after delete function that can do that. And that's a great thing. Or if you need to update other data because something was deleted, you can also trigger that from the, from the RM procedures, it's, I like that very much. It's very, very well organized.
Tom King 32:34
Yeah, little top of that. So you've got all those those triggers, if you'd like. Yeah, there's also the validation part of it. So we've got a whole ton of validation functions already sort of built in, I know, call box has got, you know, a continent was called out CB around was like, the, their, their validation library as well. And, you know, similar, it's solving a similar problem, but with ours is just straight in there. So you always know, be there. And that's really good. And you can obviously do all your own custom validation and things like that, and have multiple inheritance, all sorts of stuff the or
David Belanger 33:11
am I think, if I'm not mistaken, Tom was one of the things that was in there from the beginning, it was never a plugin. But there were other things as we went along, like cold wrote and migrations that were being used by everyone that we finally decided to integrate them a few years ago. And that's what came up with 2.0,
Tom King 33:29
that's absolutely right. So cold cold rudeness, a big one, to try and migrated, pull it into the call for staff wheels to and then there's a plugin called DB migrate. And so now of course, in the call, we've got proper database migrations, and which is brilliant, the only the only thing is having to look after your own or I'm system is you do have to,
Michaela Light 33:53
it's a bit of a,
Tom King 33:56
it's a bit of a poisoned chalice. Because on one point it brilliant because we do it works across all these engines. So we test across ACF, Lucy, Windows, Linux, you know, so and, and the different data database engines which we support, which is my sequel, Ms sequel, Postgres
so great, because we know that those engines aren't going to break our stuff too much. So the actual low rpm system has stayed the same for quite a long time, you know, several years, the core of it, that is, and we haven't had code around engine specific changes in engine specific or, and so it's, but it's, it's, as I said, it's a mixed, put slightly poisoned chalice. Because, of course, we've got, you know, keep up to date, we're going to do all these tests, and we're going to make sure stuff works. In fact, I mean, it was quite sad, we had to drop Oracle Support last year. And that was because we just didn't have the people around using Oracle anymore. And I think that's quite, that's increasingly common in open source stuff, where you just go, well, hang on, we've got this, this feature, we need support. But if, if there's no one, they using it, you know, you have to make quite a hard decision sometimes and drop some of these things. So unfortunately, we had to drop our US protocol support. But as a consequence, we've put a lot more effort into everything else here, the my sequel and Ms sequel stuff, and I think we're in a better place now because of it. And we can always bring it back. You know, if someone comes around goes, yes, I will put I will put my name to this help you out.
Michaela Light 35:36
So why don't we talk about some of the stuff that's built into see if we all seem to be quite a long list of things that I found on the website, you know, database migrations and automatic documentation, all kinds of stuff. So
I think we mentioned the automatic automatic documentation part of it already, the database migrations themselves,
Tom King 36:00
I don't think everyone uses database migrations, I think they should, because I think they're great. So what it is, for us is a way of defining your database structure, but also your changes to your structural changes through time. And it's all it's a script. So it's database agnostic. And that's the most important part. So I can give my code with my database migrations, which I might have done on my sequel,
I can, because it's defined and see a script, I can give it to another developer, or who's running it on, you know, Postgres, and he can just run the migrations. And the framework then works out what work which is brilliant for me, because I don't have to then put all the database specific, you know, breaking things in my code. And it's much it makes everything much more portable.
And there's also brilliant for when you've got stuff like Docker images, and you want to just give someone your app and you've defined let's say, you've got it Docker compose file, and you've got your local database running wheels can
run the database migrations as soon as the application starts. So if you started in production mode, you can say, yeah, always run the database migration. So you can pre populate your Docker databases and stuff like this. So it just makes everything a lot more portable, and a lot, you know, a lot easier to use. So I'm a big fan of them, they start to get bit complex when you get source control. And if you start merging branches, where you might have a migration from one which relies on another and things like that.
Michaela Light 37:39
But let's talk about that stuff of nightmares.
David Belanger 37:43
The other integrations I think are really good is we have a test suite that's based on rocket unit that's integrated right in there. So you don't have to install another test suite, it's already there for you just hook into it and start using it
will do the course handling and the CR CS RF. So the protection against forgery is already in there as well. And that's fairly recent things that we
Michaela Light 38:08
will say the the cool sampling coming into 2.1 just
Tom King 38:14
yet. But that's a really good example of where that feature was something I need. So I wrote it to them. Now, the reason I could do it so quickly was because our routing system is already restfully based. So I could just look up what some options request was coming in. And I could look at our routing table and go, Well, okay, this URL only allows get input. So I could then return in my course request proper, you know, a proper response. So for developers now, instead of having to go Oh, which, you know, which had to do I set they can literally set the application setting the eternal cause
Michaela Light 38:57
under the defaults, which are in there are really quite sense for, you know, a standard JSON API.
So what about you mentioned version 2.1? What, what are you excited about in version 2.1? That's coming out,
I think most of its bug fixes.
Tom King 39:18
But yeah, there's the coolest handling got added to the list. But yeah, there's, there's, there's a lot of just small little tweaks, which I think will improve the quality of our developers lives
David Belanger 39:31
performance on the plugins was a big one to just kind of, we wanted to get it going a little faster on startup. And the the 2.0 was a major release as well. And, and big kudos to Tom and the rest of the team who did a lot of work on that everything that was in tag base before was converted over to more modern script. So now the entire code base is in script. And that makes it easier to manage and makes it easier to work with much easier to read. That was a big job on the 2.0. Really?
Michaela Light 40:02
And do you have a release date for that? Or
Don't hold me on it?
David Belanger 40:11
Well, we are 65% complete. So we're getting there. Okay.
David Belanger 40:16
You don't yet know.
Yeah? Is there anything else in CF wheels, you want to share with the audience that boy,
David Belanger 40:24
what are the ones I use all the time form helpers, Tom mentioned it. But really the form helpers, I'm using that probably over 50% of the time, it's something as simple as start a form tag, couple input tag, couple of select tags, and the form tag. And when you use those keywords, you're giving the system the power to validate what goes into those fields, the power to show airs on what goes into those fields. So if you actually, if you do the validation on the server, and something doesn't pass, it will kick it back to the form, it will show you exactly the place and you can customize your errors that are returned. And that's also when the validation comes really handy. Because you can you can really give some detailed information to the user of what did you do wrong, and how can you make this better. And I use that a lot.
Tom King 41:12
I also use those from a really easy way to manage user interface, the user interface part of you know, most websites, because because you're sort of abstracting away your your form to buy wheels, if you need to do things like just casually change what CSS class comes up on, you know, on an input or type of input, you can just change it in one place and it propagates you know, it's then everywhere. So I I perform help us when we're a big help help her to me when I started using CF wheels.
David Belanger 41:50
Michaela Light 41:52
Now, I know you mentioned earlier that the CF wheels community is small, but but friendly.
How would people connect with the community? Where would you find CF wheel folks?
Tom King 42:06
Well, we've got the main thing is probably we've got a Google mailing list. And we obviously try our best to, you know, answer ASAP. any queries on that. But we've got CF wheels room on the safe and our Slack channel. And, you know, we get a pretty quick response from that because it contains my phone and annoys the hell out of me. So,
Michaela Light 42:33
what else we got, we got a blog, those tend to be more sort of informational releases, sort of, you know, when, when the next versions come out, or whatever. And then, of course, we've got our GitHub issue
where if you've got any problems, you can put something down their
clothing, and there's Twitter and YouTube as well. But yeah,
it's great that you're coming on the CPI podcast and sharing about this, I have to be honest, I really don't see CF wheels, a lot of conferences for cold fusion, is that something that you're looking at changing, or
I think, David, you, you, you're gonna speak or something sooner
David Belanger 43:27
I am. Well, I'm going to get into the box. I'm not actually speaking about CF wheels, but I will be speaking
the thing, let's see if we'll just like I said, it's a it's a smaller framework, and it's a smaller community. So we don't have our own events. I know that and I want to mention just a few names to from from the history that I've learned and how I learned as well, Mike, hanky at one point was a big, we almost call them an evangelist of CF wheels. He put out a lot of documentation, a lot of blogs, and he was at a lot of presentations. And really, we're getting a lot of users from word of mouth, people that say, this is really easy to use. It's been supported, it's being supported. And it's still active, which a lot of fame frameworks are fading. And there's, there's a lot of new blood, new blood, very new blood in this team I started last year, you're not going to see me very high in the contribution list. I just started. But if you look at the contributors list on the GitHub, it's if there's thousands and thousands of commits by certain people in there, excellent commits.
So all these years, the project has been maintained, especially now currently, Tom puts a lot of effort into this project. He's He's organized quite a bit. And he was he asked me to go on last year, and I was this is my first attempt at being a big part of an open source project. I knew there was a time commitment, I didn't know it would be as big
and I still don't put in a fraction of the time that Tom does, and I need to do more of that. But I think it's, it's good to, to get the word out there that if you want to be part of something, sometimes it's good to start with a small project because you do have more of a say
in you are using it. I like contributing to the things that I use, and I use every day.
Michaela Light 45:12
That's great. I mean, it sounds like you're doing wonderful work. It just, you know, I'm just thinking hat. What would it take to get the word out on CF wheels to more folks. So
David Belanger 45:25
what was probably included in the book CF alive? I don't know. Just saying.
Michaela Light 45:30
that's a great suggestion. I'm working on the second edition of that. So I'll make sure it's in there. Excellent. Maybe I can get a quote from from you about CF wheels
David Belanger 45:40
are absolutely no, the screen casts help a lot. The blogs help a lot. And this isn't this isn't a non personal way. I love conferences. I do, but I can't always afford them. Especially being in Argentina. I can tell you there's not a whole lot of cold fusion stuff a lot in America. I know,
Michael, I'm sure there's a question coming soon. I'll wait for it.
But I've heard many, many, many podcasts and I know what you're going to end off with. So I'm going to wait for that. Yeah.
Michaela Light 46:08
What about you, Tom? Any thoughts on how we can spread the good word on CF wheels? More? Two more folks.
Tom King 46:15
I think I mean, for for me, part of it is actually engaging people who are already in the CFL world a bit more. I mean, I think there's a community we've probably got quite a lot of people we got a lot more people than we know about you know, there's a lot of nine to fivers. It's bit of a derogatory term, but you know, people who are using see CFL generally in their in their jobs who don't necessarily take the time to engage outside of that sort of little bubble. And it'd be really nice to sort of try and break through on that a bit.
Michaela Light 46:56
So yeah, let's, let's move to the final questions in the podcast. This one is why you're proud to use cold fusion
David Belanger 47:05
because it works. And it's always worked and it will continue to work.
Tom thinking is
Michaela Light 47:19
your turn. All right. Sorry. Yeah,
waiting for some extra conclusion from you
know, it was one of those Chilean statements, you know, we will fight them on the cold fusion beaches and in the landing fields, and it'll always be working
as a quote, I've got to write that one down.
Tom King 47:44
I mean, I echo David's thoughts. It's always worked for me. But for me, it's always been really quick to do what I want to do. And now I've got more modern tooling with the command box stuff and see if we'll switch Of course, I I love you know, I I feel like I can take on any project really, which is really, really cool.
David Belanger 48:10
Michaela Light 48:12
Alright, so the question I the other question I always ask folks is, you know, confusion sometimes has a bit of a bad rap as possibly dying or legacy and certainly in our state of the union survey, that's often the top concern people have. But my question is, what what would it take to make cold fusion more live this year?
David Belanger 48:36
All right, I was ready for this one.
So I've got a couple of points on this one more immediate for me, and a lot of people don't even think about this, but I would say start off donating to Lucy, I'm not gonna lie to you in our shop. We don't use Lucy, I use it personally. But I don't use it at work. We do use ACF at work. But in Latin America, we shied away from ACF many years ago, because it was expensive and Latin American general couldn't afford it. So Lucy was, it was a very welcome addition to the cold fusion world because it actually for me, it was the PHP competition that we could instantly talk about. And say, if you want to use cold fusion, you can, you don't have to pay a big price of for certain get your server and get you going. And that's a big selling feature. Again, at least in Latin America. The other things that we're trying to do is to hold more cold fusion information sessions, especially for people that are not developers. Because you're right, when someone Google's cold fusion, say, God, these people are talking about a language I've never heard of, let's find out what cold fusion about. It's like, whew, what's this online, you know, these blog posts, and I don't know why that one cold fusion is dead, keeps showing up on Google. If I could figure out a way to kill it, I would. But that's our biggest problem. And the other thing we do is propose cold fusion. And every single proposal we put out, and we talked about it right there. And the proposal that this is something that's worked forever, it works, and it will work for your project. And we have some names to back it up, which I like. And this is all immediate, when we're talking long term. I'm big on education. I know, I know, Adobe talked about it a lot about the curriculum and the college and universities, I think it needs to go beyond that. I think as developers, we need to personally talk to the people teaching the classes. Because while it's good to have a curriculum out there available, unless the person teaching knows about it, it's no good. So we either need to teach the classes ourselves, which I've done, or get the teacher to actually adopted in their curriculum.
Michaela Light 50:39
That sounds great. And I'll just add another point on to the Lucy. Because right now, Lucy is much better for cloud support on the licensing front. I mean, technically, Adobe confusions fine in the cloud. But their licensing, to be honest, is not so great.
It clunky, it's not just pricey, it's kind of hard to understand and doesn't, you know, I think they just tweaks their licensing to make it more friendly. But like in the cloud, when you're using Docker instances, you might have something that pops up for an hour, you know, a server virtual server that pops up for an hour and then goes away, and they don't really allow for that kind of licensing on a per hour basis,
David Belanger 51:24
when I saw that was an AWS when they actually announced that years ago. And I thought, yeah, and then we saw the implementation. Yeah, and yeah, it was a little bit expensive.
Michaela Light 51:36
Yeah. See, it's kind of expensive. So I think that's something that hopefully Adobe's listening to, I've certainly nudge them several times that, hey, your cloud licensing needs to be better.
David Belanger 51:50
Michaela Light 51:52
Anyway, let's move to Tom, what would it take to make cold fusion more alive this year? Tom?
Michaela Light 51:59
think not quite as good an answer is David. But I would bang on again, about the open source stuff. I I think
Tom King 52:09
one of the things we could do as a community is just open source of more stuff, apps, things which do which solve people's problems few years ago, open source, the room booking system, you know, real simple, badly written badly written again, look at the code and look at it with your eyes.
But if it exists out there, and we use it and then come across CF wheels, and then for us, you know, that was good, and people come across, you know, start installing and ACF on their servers to run these applications. And I've got now got a whole bunch of clients who are just running this thing and use me as support
and now they have you know, CML in their stack if you like, it's part of their solution. And I think the more of those things sort of things that we can get out the better
Michaela Light 53:04
so this is like your secret route to worldwide domination by CF wheels and cold fusion.
Yeah, just released everything for free.
Michaela Light 53:16
So I know you mentioned you're speaking into the box. David, what are you looking forward to this year's into the box?
David Belanger 53:23
Oh, I love the last year. I loved seeing everybody in the community. You see a lot of names repeated in our community, because we are a small community in the CF world. But the artist guys like I said, they're so dedicated and so passionate and so enthusiastic about presenting cold fusion and funny like, I really enjoy a lot of these talks. Brad would I find to be one of the funniest presenters I've ever seen very witty, live demonstrations with, I still don't have the courage to do, you know, coding out there in front of everybody. And he makes it work. Great. I'm going to talk to to Pete this year. I want to talk a little bit about his migrations and what he's doing with already on the cold buck side. Not so much to steal, just to know what kind of what's out there, what's, what's new,
what's new and exciting. And we know it's because I think that's how you learn just by comparing notes with other people who are doing it a different way.
Michaela Light 54:19
I will say we're also shameless.
We see a good idea we will steal it. Absolutely.
Michaela Light 54:28
Great. Well, I look forward to seeing you there. And maybe at CF summit in Las Vegas if you go to that.
David Belanger 54:35
So I'll be back in Argentina by then. But I know you guys are going to have fun if you go. Oh, yeah.
Michaela Light 54:41
So great event. So just to wrap up, if people want to find CF wheels, or Tom or David online, what are the best ways to do that?
Tom King 54:53
Definitely started the website. So just to see if wheels.org all the links for everything you'll need to on that front page. So we've got our blog, GitHub repository Slack, you know, everything's on there.
Michaela Light 55:08
There's also a safe we'll see if on wheels Twitter
Tom King 55:16
I've got a slightly odd username which is at Neo Kenny, which is spelled n ee k o n ID. I think so you can catch me on Twitter that or I've got a [email protected] alto.co.uk
David Belanger 55:35
Yeah. And my Twitter handle is Bella tech. Dave and my the company I work for full time is in korea.com.
Michaela Light 55:45
Fabulous. Well, I really appreciate you coming on the podcast today and sharing your enthusiasm for cold fusion and see if we'll
thank you for having us. Thanks Michaela.