Hello and welcome to the Modernize or Die podcast.
We're glad to have you with us today.
It is June 3rd.
This is episode 234.
My name is Eric Peterson and I'm joined today by Jacob Beers.
Hey Jacob.
Hello, thank you for having me.
Always.
Well, let's jump right into it.
Let's jump into our Ortus news for the week or sorry, the last few weeks.
We had a couple of new releases.
CF Migrations version five is out.
Sounds fancy, isn't as fancy as it sounds.
Upgraded to be based off of qb 12 which was also a breaking change and CBMockData 4.
So all of you should be able to upgrade without really noticing anything.
It does have BoxLang certification now, both the normal BoxLang and with the CFML Compat module, which has, on the side note, been a fun thing to try to figure out matrix testing
in CI.
Thank goodness for CommandBox to make that more straightforward.
And then there's a little teaser, a simpler configuration for CommandBox migrations is coming soon.
So if you are one of the many people who look at your data source configuration in there and think, why is this more confusing than CF config?
We'll be fixing that.
So thanks for being patient.
CB Playwright also had a release.
It's at 1.52.1.
That corresponds to Playwright 1.52, which is why the version numbers are kind of weird there.
I've been doing a lot of work there, mostly because I've been using it in a non.
testing scenario and it works a little bit better in that now.
So kind of doing my own web crawling for a client's project.
It's kind of fun.
Cool, very awesome.
Alright, so we've also got a couple more feature or news items that we want to talk about.
We've got the ITB 2025 videos coming to CFCasts later this month.
I'm personally really excited about that.
You can still go and check out the Into the Box 2025 website where you can see the full agenda and pick out some videos that you're interested in watching.
I've actually I've got four or five videos on my list that I've been waiting this entire time to be able to watch.
So looking forward to that one.
So that will come to all attendees of Into the Box.
You'll get free access on CFCasts.
If you are just a subscriber to CFCasts and you didn't attend Into the Box this year, you can either purchase it as a premium series or wait until around the end of the year when
it will become available to all subscribers.
Good to know.
And we've got a news item that is very dear to my heart, which is that the Boxlang VS Code extension has released a new version, 1.7.1.
Yeah, we've got some really cool features in it, including a couple of bug fixes, improved autocomplete.
And then the thing that I'm the most excited about is actually AI integration with
VS Code co-pilot.
So that includes our BoxLang participant that can even reach out to the BoxLang documentation and answer questions intelligently about BoxLang.
So very exciting stuff.
We're really looking forward to the future that opens up for us.
That's awesome.
You've been doing such great work on that.
I've been trying to dip my toes into it to help out a bit.
It's an exciting place to be.
Mm-hmm.
All right, this episode is sponsored by Ortus Solutions, specifically our Elasticsearch and OpenSearch Consulting.
So if you have a need to augment your search, maybe you're been creaking by just doing some database-like comparisons, but it's getting really slow to do those searches.
It's just you want to give it lots more features.
Contact us.
We have implemented many Elasticsearch search.
implementations and we can help you with yours as well.
Custom implementations, log management, performance tuning.
You can scale your data search with confidence and expert support.
Learn more at ordersolutions.com slash services slash elastic search.
And if you would like to get your product or service in front of our wonderful BoxLang and CFML audience, reach out to us on our website.
We'd love to have you sponsoring an episode of the podcast.
Let's jump into our BoxLang corner.
We have a BoxLang release.
Version 1.2.0 has been released.
And I would say that this is probably an 80 % bug fix and improvements update.
There's also a few new features you might be interested in.
The biggest one I thought was interesting was enhanced Java integration with Maven.
Maven's not something that we reach for a lot in the CFML community, and that is probably gonna change here with BoxLang, where you add in Maven with a pom.xml you put in your
dependencies, and those dependencies will be available inside BoxLang.
Nothing extra that you have to do.
You can go ahead and import those classes, create new objects from them, not having to add it to this.javaSettings or anything like that.
So some great stuff in there to integrate with the wider Java community.
that's just the tip of the iceberg.
Like I said, there's lots of performance improvements, and bug fixes as well.
We'll put the blog release and you can check out all the different tickets that were closed in.
BoxLang 1.2.0.
and which there is a lot of tickets.
I'm looking at the release notes now and I want to say that there's like 150.
Maybe not that many, maybe 100, but there's quite a bit.
do a quick count on the number of list items in here or something.
don't know.
But yeah, I'm with you.
There's over 50 at least.
Where's your CB Playwright web crawler when we need it?
I mean, that takes time to write.
It's not free.
Could probably put this into AI and just say, count me the number of list items or something.
I will uh lay claim that one of the bug fixes was mine.
One out of 50 plus.
So I'm part of this.
I'm part of this.
Yep, BL 1488, right?
The very last one on the, the importance.
Nice.
Well, we have a new installment in our BoxLang FAQ this week.
Last time we talked about the pricing model for BoxLang, specifically if it was free or just a paid product.
The TLDR on that is BoxLang is free as in, well, Daniel said free as in BoxLang, but I think free as in.
Beer is the one that we want.
It's free free free, you can do whatever you want with it.
Free.
Production, everything.
It also has support plans that we can help you get the most out of it.
We'd love to have your support on it as well, but it's free.
Today we wanna talk about is BoxLang just another CFML engine because you keep talking about it like it's more.
What's the answer to that, Jacob?
Well, Eric, I'm glad that you asked.
In fact, it is more.
We do have a compatibility layer, which we've talked about endlessly to be able to migrate CFML applications.
But we also have things that set BoxLang apart and make it its own language, including things like we've got syntax differences, we've got additional BIFs we've got...
functional member methods, better Java interoperability, and lots of runtime features like scheduler, modules, async features, all kinds of great stuff.
Some of the most important differences, some of them are, as people have pointed out, to be kind of cosmetic, like prefixing a tag with bx or something like that.
But they shouldn't be...
They shouldn't think that that's as deep as the changes that we've made go.
There's actually quite a bit more that goes beyond that.
Such as the syntax differences can be as simple as, like I said, BX and class.
But then we have the static BIF access that allows you to get at the actual object of a BIF without invoking it so that you can pass it around into other functions or things like
that.
We also have functional member methods, which is an interesting shortcut to be able to invoke member methods on an object without having to create a closure to be able to do
that.
And it looks really slick in practice.
And again, I actually demoed this last time in our webinar, but our Java Interop is awesome.
And it almost gives you like a hybrid language of
something like CFML plus all of the Java goodness to make something, you know, amazing BoxLang baby.
And then I can't even talk about all the features, but Luis has been throwing things in there like crazy with scheduler and modules and all the dynamic stuff.
there's quite a bit that sets us apart from CFML.
Yeah, I noticed today, and we'll get to this in a second, that in Lucee 6, they've discontinued their Lucee dialect, which was their attempt and hope to make a language out
of Lucee bigger than just CFML.
I was sad to see that because I think we need to be pushing the boundaries and that's what BoxLang lets us do.
We have our CFML parser.
It understands CFML, but we can leave it and do things that are not CFML because it's better and it gives us the syntax that we want and the capabilities we want.
So the good news with BoxLang is you get both.
You don't have to choose, but BoxLang definitely isn't just CFML.
Mm-hmm.
All right, let's talk about some community updates now.
Speaking of, I have a link here to the Lucee 6 upgrade guide.
This is the first time I saw it.
It might have been around a while, but given that I have many a client that's still on Lucee 5.4, I'm sure I will be referencing this quite a bit.
In addition to that, we've got Fixinator 6.1 and Pete's been doing a great job with that as always.
So you should go and check that out.
You should check it out even if you're not a Fixinator customer, but especially if you're a Fixinator customer, go and check out the things that are there.
And actually that this has to do specifically with the vulnerability that Adobe has fixed recently.
having to do with undefined arguments and remote functions.
it looks like he provides his scanning tool through Fixinator and can help you resolve that in your system really quickly.
So, check it out.
Now, I have to say, vulnerability, I put in air quotes.
uh Like it has to do with being able to scope walk in Adobe or scope shadow, I should say, where you can kind of fake an argument scope by passing in something called arguments or
variables like that.
It will create a local variables.
I'm not saying this very well.
If you bet you can, in Adobe confusion, you can create a local variable called variables.
And then when your code asks for variables in that function, it gets the local scope, not the variable scope.
And so you can essentially like override it and then, you know, wreck havoc.
So that's not a thing in Lucee, which is why Lucee hasn't done the patch like this.
And quite honestly, this patch is annoying me because I have to add in this environment variable everywhere to turn it off.
So my tests run because I think mock box uses this and I like mock box.
So anyway.
But Pete can fixnator can find it for you in case you're like do I use this so?
Anyway, sorry for the rant We have a blog post by James Moberg and first off is this a new site James you should let us know it's myCFML.com
the article is using ColdFusion and XPDF to extract PDF metadata.
I would name James Moberg the king of using command line tools inside ColdFusion.
If you ever need to do that and you're having problems, he probably could help you.
So this is another command line tool to get you more information about the PDF than you can just using the built in.
ColdFusion tools, you can get a lot of it with the CF PDF, but this gets you even more data.
So you can go ahead and check that out on his blog, XPDF and ColdFusion.
In addition to that, we've got another blog post coming from Ben Nadel, which if you're not familiar with him, there's a new blog post every day.
But specifically we're talking about today's, which has to do with a new feature that's been added to Adobe to make it easier to add jars into your CFML application.
He's been doing kind of an interesting series on building barcodes using, I have no idea how to pronounce this, zeezing, zeexing?
Sure.
It's a barcode library.
I think it's from Google and it's distributed via jar.
And so he's doing some interesting experiments with that in Adobe 2025.
So check that out.
Now if you build any sort of cross compatible Module so like for cold box.
It's supposed to run on Lucee.
It's supposed to run on Adobe supposed to run on BoxLang And you wanted to use a Java library you might have noticed there's no good way to do it a lot of our docs now just say
like you got to copy this into your Java settings because Lucee had a way to create
a Java object by passing in an array of jars is a third argument to create object.
BoxLang uses that and there was no way to do it in Adobe.
Until 2025, Adobe 2025 gives it to us.
It works the same as Lucee in BoxLang.
And once I can drop support for 2021 and 2023 and you know, five years, it sounds so far away, but like it just makes building these cross compatible modules so much easier.
because it just takes out a step that you right now have to do yourself.
You have to get those jars in the right place.
You got to make sure they're loaded.
Soon we'll be able to just say, no, here's the jar.
I'm putting it in the module, pointing to it in the file system.
You're good to go.
So very excited for that.
All right, let's talk about some events.
CF Camp happened just a couple weeks ago, and the slides and recording for the Ortus videos are now up on CF Casts.
I think CF Casts and BoxLang Academy, so you can go check that out.
Again, that's just the Ortus videos that we had there.
We will let you know when CF Camp publishes all of their videos and where you can get ahold of those.
Additionally, we have a couple webinars coming up.
This June, we have Building Dynamic AWS Lambda Applications with Boxlang.
It will be June 18th at 11 a.m.
Central Time.
You can register and we'll put the link in the chat, in the show notes.
That's gonna be led by Luis Majano And in July, we'll be having a webinar with Ray Camden and more details are coming about that soon.
Cool.
Looking forward to that.
It looks like we're going to be, the Ortus is going to be participating in an announcement at America Digital Mexico on June 17th.
Looks like it's a conference in Mexico City where we'll be showcasing BoxLang.
So definitely check that out.
That sounds really awesome.
It looks like it's their ninth annual conference there and we're going to be at Booth.
C36 in case you happen to swing by so come say hi.
We also have another conference coming up later this month called Open South Code 2025.
This one's in Spain.
Me and we're taking over all the continents.
That one's going to be from June 20th through the 21st in Málaga, Spain.
And actually we're a gold sponsor of that one.
So that's pretty, pretty awesome.
Finally jumping forward to September, we have Adobe Cold Fusion Summit 2025 certification available either the day before or after, depending on what you would like.
There is still a speaker application open.
You can submit your topics and you should.
And very looking forward to that event,
Finally, we mentioned this last time, we are coming out soon with our blind ticket for Into the Box 2026.
What that means is you buy a ticket without knowing what the workshops or speakers are going to be, and in return, we give it to you at a great discount.
So you put your faith in us that we're gonna run a great event, you get a great discount.
Win-win.
Now we have a question in the chat I wanted to jump back to from Scott Steinbeck with the new Maven integration.
Asking if the Maven command was a part of command box or part of the BoxLang jar and I believe the answer is neither.
It's you installing Maven onto your system according to the website documentation.
So the normal Maven command, nothing that we are hooking into or anything.
In fact, when you do a Maven install, it's all
Normal Java Maven.
I feel like we need a blog post explaining this functionality.
This seems very important.
And yes, that and the video.
Luis, make it happen.
Mm-hmm.
All right.
So we have a few minutes left.
Usually at this point we're over time.
And so I have some things in our show notes from Microsoft Build, which was a few weeks ago.
So it might be old news, but things that I think are fun to talk about.
Did you, see the new copilot features inside GitHub, like the GitHub website?
no, I haven't.
should tell me about that.
So there is now, so CoPilot's been in VS Code for a long time, can do a lot for you.
Now inside of GitHub, you can assign it as a reviewer of your pull request.
And it will pull the code down, and I don't even know what it does.
I'm afraid to try it.
But do a code review, which, okay, interesting.
Having my code reviewed by the robot that usually gets it wrong, but you know, we'll see.
Additionally, and I'm not sure how you like turn this on or you can assign, I believe, issues, GitHub issues to GitHub Copilot, and it will attempt to fix it, make a pull
request, and open that pull request back up.
So like assigning a ticket to an AI bot, which is kind of boggling my mind.
I kind of want to try it, but again, don't know if I trust it.
I guess that's what tests are for.
But yeah, that was the biggest one for me, not being like a Microsoft guy where I was like, this is interesting.
How do you feel about throwing some GitHub issue at GitHub Copilot and having it go off and fix it and open the pull request for you?
If you'd asked me a few weeks ago, I would have said not good.
But actually I've been playing around with some of the AI stuff as well and especially with Copilot and Claude 4, that's an amazing combo.
And I'd be willing to let it take a shot.
So does GitHub Copilot let you use Cloud then?
Cause isn't Microsoft, I thought Microsoft Copilot was the AI engine.
Maybe I have this wrong.
Well, so actually, it's cool that we're bringing this up because this will be maybe some future announcements in some of our podcasts.
But at least in VS code, when you put your copilot into agent mode, you're able to pick the specific LLM that you want to use for your work.
And Cloud4 is one of the ones that's accessible to it.
And actually we just got a comment from Ben K that it's not as familiar with CFML, which is true, but that's why we've been adding in some of the BoxLang AI chat features like the
BoxLang participant and things like that.
We've found some ways in the VS Code documentation to be able to give it the information it needs to be able to interact with our ecosystem even without even having been trained a
couple of years ago.
So look forward to that in the future.
That's going to be pretty exciting.
Well, maybe after this podcast, there's been a couple of, quick issues that have been out there that I'm like, I wish I could, I had the time to dig into this.
Maybe we'll, we'll throw a co-pilot at it, see how much of a mess it makes.
don't let me see if there was anything else interesting at Microsoft build, the WSL, the.
Windows Subsystem for Linux is now open source, which, sure, cool.
And they made their own Vim.
I don't know if you saw this.
I kind of laugh, again, based off the WSL news.
Microsoft is just very much like, no, DOS, or whatever you call them now, command line, PowerShell, is like full throttle.
They will not let it die or they will not accept to just, we should just do Unix tools.
ah But yeah, now you can do, it's called Microsoft Edit and it's, Vim is the wrong word, it's more Emacs.
Emacs for PowerShell.
So if that's been your dream for these many years, congratulations.
You can go download Edit on Windows, which is not the best name, but it is what it is.
Yep, well notepad was already taken,
And notepad++, which is still one of my favorite names.
In fact, hopefully everybody has noticed that we took inspiration from that for the BoxLang subscriptions.
They were talking about BoxLang +, and there were other names floated, but it had to be++.
BoxLang++.
So I guess we could have gone the Apple naming route, right?
We could have done, let's see, it's Pro, Max, and Ultra in that order.
because Ultra is bigger than Max, somehow?
Anyways, awesome.
Well, let's wrap up and thank all of you for listening and especially thank all of our Patreon sponsors.
These are individuals and companies that personally support our open source initiatives, including this podcast.
Their contributions also fund the cloud infrastructure that this community relies on like Forgebox for our package management.
You can support us on patreon.com slash Ortus Solutions.
If you're at a bronze level and up, Forgebox Pro and CFCast subscriptions are yours.
And come join us on our website and some exclusive places for our Patreon supporters.
We have, I believe, 61 Patreons right now.
You can always see an up-to-date list at ordersolutions.com slash about dash us slash sponsors.
Thanks everyone for coming on this show today with us and we'll catch you in two weeks.
All right, thank you all.