Episode 236 | July 1st, 2025
Hello and welcome to the Modernize or Die podcast.
It is July 1st, 2025.
This is episode 236.
We're glad to have you with us today.
My name is Eric Peterson.
I'm a senior developer at Ortus Solutions and I'm joined today by Mr.
Grant Copley.
How you doing, Grant?
Doing good, how's it going?
It's going well.
I'm very excited.
We're getting ready for a family vacation here.
Take some time off around around Independence Day here in the States and very excited.
How about yourself?
yeah, gonna be basic stuff.
Just gonna be grilling out and things like that.
Spending the day with family, but looking forward to it.
Awesome, we hope you wherever you are also have some fun plans But for now, let's jump
into some Ortus news starting with some product releases not much for the last couple
weeks, but quick 12 and QB 13 have been released these were mostly bug fixes It is a
breaking change bug fix Just as
I tend to be overly cautious about that.
So lots of important bug fixes you should be able to upgrade with no problems.
And also some new testing helpers.
As I was writing out some tests, I found myself wanting to say, like, I expect this query
to exist or to have a count of two.
And it just saved some test box work.
So you can use that now in QB13.
Is that for just curious Eric, is that for like integration testing where you actually hit
the database and then you assert against it?
yeah, I that's my like first level of tests always Just to make sure that everything
actually works together So I'll have a test, know, that's like expect there to be zero
records And then I hit this endpoint with this data and there should be one record, you
know kind of thing so
cool.
Well, today we want to thank our sponsor, Ortus Solutions, specifically Ortus Training.
You can get trained by the actual makers of BoxLang the Coldbox platform, Command Box,
Test Box, as well as all the other products you know and love.
We offer on-site training, regional training seminars, virtual live trainings.
We have several professional training courses, and we also cater to à la carte trainings
as well if you want to put together exactly what you would like to be trained on.
The benefits of this training, you can save time on attendee travel and expenses, have
more time for questions for your specific content, focus on topics that matter to you and
to your company, define the pace of the course according to your needs, you can get
discounts on attendee fees according to your attendance, and of course you get to choose
the location.
So head over to ortussolutions.com/services/training and you can start a quote today.
We'd love to come.
do a personal custom training for you and your company.
So looks like.
BoxLang corner.
Yeah, so if you missed it, Boxlang 1.3.0 dropped and there's some pretty cool stuff in
this.
One of them being enhanced zip compression control.
And I was looking into this, you can actually adjust like the level of compression and
it's just a setting that you can set.
They've got pretty JSON serialization now, which we've always needed, but you can
essentially just pass a
a boolean flag of true to, I think it's, is it jsonSerialize?
I think that's.
yeah, both can work if you're using the CFML compat, but yeah, jsonSerialize
But yeah, if you can pass the true flag and it will just, it will prettify your JSON.
They've added some, they say here XNone functions.
And when I was looking at this, looks like all of the collection objects in BoxLang, like
your arrays, lists, and things like that, queries, you can now do a .None call on those.
And it will essentially check to make sure that there's
There's nothing in that collection based off of what you're passing there.
That's pretty cool.
the opposite of array sum or array every right
Some updates to query concurrency and they've added some intelligent caching upgrades,
HTTP response compression, binary verification, and some enhancements to the command line
tools as well.
So lot of stuff in there.
I they also did some bug fixes and some CFML compatibility enhancements.
Huge update, so definitely go check that out.
We'll post the link.
It's one of those things where the minor update number does not quite reflect how much
work just went into that.
Yeah.
Last week we got to talk about the BoxLang Version Manager.
This is, if you've ever used other programming languages, you've probably seen some of
these.
There's a, let's see, what is the Java one that...
using.
I used Jabba for a while and then that's not the one I use now.
Ruby has Ruby version manager.
Node there's a node version manager.
The idea is you want to be able to switch your versions easily rather than having to like
manage your Java home yourself.
jenv that's the Java one.
J-e-n-v.
So we have the Boxing Version Manager, BVM, and this was released and talked about in the
last podcast, but there's already been a release since then.
And specifically, this focuses on project-specific version management with a BVMRC file.
So this is copying from, again, those other languages like Ruby and Node, where you can
put this BVMRC file into your repo and set a version for your project.
And then when switching the directory into there, you can use
BVM use and it will switch to whatever version of BoxLang that project is currently using
Super important for you know, you're working on an app that hasn't quite gotten up to the
latest and greatest features Or maybe you're working on the app that's on the latest
snapshot version, right?
You want to test these features and quickly be able to do that So that's the BoxLang
version manager very powerful tool and already getting great updates So check that one out
as well
Yeah, very handy on that one.
Also, there was some updates to BoxLang AI so version 1.2.
In this version, we added Claude support, new tooling APIs, some better message handling
and easier debugging.
There's some new event, lifecycle events in there that you can hook into.
And we've also kind of put out there sort of looking ahead
you know, things that are going to be coming down the road, more tooling support, even
more providers and chat streaming, which is really nice.
That's the one piece that I'm always kind of trying to figure out how do I implement this.
But if you're looking to get, bring AI into your BoxLang application, definitely check out
BoxLang AI
Awesome.
Let's run out our BoxLang section by going to our BoxLang FAQ corner this week.
This week I chose to highlight some of the Java integration that you can see inside of
BoxLang.
specifically importing.
So you can import Java classes directly into your BoxLang file and then be able to use
them.
Static methods, create new instances of classes.
You can also do star imports.
So you can, for instance, import all of Java util and then you'll get the ArrayList, the
HashMap, all of those in there.
as well as being able to alias, which is something that I've wanted forever.
That's not just a Java import feature.
That's any BoxLang import can be aliased.
So now when you have, you know, two different collection classes, you can name them as
you'd like and have them in your file without having to have that full path everywhere.
So lots of great things with imports inside of BoxLang for you to use.
Okay, that rounds out our BoxLang corner.
We can jump into a few CFML updates.
There's just a couple this week.
The first one I found was one from Ben Nadel about struct keys that contain dots, just
work in Adobe ColdFusion and that just work is in quotes.
And I appreciate that he put it in quotes.
The idea here was in using a .properties file or sorry a .ini file I believe for Adobe
ColdFusion Ben found that you could put you know nested keys right like foo.bar equals
some value and
As you might expect, if you use bracket notation on the struct and put foo.bar in there,
it works exactly how you'd like in every engine.
Lucee, BoxLang, ColdFusion But in ColdFusion you could even just chain it together without
the quotes.
variables.foo.bar would find that quote.
And so, yeah, interesting.
It works both ways for ColdFusion.
It's not how it works for Lucee.
That's not how it works for BoxLang.
It's not how it works for Java.
So maybe that's useful to you.
It made me kind of sad, which is why I thought it was good to put that in quotes.
If you've said the key is foo.bar, then that should be the key, not a weird amalgam.
But.
Now you know, it will work in Adobe ColdFusion and won't work anywhere else.
So there you go.
The other one we wanted to talk about, there's a new CFML wrapper for the Zint barcode
generator.
Now I've never heard of Zint.
It is a command line tool, so you can guess who made this wrapper.
That's right, it's James Moberg, the king of command line wrappers for ColdFusion
So we'll include the link to that It does make some cool looking QR codes.
So definitely check out his blog post it like Has an embedded earth with like a ring
around it of a QR code and that's kind of crazy so
Very interesting.
On a separate note, I found out with QR codes that have images embedded I always wondered
how do they do that?
You know, how do they build around it?
How does it still scan it?
uh There actually isn't any trick QR codes have built in like Redundancy so in case part
of it gets obscured or part of it gets, you know smudged or ripped off like it can
recreate the entire QR code from just a portion and so when you embed an image
the middle you're not actually changing the QR code you're just relying on the fact that
all the information can be made up somewhere else so just kind of a funny thing so I
looked into that wanting to I thought about building my own because I don't know about you
but whenever I have to go create a QR code you get sent to all the websites that are like
sign up for a $20 a month plan and we'll give you all these features and I'm like I just
want a QR code that points to a web page I don't need anything like
this but they're the ones that give you all the cool things like put your logo in the
middle of this or so anyway I have not made that site yet so one day maybe but I did find
out how to do images hey there was your bonus CFML update all right
we move on to events.
Alright, well we have a...
If you missed into the box, we have the video series is now live on CFCasts.
So this is a premium series.
We're going to post the link here.
However, if you attended online or you were on site, you should have free access to these
videos.
So if you log in, you don't have access, definitely reach out to us and we will get that
taken care of for you.
Our Patreons also get free access to the series.
Just as a special thank you for continuing to support all that we do and we'll send you a
token.
So again, if you haven't received that, please reach out.
If you want to just purchase the series, if you weren't able to attend, you can do that
for $250 and that will give you on-demand lifetime access to the whole series.
And CFCasts subscribers, we will be posting this on November 1st.
So we will be doing that where it will just become available if you are a CFCasts
subscriber.
Also, in case you missed it, we had a webinar this week or so ago on June 18th.
It was building AWS Lambda apps with BoxLang led by Luis Majano We have a link up to that
video up on our YouTube page that we'll include for you.
And coming up in July, July 23rd, we've got a webinar, which is by Ray Camden, and it's
covering Let's Build an App with Boxlang.
So free tickets are available to this, and we'll be posting the link.
It looks like it's July 23rd, 11 a.m.
Central.
So if you can make that, that's probably gonna be a good one to check out.
Alright, CF Camp slides and recordings are up.
We have the slides up on the Ortus site and on our YouTube channel we have links to the
three different recordings that we have.
Go ahead and check those out in case you missed it, including the BoxLang Keynote that we
did up there.
And then we got one more event that we have on our radar, which would be ColdFusion Summit
2025.
Yeah, so I'm personally very excited because this is going to be my first CF Summit to not
only attend but also to be presenting a session on.
So this is September 22nd and 23rd.
Certifications are available on the 21st or 24th.
And if you're interested, Luis and I both will be hosting a CBWire workshop.
So that's a two-day training after CF Summit where we're going to be digging into
everything CBWire, how it works, how to use it in your apps, and also just spending time
answering questions and working through maybe any sort of...
things that you might want to particularly work on, we'll be there to help you with.
So, would love to see you guys, if you're gonna be attending CF Summit at the CBWire
Workshop, so, very excited.
All right, we told you it be a quick one today.
We are at the end of it.
We also want to thank all of our Patreon supporters.
These are individuals and companies that are supporting our open source initiatives to
ensure we can continue delivering great products, deliver this podcast, funding
infrastructure for Forgebox.
We are very grateful to them for supporting this community.
You can find out more at patreon.com/ortussolutions
And don't forget that if you subscribe at the Bronze Package or up, ForgeBox Pro and
CFCasts subscriptions are yours as a perk.
Again, you can go to patreon.com/ortussolutions or view a list of all of our current
sponsors at ortussolutions.com/about-us/sponsors
So thank you again to all our Patreon supporters and thank you to you for listening to the
podcast this week.
We hope for those of you in the States that you have a wonderful holiday weekend.
And for those of you not in the States, we hope you have a wonderful weekend as well.
Definitely.
All right.
I think that wraps this one up.
Bye, everybody.
now.
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