Episode 233 | May 20th, 2025
Hello and welcome to the Modernize or Die podcast.
This is episode 233.
It is May 20th, 2025.
My name is Eric Peterson and I am joined today by Daniel Garcia.
How you doing Daniel?
I am doing great, how are you?
I'm doing pretty okay.
My voice sounds weird.
It has since karaoke at Into the Box That must have been it, right?
Well, you killed it at karaoke at Into the Box So, I don't know.
Well, thank you for that.
can't see I couldn't do it anymore.
So here's hoping it comes back quick
got time.
There's 11 and a half months till next Into the Box.
You can get back into karaoke shape.
Sounds good.
All right, let's jump into some Ortus news.
QB version 12 and 12.1 have been released.
One after the other,
yeah. 12, and it wasn't a bug fix, it was actually a legit new
feature. 12 had a whole bunch of cleanup and some major breaking changes we've been
looking to do for a
while. But also has things like Derby as
supported grammar, running queries without the table, the support for the for clause in
SQL Server so they can return things as JSON or XML.
And then in 12.1 we added a feature to detect valid query params.
So in QB you can pass a value, but you can also pass a query param struct like you would
to cfqueryparam .
and I was helping somebody debug an issue where they were getting some weird behavior in
QB and what it turned out was they had passed a struct that they had meant to serialize to
JSON as the value and QB was just like, what is this?
And so now QB will check the structs you pass in and make sure that only the keys that are
valid for query params exist.
And if they don't, it will give you a nice little.
error message that says, you probably meant to serialize this.
So that's 12 and 12.1.
There are breaking changes, but honestly, check out the docs.
You probably won't have to change anything if you've been running with the defaults since
I think version nine.
It was mostly dropping some settings that we don't need anymore.
So next up into the box, 2025 videos are coming to CF Cast in June.
I don't have an exact date, but we were told by our marketing team that they are going to
be in June.
So very excited about that.
I know there's a lot of sessions I couldn't make.
Cause I was doing this and that and whatever else.
And so I'm very excited to get them up there so I could start watching some of them as
well.
Yes, I do believe looking at what our marketing team said, they said the first week of
June.
So just the first week.
a grace period on it just in case.
Cause June 30th is still June.
So you heard it here, now our marketing team's gonna make it happen.
oh They were already gonna make it happen.
all the shows and you're like, why do look so weird?
I don't know.
All right, a reminder this came out at Into the Box, but pass keys are available as an
option for you on your Forgebox account.
You can log in and go add a pass key to your account today.
it is, well, I'm a little biased because I implemented it, but it is the right way pass
keys should be used, which is that when you come to log in and you have a pass key, it
just prompts you, lets you scan your fingerprint, show your face, whatever you're using
for that, and you're in.
So it's really.
why does it take you 30 seconds or less?
you tell us what pass keys are just in case somebody's watching this and they don't quite
know what you mean?
Yeah, you've probably seen them pop up on even some of the bigger websites.
Google's pushing them a lot right now.
GitHub has some.
The idea is to use public private key encryption instead of passwords, but it's all
handled by your platform.
Usually your mobile phone, Android, iOS.
You can also use password managers.
I prefer one password, but a way to not have to remember your passwords, but also avoid
phishing attacks, password reuse.
secure all the way around.
There's some growing pains as websites decide how they want to use pass keys.
As I was complaining, I have one website I use that has me enter my username, enter my
password, and then asks me for a pass key as the second form, like the two factor auth,
which drives me nuts because I think it's overkill.
But that's okay.
Everyone's figuring out.
double security must be like the government website, double security.
Yeah, it's not that important, so...
Get your like grocery rewards card or something.
it's something like that.
Yeah, but yeah, you can go add it to Forgebox now.
So
Nice, nice, nice, nice.
So this episode is sponsored by Ortus Cloud Servers for Ortus Solutions.
You can do BoxLang and CommandBox servers available on AWS and Azure.
Azure or Azure?
I've heard both ways.
I've always said Azure, but I don't have any proof.
you could choose Ubuntu, I've heard both ways there as well or Windows based servers.
Serverless deployments available for Boxlang, although one way to say that, go to the
website ordersolutions.com slash product slash cloud hyphen servers.
And we'll get the link there in the chat.
If you want to get your product or service in front of our wonder wondering Boxlang and
CFML audience, reach out to us on our website.
Yeah, I meant to say wonderful.
Sometimes, you know, I try and like improv, but sometimes I'm just like Ron Burgundy and I
just read what's on the prompt and I need to be better about that.
Speaking of BoxLang we got some news about BoxLang this week.
Let's jump into that.
ah First one, we got a blog post here from our BoxLang evangelist, Raymond Camden, about
parsing Markdown in BoxLang, take three.
He promises that this would be his last post this month on it.
So before he showed us how to use BoxLang's Java integration and bringing the FlexMark
Java library.
and use that to parse Markdown and mention then that BoxLang has own BX Markdown module
that does a lot of the same stuff.
It wraps up that same FlexMark library, provides some handy built-in functions for you to
convert from Markdown to HTML and back, and also a BX Markdown component that you can
throw into your view and just put Markdown in there.
and it will convert it right there on the fly.
Nice.
And why would anybody want to use Markdown versus traditional HTML?
This is easier to look at as a human, really, right?
Like when you're writing a blog post, it looks more like text rather than markdown.
Sure.
Well, now you're confusing people because it is Markdown.
You mean Markup?
Eric's getting over a cold and I am unfairly teasing him.
So my apologies.
Next up we've got Boxlang added to CFdocs, CFdocs.org.
The website, if you're not familiar with it, go get familiar with it, CFdocs.org.
It's got a ton of
CFML documentation for all the engines including now Boxlang.
And so when you go there and you see the different engines supported, you'll see BoxLang
and what version supported just like some of the others.
And so it's very exciting.
I think Eric, you probably had something to do with that if I'm not mistaken.
Yeah, so I use CF Docs all the time and I love the fact that I can, you can click on the
engine name in the corner and it takes you to that engine's docs if you're using it.
And I'm like, well BoxLang needs to be here.
You know, guys, there's a lot of tags.
There's a lot of components.
There's a lot of functions.
It took a while, but like it was when I was, when everybody was working on their ah
presentations and their.
workshops for Into the Box.
I was just over in the corner just basically copying and pasting a lot of stuff.
So, but we got it out there.
Not only does it include links, but you can also see some compatibility information.
For instance, if you would go to the serialize JSON, those of you in the know know that we
rename that in BoxLang so it fit the pattern of noun verb to JSON serialize.
So there's a little note that is being transpiled for you.
So anyway, it's all over the place.
that is an open source community website.
Anybody can contribute a Pete Frey tag, put it all together and lots of people are out
there contributing to it and you can too.
But, it's a great resource.
I use it all the time because who can remember every little argument for every function
everywhere.
Not me.
Also, as you said, shout out to Pete.
He helped me get it up and get the images needed to make the nice little cards when you
put it on and it shows box laying on it, support it if it is.
So thank you Pete for the great website and helping me get this out there.
Nice.
have a new BoxLang module.
It was mentioned at the webinar last week, which if you didn't see that is live on our,
not live, it is up on our YouTube.
You can go watch that webinar with Jacob and Brad and Luis.
It is the BoxLang SQLite module.
If you would like to use SQLite in your application, you can add that module and point it
at a file.
It will create that file as a database, or you can even tell it to create a in-memory
database.
and just run everything in memory.
a trick I like to use in testing sometimes.
So the BoxLine SQLite module, available now.
Nice.
I'm actually trying to find the link really quick for the, uh, that was last week, right?
the webinar.
Yep.
It was.
man, go on down a rabbit hole.
Well, while you go down the rabbit hole, let me push this forward.
We have another blog post from Ray Camden about the BoxLang module features.
I believe Ray wrote this after getting inspired at Into the Box where Brad's Session,
which you'll be able to view in just a couple of weeks on CFCasts went over how to make a
BoxLang module and how simple it can be.
One thing you might not know off the bat is you can write a BoxLang module in BoxLang.
You don't have to write it in Java, though you can.
So Ray shows how he wrote one.
He made a new box built-in function that he could call meow and give it an argument and
have a new output come out just as an idea to show something simple.
And then he goes on to building kind of a real module, which is an RSS reader, bringing in
a Java library and setting that up for you and...
you're able to pass in a RSS feed to this function and get an array of items from that
feed returned.
So all that just with BoxLang.
He didn't have to jump down and learn Java code.
He could integrate with a Java library without having to write Java code.
All great things that are possible inside BoxLang
So another exciting news, BoxLang 1.1.0 has been released.
It sounds boring.
Eric put boring.
I said, it sounds exciting, but it's bug fixes and improvements, which some people might
be like, okay, thank you.
But,
The idea was to do the joke like every mobile app just says bug fixes and improvements,
bug fixes and improvements.
That was the joke.
We have the change log and we'll put it in.
There are great bug fixes and improvements and if it's a bug that you ran into, you
definitely care about it.
But there's no eye catching features this week, but that's okay.
That's fair.
That is fair.
All right, we wanted to take a section of each of these podcasts and do kind of a BoxLang
FAQ.
You know, it's a new engine.
There's lots of new questions coming out there.
And so we thought we'd address them here on the podcast for you all.
If you do have your questions, please send them in to us at podcast@ortussolutions.com So
let's go to the question this week, which is, is BoxLang a paid engine?
like Adobe ColdFusion
Okay, can I take this one?
Absolutely.
BoxLang is free and open source.
Woo!
Free as in, free?
I don't remember the phrase.
BoxLang is absolutely free as in, I wasn't going to say beer, I thought it was beer, but I
was trying to like keep the podcast classy, Eric, but it's not even, well, you know what?
It's past noon Chicago time.
And by the way, I love that when Maho posted the link, she's like, noon Chicago time.
I love that, because I've been championing for.
Central time to be renamed to Chicago time.
Anyway, BoxLang is free and open source.
You can do whatever you want in BoxLang for free.
It's open source.
Apache, I think Apache 2.0, I believe.
free just for development?
It's free for whatever you want to do it, whatever you can build with it.
BoxLang is free, free, free, free for the BoxLang open source version.
Now you might be like, well, I heard there's some pricing plans on the website and you're
absolutely correct.
There are some additional things you could get.
We call them the + and ++ plans.
Basically it comes with enhanced support, premium modules and
Custom patches, priority support, business level SLAs, all the things that you would
expect in a paid support service.
But you don't have to do that.
You don't.
But some of those premium modules, might be wondering, things like Redis, Couchbase,
MongoDB, Elasticsearch, bx-ai +, because there's already a bx-ai that, you know what?
It's free, open source.
Some PDF forms, some spreadsheet functionalities.
Now...
Again, those are things we spent a lot of extra time and effort to try and get this out
there and it's nothing new.
We've had some of these modules for other engines before and we've been selling them.
And quite frankly, if you want good Redis support and say Lucee you get the Ortus Redis
extension because that's just the way it goes.
Now that said, what could people do if they don't want to get our extensions, Eric?
Well, we've had this question come up, they saying, no, look, it's like Adobe.
have to pay to get the PDF forms.
There's no way in the world that I can do PDF forms without it.
And the answer is that's just not true because all of these modules are built as BoxLang
modules and anybody can build a BoxLang module.
You can build your own, you can keep it private.
You can publish it.
You can build your own Redis one, your own PDF forms one.
So if you do not want to pay for a plan that includes these premium modules, you can build
your own.
You can build exactly what you need.
It will run the exact same way as ours do.
There's no special entitlement that Ortus modules get in BoxLang.
They all run the same.
So uh that's your choice.
We think we've built something very valuable and that you'll get a lot of value from the
license, but you are in no way required to use it.
In any way.
Yep.
And we've got years and years and years, some of us even more years of experience building
these things.
And, we just want to make it easier for you, but like anything, Java is a first-class
citizen with BoxLang.
And so if you find a Java solution, just go use that.
It's okay.
BoxLang is open source and free and you can do it everywhere, anywhere, and however you
want.
It's just, if you want that extra support and some of these premium mods that we've got
pre made for you, get a plan.
That's all.
Alright, we'll be back next week with more BoxLang FAQ.
Send them in.
Two weeks, next episode, whatever.
Onward to some CFML updates.
There is a security update for Adobe ColdFusion which I love their security updates.
This is love in scare quotes because they don't really tell you what it was.
But luckily we have Charlie's blog article which does tell you what it was.
I gotta say, this one was made more of a splash than I thought it would because they made
some changes to how remote CFC methods would be called if you provide either too many or
incorrectly named arguments, which broke, what was it?
Mock data, CFC, or CF mock data?
What do we call it?
CB mock data?
cbMockData .
I think we changed the name on it recently.
Which is the mock data library included in TestBox It has a handy way that it takes in any
arguments you want and figures out what you want to do with it, right?
Where you can give it a bunch of arguments and say, create this struct for me with a first
name that's a string and the last name that's a string and an age that's a number.
Well, that all broke even if you weren't calling the function remotely.
It's just if the function had the remote type.
and this new security update broke.
So I know we're talking to Adobe trying to figure out how that should work.
A lot of people don't feel like that should be.
applying to functions called inside your code rather than as a remote function.
And for those of you that haven't used remote functions in ColdFusion it is basically
putting the remote keyword in front of it instead of like public or private.
And you can then call it via the URL, like a file path.
And then you can add question mark method equals, and then pass in the name of a method
and a bunch of arguments.
So it creates
a way to call it from a URL.
So I can see why it's a security area.
But yeah, so it exists in mock data because if you wanted to quickly while you're testing
hit it and get a bunch of random data, we wanted that to be possible.
So if you see all your TestBox fails because you've applied this ColdFusion update, that's
why we're talking with them about it right now.
Charlie has the magical Java system property that will turn it back off so you can keep
going in the meantime.
Yep.
And just another word on Charlie.
Charlie is a great community resource.
He has been for a really, really long time.
And, it's always fun seeing him into the box and he's a heck of a karaoke singer too.
If you ever get the chance to experience the Charlie experience, but, we appreciate you,
our friend and keep doing what you're doing.
And you're a resource to everybody everywhere.
And we appreciate you.
Give us some Charlie love.
So.
Coming up next, we've got a Spring 2025 Galaxy blog update and robot by Gregory Alexander.
He's got lots of different improvements coming in.
So he's got some new features coming out.
He's going to be migrating from Bing Maps to He's going to fix some different bugs, some
performance enhancements, support for CSS gradients.
some automatic WebP image generation, some caching functions.
And later at some point, he's going to be providing BoxLang compatibility and potentially
writing a new BoxLang edition.
Potentially it's on the radar.
Don't know when that'll be, but it's exciting to see some of these community applications
out there looking at BoxLang and like, hmm, I wonder what I can do with that.
I mean, the first thing can certainly do is just make sure it's compatible with BoxLang
with the CFMLCompat module and just get up and running a BoxLang engine.
And that hopefully is going to be a relatively easy transition path.
unless there's some weird esoteric thing somebody might be doing, and then we have to
figure that stuff out.
But for the majority of people, it should be pretty straightforward, but it sounds like
he's talking about just rewriting it all in box language is awesome.
So, looking forward to seeing how that goes, Gregory, and thank you for all you do.
Let's talk about some events happening this week is CF Camp.
I know we've sent Brad Wood on an airplane now.
I believe he might be there battling jet lag.
It starts.
but we were like, we don't know if he'll be awake.
Right.
There is a pre-conference workshop tomorrow for Ortus on BoxLang.
still has tickets available.
It is getting started with the BoxLang runtimes.
So you can grab that.
And then CF Camp itself, May 22nd and 23rd.
I bet they would still let you buy tickets and come out there if you were able to get
there.
Yeah, just show up and probably buy, well, actually I don't want to say you can buy a
ticket at the door because I have no idea, but I would not be surprised.
They're good people out there.
Yeah, I'm sad I couldn't make it there this year.
CF Camp is always such a great conference.
Yeah, one of these years, I almost had a chance to go this year.
Just, I, it didn't work out, but hopefully future.
I also love it just because there's so many people I don't get to meet at conferences here
in the States.
And so it's just I love expanding my CFML community.
Absolutely.
Okay, coming up, upcoming June webinar, Building Dynamic AWS Lambda Applications with
Boxlang with Luis Majano You can register for that.
We'll get the link in there.
It's going to be Wednesday, June 18th at 11 a.m.
Chicago time.
There's also a July webinar scheduled with Ray Camden, but more details will be coming
soon.
Alright, and all those webinars are free, so please come join us.
You know what?
I'm taking the phrase back.
It's free as in BoxLang That's what I'm to say from now on.
Free as in BoxLang.
I imagine with the AWS Lambda applications of BoxLang, that might be related to what Luis
did at Into the box.
And so if you missed it at Into the Box you can certainly go and you subscribe.
can go and get the videos at CFCasts.
I'm sorry, if you attended into the box and missed a session, get it from CFCasts.
Eventually it'll be for probably all subscribers.
I don't know when that'll be though, but, you just go to the webinar and check it out.
There's some cool, neat stuff with Lambda.
If we follow how we've done the Into the Box videos in the past, yes, attendees will all
get it for free.
Subscribers, you'll need to wait until usually the end of the year, or you can pay for the
premium series and have it right away.
Yep.
So if we get some of those dates, we can announce some, but exciting.
All right.
A couple more to talk about.
Open Code South in Malaga, Spain is coming up on June 20th and 21st.
We'll put the link in the show notes.
Ortus Solutions is a gold sponsor there at Open South Code.
So if you are attending, come say hi.
I believe that's a "Oro" sponsor since it's in Spain.
Right?
Isn't gold, isn't "Oro" the word for gold?
man, your Spanish is more than mine.
Not much more, I think so.
But, "Oro" sponsors.
Okay, following that we've got...
to the Spanish speakers everywhere.
We do.
Oh my gosh.
Okay.
We've got Adobe ColdFusion Summit 2025 coming live in September 22nd through 23rd.
They're going to have certifications available the 21st or 24th.
The speaker application is now live as well.
I do not know when they're going to close the call for speakers, but with the conference
in September, I'd probably suggest you not wait.
If you want to apply to be a speaker, go do it now, right after this podcast.
Do it.
Don't miss out.
It's a fun conference in Vegas.
It's in there.
The venue switched, I think last year and it was a good time.
I didn't make it.
I'm going to, you know, see if I can make it this year.
And then after that we've got into the box 2026 coming soon with blind ticket pricing.
If you're asking yourself, Eric, what's blind ticket pricing?
He might say.
blind ticket pricing is where you know the conference is going to be awesome and you're
going to buy a ticket before you know any of the speakers or sessions.
And in return, we give it to you at a very good price.
Very good price.
believe last year it was half off for blind tickets.
So.
the workshop as well.
Do you remember?
Wow.
We'll know soon.
Okay.
I think that's kind of wrapping it up for our events and probably this podcast.
think so, except for us thanking all of our Patreon supporters, individuals and companies
that are personally supporting our open source initiatives and this podcast.
Their contributions fund the cloud infrastructure we use for Forgebox and package
management for Command Box.
You can support us at patreon.com/ortussolutions save some money with the annual plan and
get some perks.
All supporters get access to the Box Team Slack.
a private forum on the community website and a neat profile badge and bronze packages and
up get a Forgebox Pro and CFCasts subscription as a perk.
Again, you can learn more at patreon.com/ortussolutions and view a full list of all our
sponsors at ortussolutions.com/about-us/sponsors
And as always, thank you everyone for being a sponsor.
Thank you to everyone who tunes in.
Thank you everybody, and let's do this all again in the second week of June.
All right, we'll see you then.
See ya.
Thanks.
Join our newsletter
Switch to Modernize or Die ® Podcast - SoapBox Edition - Switch to Modernize or Die ® Podcast - Conference Edition
Music from this podcast used under Royalty Free license from SoundDotCom and BlueTreeAudio
© 2019 Ortus Solutions