Find the show notes and download the episode here
Michaela Light 0:00
Welcome back to the show. I'm here with Luis Mahato, CEO of audit solutions, and we're gonna talk about four. That's four ColdFusion books that he's either written or about to publish real soon now. And welcome, Luis. That's Yes, thank you for having me. This is really, really exciting. It's been a long time. It has been long, too long, but we're making up for lost time. For those of you don't know, Luis, he originally was born in El Salvador. And then he moved to Houston, Texas, and he's been doing cold fusion for decades now. And odor solution is the company he founded together with his brother and big team now not only in the United States, but also in El Salvador as a team as well. And they make all those box products called Box command box test box. If you think of any English word and you can put box after it probably there is a box product, either crying it or coming.
Trying yes, no, you're incredibly productive Luis. Really appreciate everything you do in the ColdFusion community. And also, you guys started the moderniser die podcast. So another great contribution there. So today we're going to talk about the books you've written, the two you've published, we're going to talk about and I actually have one in my hand here, I will just wave around, signed by the author at CF Summit. That book in case you couldn't read it as I waved around as modern ColdFusion CFML, in 100 minutes. So we'll talk about that also 102 codebooks ht, HMP see tips and tricks. And then two new books coming out this year. One about command box one about test box. And there are even other books we are not allowed to talk about that you published in the past will remain secret and hidden.
Luis Majano 1:57
Up to date, if you're using older versions, you know, if you're using older versions of that software, they're still relevant.
Michaela Light 2:03
Okay, well, then maybe we will mention them. Yeah. So yeah. Tell us about your the first book that you published, learn modern CFML in 100 minutes. So why did you write this? It's been a few years since about three years since I think you published this.
Luis Majano 2:16
Yeah, definitely. I mean, this actually, the first kind of brunt of the workload was done by Mike Hankey. Great guy. I met him a long time ago. Actually, I have to catch up with him. But Mike Kanki took the time to kind of start this this this idea of CFML and 100 minutes, which was made famous by Ruby, right. So Ruby created a, an online book on alignment. Trent called 100. What it was a Ruby in 100 minutes, or Ruby and Rails on 100 minutes or something, I think it was just Ruby Ruby in 100 minutes. And Mike kind of started it and he put it on GitHub, and it kind of got a little bit of traction, but he I don't think he ever completed it. And I spoke to him and say, hey, I want to I want to do a modern version, can I just you know, grabbed some of this content. And and he agreed. And then basically, I started this initiative. And as you know, you know, we're trying to revive and kind of disseminate that CFML and ColdFusion is modern, right? This is the stigma that we have that it's you know, it's a language that has been around for many years now, people still think that it's the same language that it was 20 years ago, right. Like with anything, it has evolved, just like the other languages that have been going on around like PHP, and Java, which people still think that PHP is still very legacy. And it's has some modern concepts as well. So that was my idea is I want to take this to the next level, I want to basically provide a modern approach to the language and treat this as for not only for newbies, it was mostly targeted for newbies to furniture, but it has grown into also a nice reference, right for people to actually say, hey, I want to I want to see what's up with the variable scopes or you know, what about null and nothingness, right, or threading? Right. So we tried to appease both kind of sides, the the newbies and the advanced, folks. But my intent was definitely Okay, let's take this and push Martin CFML. Document all the new modern constructs, how to document how to write and and, you know, we still have big plans for it right now, it's been, like you said, about three years since the initial version. So it's time for it's been kept up to date, especially a lot by the community. This is a great thing since it's open source. So I've gotten tons of pull requests, I can look up how many pull requests we have received, but tons of pull requests, and it's still up to date. And we just want to keep updating it I want to add more integration integrations with what's the service that actually allows you to execute CFML try CFML. So I want to add those so you can actually have little snippets that you can actually execute and start Working with it.
Michaela Light 5:01
Now, you said something interesting there. Because when I think of buying a book, and I've got a, you know, a print book here of this one, I can't really do a pull request. I mean, I can pull out the pages, but you're saying this book is not just a print book? It's actually in Git or some similar open source repository. Is that true?
Luis Majano 5:20
Yes. So this was my gift to the community, I know, reality, make any money out of it. It wasn't about the money, it was more about, basically, for us to push forward, right, and somebody has to push. So that's, that was the intent, let's open sources as make sure it's out there that the entire community can collaborate and contribute from it. Right. And so it's on GitHub. So basically, we use a service called Get book, which is what we actually use for all of our documentation, great company, great products, really, a shout out to them. Because we manage all the documentation for everything that we have. We have over, man over 50 books for documentation online. Thanks to them, they sponsor us. And big shout out to them. But we use that. So this allows us to provide collaboration, like you said, you know, you can't pull out the pages or, you know, remember the good old days, you know, the irata, email, right that people Rata and say, oh, there's a typo on page 53. Right. But now, you can just go on page 53, click Edit in GitHub, there's a little button there and you go to GitHub, you edit it, you add your collaboration, and you get immortalized in the book.
Michaela Light 6:37
Wow. So you have hundreds of contributors who have given you suggestions or corrections. And you can see all of them in the Git book repository. Yes, yes, definitely. Very excellent. And then also, you can buy a print book from Amazon, or the Kindle version, or I guess you can go to the artist website and buy the PDF, if you want to.
Luis Majano 7:02
Yeah, so the printed version is from probably a year and a half. And it'll be due with an update pretty soon here. So that one, of course, we have to keep up to date. So basically, what happens is that when comes to a time where we say, okay, it's ready for a cut, we basically actually have a command box module that actually creates the PDF for us, and actually adds all kinds of nice styles and printed stuff. And then we can use that and send it to Amazon, and then Amazon will publish it.
Michaela Light 7:33
Wow, are you telling me that you take the guestbook, and you use some ColdFusion code to make a PDF? That's been sent off to Amazon?
Luis Majano 7:42
Yes, yes, actually, that's a very interesting, we should make a webinar that I have some
Michaela Light 7:47
lovely, it's very cool using ColdFusion technology itself to publish the book.
Luis Majano 7:53
Yeah, I didn't put the link for you. But that seems very Yeah,
Michaela Light 7:57
add the link into the show notes, we'll add, then, I'm just going to, if it's okay, I'm going to share the screen so folks can see the Learn model, see ColdFusion in 100 minutes and see what we're talking about. For those who are on video, I'll talk it through for those view, not on video, once I get my share screen to work. There we go. And I think I moved off the wrong tab. So here we are, you can see there's a table of contents. On the left side, we've got an introduction, what is called Fusion that talks about command box, because of course, that's the way to do ColdFusion these days. And then it goes into detail on different aspects of the ColdFusion language. You know how different kinds of variables and scopes and JSON and numbers and all kinds of other modern things there. So if you go to modern hyphen, cfml.otterbox.com, you can see that, and then there's even bonus stuff here on application CFM and file handling and all kinds of other stuff. So and then if you dig into any of these things is getting into the variable scope, then you've got the chapter in the book, and it has some code examples, explains it all. So now oh, what's all this stuff on the right hand side, this is a contents of the section. And then you can there's a link to go to get hub to edit material. So if we go on that it'll slip over to GitHub, and I'm guessing some ColdFusion code so here's the get book. And you can see you've got the same content as the book but now you can make changes and do a pull request or whatever you want to do. If you see a mistake or you see something that you think should be added. So very cool. So the share Yeah,
Luis Majano 9:59
yeah. That good book exporter was built by Brad and Scott Steinbach. So this Yeah, it's it's pretty sweet. It actually uses a command box task and basically it, it uses the export of get book. And it goes through the book basically. And Bill says awesome PDF using cold fusion. So we actually use cold fusion to actually build the book. And that produces this awesome, great PDF that you know, they they really went all out on it because it allows you to do a table of contents, it allows you to even style it, you can do coverage image files, you can do like different highlighting themes, page numbers, like they went all out, really. And so it was really fantastic. So we that's what we use for the printed books.
Michaela Light 10:50
That's excellent. And and is it really true, you could you could learn ColdFusion modern cold fusion in 100 minutes, or is that a bit of a publishing hyperbole?
Luis Majano 11:00
Well, you know, I tried to, and this is something that I took with the the newbies that we had from orchesis V. And I'm gonna actually start timers next time, because that was the intent is to actually see if they can actually do it in 100 minutes go through the first part of the first portions right? And 100 minutes. So I the last time I did it, I did it less than 100 minutes. But obviously I already knew the language right? So I don't count.
Michaela Light 11:32
You go. What's a great resource, excellent book very clearly written, Luis, good job on that. And I think it really is something every ColdFusion developer should check out. You know, if you're not sure whether you want to buy the print book or the Kindle book, just go on the free version and read it a bit and see if it's useful before you pay money. So but even if you'd been doing ColdFusion for 10 or 20 years, I think you're going to learn new stuff in here, because it's hard to keep up to date with all the new stuff that's being done in ColdFusion.
Luis Majano 12:06
Yeah, definitely Canada, we have an intent right now, obviously, I'm writing the other books we're going to be talking about. But my intent is to actually for each section is to actually do a small video for each section, and then put that as a CF cast series. So that is still something that it's in the roadmap for us is that once we do our big push update for it and get new, you know, new printed books, is to actually do a video session for each of those sessions. So apart from having the written book, you will also be able to have the videos for each of those. But those will be basically a CF cast series that you would have to purchase and subscribe to to get access to all the videos.
Michaela Light 12:48
I just interviewed Eric Pearson about what's cool in CF casts, so I'll link that episode in there. And if you haven't checked out CF casts listeners, then amazing video training for not just box products, but does database and other ColdFusion stuff. So definitely worth checking out. Let's move on to your second book that you've published 102 Cove books HMVC tips and tricks. Now why is it not 100?
Luis Majano 13:20
A mouthful, huh?
Michaela Light 13:21
It was a bit of a mouthful.
Luis Majano 13:23
I know. I know. It was done with a purpose like that. It was jokingly done like that. So it can be long. But
basically, the idea was to do just 100 tips, right? Just, you know, like everybody does, like all the seven steps to success or you know, all these numbers. So we just said, Okay, let's do I'm going to do 100 100 tips, right? That was my, my my intent. Right. And then I remember hearing a podcast, I think it was Craig Groeschel. You know, he's a pastor and he's also a leadership coach and stuff like that. And he was like, interviewing one person can't remember who he was interviewing with. And he was like, the they have done 101 pushups, right? And they were like, it was because it was more than 100. Right? And then we got into the job like, okay, but two is more than 101. So we're gonna go the extra mile this one so it just became a joke inside a wart as a basically saying that we wanted to be just dumb overachievers, basically. So we are like, No, we're gonna go even beyond the 101 to 102. So Brad actually wanted to do 103 For command box because he said he wanted to be better than that.
Michaela Light 14:40
But he didn't. He did. 102 I think?
Luis Majano 14:44
Well, it's still in debate right now. I was in debate. It's in debate.
Michaela Light 14:48
Well, cool. So why did you write this book?
Luis Majano 14:52
You know, I think this was once we started having CF casts and it was getting you know, we're getting all these snippets of video It was an odd series and, you know, people really learn from small Bible trubel kind of episodes, right? So I said, Well, why don't we do the same for for coolbox, you know, everybody wants little tips. And there's lots of tips and tricks that we have, obviously, building the actual libraries, right. So I said, I would be cool if actually, I just did like a little tips and tricks, small chewable, you know, tutorials and guides, and put them on book format. So that's how so it came about. And I started one morning and basically started writing, you know, five tips every morning. So every morning, I would dedicate, you know, 30 minutes and those 30 minutes, I write five tips, continue and continue to continue. So I kind of come addicted to it. And every morning just writing these tips. And it was great. I got some from the from the team, but a team gave us really good feedback on it. And the intent is also to make videos so via another videos, a series for these tips and tricks, so that way, people not only have the chewable bites in book form, and a readable format, but they also have the chewable bites and video format.
Michaela Light 16:12
Excellent. So who is this book for?
Luis Majano 16:16
Really, this is for all kinds of Chromebox users, there's tips for newbies, right? There's tips for those that are starting to use the platform already. And there's also for the advanced forms, we have several advanced tips on this as well. So we try to cater for all the different levels. So coolbox users here. So some might be very newbie style, right? Going to try to put those at the beginning. So the book will progress from very simple tips to the more advanced tips.
Michaela Light 16:50
Oops, that very cool. So this book is is only an ebook and a print book. Is that true? Or is it also have the Get Books
Luis Majano 16:59
thing? No, no, this one is right now just ebook like you say and PDF. It's not in printed format at this point.
Michaela Light 17:07
I'm not sure. No print book. No,
Luis Majano 17:09
there's no print book for these ones. We actually tried a different platform for writing the book on this one. So it will still in consideration to do it. Obviously getting the ebooks and the PDFs out are easier than the printed ones. Right, then you have to deal with versions with the prints and stuff like that. So we're still considering and I think if people really wanted they would do it. So if you're interested, let us know. And we'll do a printable.
Michaela Light 17:40
Very good. So this book is only available in the autists site, either as a PDF or an e book. You can't get this one on Amazon. I don't think it's not right.
Luis Majano 17:54
Yes, that is correct. So this these books are right now are just the ebooks are PDFs. We use a new writing platform for them to create. Oh, yeah. So they look really nice, as well. And because it's obvious, it's not open, it's closed. And we do have plans to print it if people have interest in it. So if you're interested in receiving these as printed books, then we'll definitely do.
Michaela Light 18:20
Very good. Yes. What's the new PDF book generation thing you're using? If you're allowed to say?
Luis Majano 18:27
Yeah, so we use an app called Ulysses. So yes, has been around for quite some time, and really enjoy working on it. Because I can synchronize for all my devices, so I can focus on working on that. But that's that. That is why basically, I Well, at the ultimately I just need a PDF to send to the prints, but we never did it. So if people are interested in the print, then we will do it.
Michaela Light 19:00
Excellent. And then what kind of things I was looking on the artists website and I see the page for the book and I see some cool things. Let me just bring that up. So folks can see that or watching on video. And I'll talk it through for the folks who are not on video. So here you can see a cute cover the book with super autists man or whatever that guy is. Yes, carrying a light bulb with 102 tips. And you can get 10 Tips free. And here are what's included environment variables, fluent if statements command box code box commands using a struct for query strings and so on. So those are the first 10 tips that went on lots of cool stuff. I thought those were sections in the book but they're actually the first 10 tips and
Luis Majano 19:53
you can see all of the tips there. So if somebody is interested in say, hey, I want to scroll
Michaela Light 19:57
through. Yeah. Oh, okay. Yeah, cuz See, let me just quickly scroll through. So lots of cool tips you can get there if you're doing cold box. And sorry, my brain doesn't work with so many box products, it's hard to pick the right one. And for those of you don't know, cold box is a ColdFusion framework. So it's an object orientated framework for organizing your code and making app development easier. So, tip, yeah, definitely I just checked, there are 102 tips in there. I thought for a moment there. I was gonna say only 100. So and then here's how you can order it on the page as well. So that's that book now. Have people been giving you new tips to add into this? Or because it's not open source? So it's a little hard to do. For Pete, you people can't do a pull request on this. But can readers tell you other ideas? Or how does that work?
Luis Majano 21:04
Well, I think that's a great a great idea to break up, I think it's something that we want to add on the on the website where people can submit their tips. And for the next kind of write through, so we'll be adding that and B, then if somebody wants to add a tick or wants to see something or request something or a tip to be written, we want to make sure that communication is there so we can get it and write it.
Michaela Light 21:26
Fabulous. So those are the two books you've published. There are also some books we'll mention in a moment that you you did publish in the past, but are a little out of date. And so let's talk about the two books that are going to be completely up to date that are coming out real soon. Now. The first one is 102 command box tips and tricks. So tell us about that.
Luis Majano 21:50
So Gammons idea So Gavin picking from the modernize or die podcast, wanted to see a command box tips and tricks as well. So we were like, Okay, let's do it. And I set up the organization for it, and we're starting to write it. And then we're gonna get more tips from from internally and workers and, and start right, but it's started already takes a few months to kind of compile and go through this. So I'm expecting at least have something by fall. So hopefully by into the box, that will be a great
Michaela Light 22:23
Wednesday out of the books this year is it isn't timber last week of September? And if you've decided where you're going to have it, or is that still a mystery, it is here in
Luis Majano 22:35
the in the Houston area, we're having a four venues that we're deciding on trying to do a little change up for our location, we want to do it a little bit more fun. So we're still in negotiations, but it'll still be in the Houston area. And September 27 28th, and 29. Actually, 23rd
Michaela Light 23:00
is the three day event this year.
Luis Majano 23:02
Yeah. So we are bringing the the workshops back again. So finally, again. So we're gonna have one day full of workshops, and then the two days of conference.
Michaela Light 23:15
Very nice. So you're hoping you'll be able to launch this book? And it sounds like this is a bunch of tips for beginners and medium and advanced users of command box? Would that be accurate? Or do I get totally confused? No.
Luis Majano 23:29
We're trying to do the same thing as the Kovacs one, right? We want to target the newbies, the mediums and the advanced. So that is the intent for the command box one, for sure.
Michaela Light 23:42
And for those who don't know, command box is a really great way to run ColdFusion servers to have a command line interface to ColdFusion to do package management probably does a whole bunch of other things I'm forgetting. And I recently had Brad on the show, and he was telling us about all these add ons extensions, I think they've called that he has created or other people created for command box. So I'll link that in the show notes. But if you guys listening or not haven't tried out command box, I mean, I don't think it's mandatory that everyone in the ColdFusion world should use Command books, but like it's very good suggestion. Because it makes it easier.
Luis Majano 24:22
Yeah, I think you have to go back to the modern approaches, right? And if you go to a JavaScript guy, and you ask him, How do you do dependencies, he's gonna say npm, right? Or how do you actually execute things on the CLI? Who's gonna say npm? Right? Go to a PHP guy's gonna say composer, right. So you know, we have all this we have, we have had all this and CFML for a long time. And I think that it's still but it's still prevalent that people do not know that ColdFusion has a fully fledged package manager available to them. Right in combination with forge box, you know, they can probably
Michaela Light 24:59
wait a minute, I'm just gonna wait interrupt you this, some people listening may not even know what a package manager is and why they should use one. That's a great what is a package manager. So
Luis Majano 25:08
let's say the good old days, right, the good old days, I'm building a new CFML app, I know it built the CFC that did file manipulation, right? It's somewhere on this project, I'm gonna go get it right, I'm going to copy paste it and put it in my new project. I know I'm gonna use maybe jQuery, right, so I'm gonna go get our jQuery library from another project where the web, put it in my includes folder, and then maybe I use my own security for my application. So I'm gonna go get another couple CFCs that I that I built previously, right, and just copy paste them into my new project. And that was the way it was right? It was like you're scouring your, your filesystem. And you're scouring the internet for all these, you know, utilities and composed set of features in order to start building your new app. Right? And that's just the way it was, right? That's the way it was. So you know, later on, you know, get came along, right. And you have the concept of good modules and get sub modules. And you were like, Oh, I'm going to separate them now into different, you know, repositories, right. So now these libraries were pseudo reusable, right? Because they could be separate on have its own lifecycle and its own git repository, and then I would bring them into sub modules, right. And that was kind of like the poor man's package management, right? With the advent of all these tooling in many languages, right, the concept was to have a CLI tool that would basically scour a repository or a directory for you, for these packages, right. And the package is basically one file or many files. That's it, as long as it has one descriptor, right? An actual file that can tell you what the name of that package is the version that it is, and that's it. Right, that's the only thing that is required, the name, the slug and the version. So this way, you could take that old kind of approach where you did things manually, basically, and say, Okay, I'm, there's a software directory that's available to me, I can actually search for packages and pieces of software, and that directory in the CLI will install it for me, right in the right place from the right location. And then manager for me, right? If there's updates, I can just type outdated, and it'll tell me which packages are outdated, right? Because maybe I am not the author of these things, right? Maybe I'm using a manipulation library when an array library, a Collection Library, so the intent is to bring maintenance down by reusing projects and in libraries that you know, you or the community has built. Right. And I this is really important for modern development, because you don't want to reinvent the wheel all the time. Right? We need to be agile, we know deadlines aren't here, right? We need to be doing things rapidly. Now, in most of these libraries and pieces of software that other people have built, you know, there's a whole gamut right from the really badly written to the ones that are, you know, written and published worldwide with tons of tests and coverage and documentation, which is at least what we tried to do, right. But this is so important for modern developers, this is not for confusion, is it for all developers, right? In any language, you need to be using some type of package management to bring sanity and organization to your organization? You know, there's so many tools to even tell you about things like security risks, right. So Pete Freitag, you know, our security guru in the ColdFusion world, right has several command box packages that you can use to scan other packages to make sure that they don't have vulnerabilities. Right. So you start getting into all this advanced features of the language that are there, right, and I believe forge box has almost 1000 modules right now. Right? So you have over 1000 libraries that are available to you, as a developer for you to do your job. Right. And if a library doesn't do exactly what you want, well, you know, forget, you know, at what you want, and send it back to the author, right. But it still baffles me that in the CFML world, people are not using this advanced tooling. And then they go to a node, for example, and they see NPM they're like, Oh, this is beautiful. This is great. Right? And I was like, we have the same, right. And even better, right? We might not have all the packages that the that an NPM ecosystem has yet, right. But the tooling that we have offers so much more than the majority of these package management's command box has evolved so much into task management, package management, repple tools, the server portion is on it. I mean, these were basically running everything on command bus for production. Now it is even faster or the same as even some nginx or Apache web server. yours. Right? Wow terms of serving files, Brad has done a huge extensive
optimizations on this for production that, you know, even if you just started up as a traditional web server, it is as fast as an Nginx. And as an Apache with lower memory footprints this is this is not by are doing, we actually use an open source project called Undertow, which basically powers J boss, the Wildfly project. So, and we are collaborators, actually, with J boss, we're actually contributors to J boss project. And, you know, it just is a very scalable, high performance servlet engine, right, so that command box has all these facets, but it all started with package management, right? We wanted to bring the sanity of organizing your code, right? So you don't have to do things manually, you know, there's so much room for error nowadays, if you start doing things manually like that, right? You're copy pasting from something that maybe had a security vulnerability, right? Which happens all the time. Right? So at least with this, you can even just run a command, and it can tell you, Okay, these are outdated, these are have security risks, right? Or maybe these ones cannot use an organization, right? So it's really important for any developer to start leveraging these modern tools for their development. logs to be
Michaela Light 31:21
a whole lot of cool for everyone to be using packages to use open source modules from Forge box. You know, I have talked to some folks who seem confused, whether they're a company even allows them to use open source, but I think if you just use it, you're not going to get in trouble. You know, yeah, I think maybe some hyper secure government organization, maybe they get excited, but I think your average organization, they like to save time, get things done faster. So
Luis Majano 31:55
even in government, you know, they've even had strict mandates that, you know, things should move into the open source arena. And, and it might be counterintuitive, but the when it's open, you know, you actually can see vulnerabilities, yes. But people can patch those vulnerabilities, right, it's not the same as just having a team of four people, or a team of 1000s, around the world that are collaborating and helping the platform stay secure. Right. So that's a big advantage of open source.
Michaela Light 32:24
Definitely is, so check out 102 command box tips and tricks. And there's also separately an ebook or tutorial for getting started with command box. It's not really a book, it's more like an online thing. So I just want to mention that to folks, if they're like, Well, wait a minute, I haven't even got started with Gamal not that it's hard. All you have to do is download the program and run the executable. I mean, it doesn't even require an installation. You know, it's not, not whatever.
Luis Majano 32:52
Really, yeah, we tried to make it really easy for you just download the binary, start up the binary and you're in our shell, and you're good to go.
Michaela Light 33:00
Yay. Now, you mentioned you've got a fourth book, right? coming out this year, what was that one called?
Luis Majano 33:09
So this one is 102 test box tips and tricks. And trying to follow this the same pattern just for fonts. But this one, I think it's sorely needed for developers and companies alike. Everybody wants to do testing, the majority don't do the testing. Right. So I think apart from giving the test box tips, I think I might just squeeze in a TDD and BDD word in there, which also makes the longer for playing for words there. But I think it's so important. What
Michaela Light 33:44
was that word? For people who don't know what you're talking about? It sounded kind of kinky TB. BDSM something? Yes. No test driven development, test driven development,
Luis Majano 33:55
will be TDD. And then BDD will be behavior driven development.
Michaela Light 34:00
So what's the difference between those two? So test driven development? Sounds like you write the tests first, then you write the code, is that
Luis Majano 34:07
correct? Apart from that, obviously, these this is a process, right? So test driven development is the process of beginning with the tests right, beginning with those specifications for a unit for a specific unit. Right. And that will be a specific CFC, for example, right? And then you write the tests, you write the implementations, you verify we refactor. You start the process again, right. But the concept of TDD is focused on the unit. Right? And this is something that yeah, it's great. But eventually, it can become very boring, right? And you end up doing basically what's you know, and then in the real life application, you're one component doesn't do everything right. There is a collection of components, right? And not only if you're doing components, but let's say you having an MVC framework, right? Then you have handlers, right? You have views, you have layouts, right? And then you also have your business logic. So then you You start writing all these units, and then you start basically creating mocks or situations where you can't have control of inputs and outputs, right? So you have start creating these kind of virtual or mockable objects in order just to verify that that if statement actually works, right? So TDD in concept is fantastic, right? It's great. But it has its limitations, right? And I can tell you by experience that it gets you into what I call a developer paralysis, right? Because I'm, I'm there, and I'm paralyzed now, because now in order just for me to test one function, I've created over 20 lines of markable objects and mocks just to test one function, right? So it can be very tedious. It can give you that sense of paralysis, where you're, oh, my god, what am I doing this? I'm spending so much time now doing this test code. And the truth is that most of the time, we're going to write code that's pretty much untestable. Sometimes, right? That's a fact. Right? So then we have to start thinking, how do we refactor code? So it actually becomes testable? Right? Some cases, we can even create mocks, right? So it's not easy. Let's put it that way. Right? It can start very easy. The typical examples, even the textbook examples that we have on live TV are like a calculator, right? But they're in real sites. And in real life scenarios, it takes time, it takes focus, and it takes discipline, right. And I would be adventurous to say that the majority of developers have that small add where they don't want to do that, right. They want to get the job done, right, and get verified and move on. So TDD, even though it's great, right? It has its limitations. So BDD is basically the evolution of that, right? So the tooling has basically enhanced, and basically to provide a behavior driven development. So in this case, instead of focusing on the unit, you focus on your requirement, right. So this is basically like unit, you start from the bottom right from the from the inside, and you go out, right, but with BDD, you go from out to in write. So it's basically a matter of perspective to see now, how you want to write this requirement. So there is even different languages, because I believe it's a language called cucumber, for example, which allows you to write these feature files in human language, right? And probably people have heard the concept of a feature and then given some type of scenario when then, right, so they start writing in an English approach, right? And instead of looking at a specific unit, you're going to basically test a collection of units, right? And that could become into integration testing, right? Because let's be honest, sometimes, yes, I want to make sure that a CFC function actually validates, right, let's say a very tricky algorithm, or, you know, something that has to deal with money, I want to make sure that that algorithm is fully tested, most of the time, 85 90% of the time, you just need to verify, you know, a collection of CFCs working together to give you that your requirement actually works, right? How do you work that an order is made, an order could encompass right, making sure that you move all those products into an order an order is created, right, and email is sent, a confirmation is sent to the admin, the inventories decreased. There's all these requirements and scenarios that need to happen, right, that you will never get to validate in the unit. Right? So BDD is that evolution of TDD to take you to the next level, to focus on your requirements, right? Who cares about the single function? Right, that maybe it's just calling, we only care when it has an error? Exactly. And that's good. And that's good, because that's when only when you care, right? Because the reality is that you will never test everything ever. That's a fallacy.
Michaela Light 38:56
It is hard to test it will
Luis Majano 38:58
be impossible, right? There are always scenarios that you didn't account for, right? And it is just better to say whatever test your requirements, if your requirements are tested, you have a very good chance, right? Then your product works, when there are scenarios that come pain and they will come right you will create specific either units or more, you know, alterations to the requirements to validate, right that that scenario now passes, right?
Michaela Light 39:25
I mean, I think kind of compromise here do the behavior, different element high level testing in the code, but right some selected test driven development. And maybe in two cases, like you're saying when the when the module is complex, and the CFC is complicated, it probably deserves to have some testing written but the other reason to write it is a bug actually occurred in the app. Maybe it would be good to put a test in to make sure the buck doesn't come back.
Luis Majano 39:53
It's all about balance. It's all about balance. You really nailed it because it's all about balance. We always create gonna return I'm
Michaela Light 40:00
gonna call it just in time testing. Yes.
Luis Majano 40:03
shipped. Right. But we always
Michaela Light 40:05
it's a bit like, a bit like the other word that begins with sh i won't pronounce on this. Like that, that will be some testing that people do. If they do if they do it, if they will, yeah, sometimes people don't test that's what the for right, but so this is gonna, this book covers tips for using test box which is the open source testing one of a better word library and what do you call test box.
Luis Majano 40:36
Test box is exactly that it's a library for you to actually do TDD and BDD. Right? It gives you the constructs and the capabilities to do that. It also gives you the ability to do mocking, right, it can actually do mocking of objects mocking of data mocking of JSON representations and includes a library called mock data
Michaela Light 40:53
as it has it taken over mock box is my box disappeared. And now everything that was in mock box is in test box.
Luis Majano 41:00
So you know, a little bit of history here. So when I started this, I started with mocking first great days, in the good old days, we only had CF unit and MX, you right? So in order for us to have mocking I basically built mock box, right. And that was kind of my first adventure into the testing world. And Mach box was standalone, it was just a helper for those doing CF unit. And that makes unit. Obviously, a mix unit collapsed and was no longer developed. And then test box is when it arrived. And basically the library of mocking was absorbed into test box. And at that time, I still offered the two in parallel because the mix unit was still going on at the time. But now obviously, things have changed. So test box is a single library now that has a collection of modules inside of it to assist you with testing right as the mock box portions, right, which allow you to mock, right, which are no longer available standalone, right? We just use test box. So you have mocking capabilities. You have the BDD capabilities, you have the TDD capabilities, you also have code coverage capabilities as well, with test box. And he also
Michaela Light 42:07
said, that's the thing that integrates with fusion reactor that coverage will
Luis Majano 42:11
correct. Yes, so right now, it integrates with fusion reactor in the future, it might not, it might just be available to you. But it also introduces mock data, which is a project that our good old friend Frank Campton, created a long time ago. And we kind of forked it took over it. And it provides very extensive mocking facilities for you for API's. So
Michaela Light 42:35
just just simply gonna lay folks listening who are who folks listening, have no idea what mocking is, basically, you're stubbing out, you know, a thing or a piece of code that hasn't been written yet. And you're feeding back sample data to the other modules that are calling it so you can carry on with writing the program, because, you know, if you've got hundreds of modules in an object during the program, you know, you don't want to wait until the end to test the whole thing will be a disaster zone, you want to be able to start have the program running from the first day, even if it's only showing sample data. Yes, exactly.
Luis Majano 43:08
More or less, definitely. And you can mock two types of things, you can mock objects, and you can mock data. So mock objects is basically just creating even objects that don't exist, like you said, you know, there are no excuses anymore. It's like, oh, I'm waiting on John here to finish this component here. So I can use it, it's like, Nope, we're gonna basically come to an agreement, we're going to create an interface, right, an agreement of what you're going to receive and what I'm going to get. And then I can create those stubs, which are empty objects, and I can manipulate them, right, I can create functions on it with different arguments and expect data in and data back. Right. So that's the first approach to mocking is with objects. The second one is data, right? And we see this in the world of API's that we live in, right? We need to be able to talk to external API's and get some type of data representation back, right. And most of the time, I would suggest people not be hitting live API's when they're doing their integration, testing or testing, you know, you can get banned, I have gotten banned from a few services before that will remain nameless, but I have been banned. So that's actually when I said, Oh, maybe I should start mocking these, right. So the mocking of data is essential to so mock data is part of textbox. Now, and it's very extensive right now, it allows you to create over 20 different types of data elements. You know, you can create even your own if you want it to it actually comes with an embedded command box server. So you can actually mock an API with it, right and with with its own query language, so you can actually create and get data back as if you're getting it from an API from a RESTful API. So it's gotten really fancy so if people are actually building and integrating with API's mock data
Michaela Light 44:53
is your tool. Are you sure 102 tips is enough to cover all this, Louise. I mean, I think you're going to need Asking for tips, you know, where my
Luis Majano 45:02
goal or my goal later? I'm not sure. I'm passionate about testing? For sure I
Michaela Light 45:08
can tell it's exciting. Viva el testing, you know?
Luis Majano 45:11
Yes. So save my butt so many times.
Michaela Light 45:15
Absolutely. Yeah. All right. I'm all for testing, testing functionality, you know, testing the the how much resources the app use uses before you let the real users loose on it, you know, all kinds of stuff testing.
Luis Majano 45:30
I think, apart from covering those tips, I think I want to focus at the beginning on the theory of it, right? I think this is what people get held up. Right? The always the Why do actions? Why do it? What to do? And when to stop? Right? So there's this kind of integral three part questions of people always when
Michaela Light 45:48
to stop? Do you mean, you could do too much of this?
Luis Majano 45:51
Yes, for sure. For sure. You can do too much. I've done it. Right. And that's when you start getting that paralysis. That's when you start getting bored. That's when you start getting Oh, my God. So
Michaela Light 46:01
tell me those three questions again, what?
Luis Majano 46:04
The first one would be what to test? Right?
Michaela Light 46:07
What to test? Yeah,
Luis Majano 46:08
right. What are you going to test when to stop? Right? And then the other one is why test right?
Michaela Light 46:18
You know, this sounds very much like when I was younger, and I used to drink far too much alcohol. I didn't have that when stopped question. You know, we knew that. I knew I knew what to drink. But I didn't know when to stop. And have done that in a lot of years. Oh, yeah. So it happens. Yeah. All right. Well, when is this book likely to emerge? I think you said sometime this year. But you have any further thoughts on that? Or is it?
Luis Majano 46:49
My goal is to have them both buy into the box in September?
Michaela Light 46:56
I'll make a note of that in the show notes. And it's in writing.
Luis Majano 46:58
Yeah, people can keep me accountable. If I don't. That's fine.
Michaela Light 47:01
Yeah. You we will get a comedian in to give you a roasting you know. Hopefully he won't slap you around the face as well. There he go.
Luis Majano 47:11
No.
Michaela Light 47:14
And then you did do have some other books I saw on the artist site. If you go to all the solutions.com/learn/books. There's a whole bunch of books there. But you're saying those are a bit cold box and white box and Cashbox log box and command box and content box. And they're basically tutorials or the documentation. No, this is
Luis Majano 47:35
basically the documentation. Right. So this is the documentation that's available online and free, of course, and but we always created printable books out of them. We haven't done that, in a long time. The old versions are still available as printed books there. And most of these, if people are using an old coolbox, 264 version, or an old bucks, three version, the books are available for historical purposes. But we haven't had a need to create printed versions out at the docks, most of the people right now are just doing online in PDF, if there ever is people that are interested. And you know, they pester us and say, Hey, we want printed books, we can make it happen. But at this point, they're there for historical purposes, so they can actually use them.
Michaela Light 48:26
All right, very cool. So anything else you want to tell me about books you've written or gonna write?
Luis Majano 48:34
So actually, I'm putting a link there in your show notes. But if you actually go to watch his books.com, this is basically a little coal box, Vue js app. And it lists out pretty much all frameworks, all our principal books, all our modules. And what we're doing is we're aggregating all the talks and all the books that we're writing for commercial products, open source products and create a little Vue js app. So you can actually find what you we've grown.
Michaela Light 49:02
does. It lets you search through the text of all the books. Is that what you're saying?
Luis Majano 49:06
Not yet. Not yet. We're working on it yet. But right now, it basically is basically like a huge directory of all the products and major modules that we write documentation for. And you know, if you go there and you write quick, you'll get the quick rm and you can go to the docs for the Getting Started Guide. So we're trying to make this as a hub for all the documentation. We've grown quite a bit. Excellent.
Michaela Light 49:32
So that's why yes, there's a lot of documentation out there. So it's great to be able to search for things and so many books you've published, so we're going to publish, so congrats on that. So let's let's wrap up the show, just ask you today. And currently when we're recording this, it's March in 2022. Why are you proud to use ColdFusion today, Louise?
Luis Majano 49:58
Oh, great question. So I think we're proud obviously, because we've been doing it for quite a while. We do me personally, I've done several languages, not only ColdFusion, I actually started with assembly language that was one of my first ones basic I did electrical engineering. So I was very focused at the low level. But at the experience of using many languages, from C++ to C sharp, to Java to groovy, it was a time where I actually was doing a lot of groovy at one point. So I always end up doing ColdFusion. I know, there's a lot of improvements that have gone into Java. I love Java. Now, more than ever before, we're starting to do even a lot more Java workloads right now. But CFML always comes into that ease of use, right. And all the tooling that we've done around the language is just makes us so productive, you know that we have been able to create lots of solutions for our customers, we're actually starting to build even SaaS applications right now for the public. And we made an announcement last year, for a product SAS available called time box, this is going to be a full SAS implementation for any company to do invoicing, employee management, timesheets, right time tracking, reporting. And, and this is all built on using CFML. And all of our tooling, right? And we we were able to do it in about four months. Right? So I think the testament of rapid application development with CFML still stands. And we want to build as much tools as we can for developers to build that even faster.
Michaela Light 51:39
Fabulous, well, co fusions next language. And as you mentioned, you know, I think both of us are working on making ColdFusion more alive and modern. What would it take to make ColdFusion even more alive this year? In your opinion?
Luis Majano 51:56
I think it's people need to start building building solutions, right? I think nowadays, you're not going to convince somebody just by Hey, look at my if statement or look at my closure, looking at my dynamic access points. Right. I think those days are gone. I think the majority of languages nowadays have their specific intricacies their specific, you know, ways to handle things, but the majority of them are very similar nowadays, right? The major differences are between static and dynamic, right. But, you know, they're there, the languages are there, right? They've evolved so much. So I think at this point, it's just a matter of building cool solutions, right? This is something that we've been wanting to do, you know, that's why we created content box as a CMS solution, we're actually going to be relaunching or E commerce platform in the coming months as well in and that's why I believe the community if they want to see this community move forward, they need to start building cool solutions and making noise. Right, they need to make noise, right? If you don't know about it, and nobody does, right. So I think that for me, it's important that the community get involved. And if they have something cool that they built, release it right, if they have a SAS announce it. Right. I think it's a matter of me, like you said, being proud of the technology stacks decisions that you've made. Right and go forward. Right. I and I know that the vendors have a lot of work to do, right, in terms of improving themselves, right? I'm, we're not blind to that. Right? I think that they can be doing even a lot more, right. Both vendors that do the CFML engines. Were very transparent with that. And we say, Hey, you guys need to improve. I believe they can improve by 1,000%.
Michaela Light 53:41
I'd love to hear your thoughts separately on that. I think we're nearly out of time on this one. But I'm doing a roundtable this week with some developers and talking about Adobe ColdFusion 2021 versus Lucy 5.3. And how do they compare and all the different aspects? So yeah, I started the discussion in the there's a as you know, there's a ColdFusion programmers Facebook group has a few 1000 folks in it. And I just started the discussion in there. About that, a lot of interesting ideas about that, and it's not really a clear cut, you know, one is better than the other. I think they both have good points and thinks they can improve so. So into the box Web Development Conference, 2022 coming up in September, merely five months away five or six. What are you looking forward to in this year's into the books?
Luis Majano 54:47
Well, we're, hopefully we're going to have a new venue. It'd be a lot more fun. It'll probably attract people that can bring their families. We're not sure yet. And other things that we're going to be having I mean is our workshops, I think we're really excited to be able to start training people in person again, and make it affordable for them to come and just train with us, right? We're actually trying also to get other speakers from other languages and other big speakers. So we're trying to see if they can come, we're actually negotiating with them to see if they also do workshops, as well with us. So we're trying to go big here as well.
Michaela Light 55:30
Well, that sounds very exciting. But of course, it's still gonna contain lots of cool ColdFusion and box content, I hope.
Luis Majano 55:36
Yes, definitely. So this is our launch pad for all the new boxes that we're building on the news, there's gonna
Michaela Light 55:40
be new boxes.
Luis Majano 55:43
There's always new boxes, there has to be new Boston.
Michaela Light 55:47
So maybe I have a product called new box, you know,
Luis Majano 55:51
we can't sit still, you know, we're actually Developer Summit this week. So monsters are gonna come out of it. All the folks. People are coming here to Houston to tomorrow. And we're going to be doing our retreat for five days. So while there might be new boxes by the end of the week,
Michaela Light 56:08
I'd love to hear about those when you're you are able to publicly talk about them. so fabulous. If people want to find you online, what are the best ways to do that?
Luis Majano 56:20
Separately, so you obviously can go to work to solutions.com or you can go to lease farhana.com Where you're going to be revamping that one as well. Twitter at ohana, and LinkedIn as well. Ohana. So those are the easiest ones to remember. Or el Mahana at Orchard solutions.
Michaela Light 56:43
Fabulous. Well, thanks so much for coming on the show and thanks for all you do to make ColdFusion more modern and exciting. And have a wonderful rest of your day.
Luis Majano 56:53
Thank you really appreciate it.
Bye bye