All Episodes

August 5, 2025 19 mins

Hosts: 

  • Eric Peterson - Senior Developer at Ortus Solutions
  • Grant Copley - Senior Developer at Ortus Solutions

SPONSOR — ORTUS SOLUTIONS


CBWire 


🎙️ This episode is sponsored by CBWire; the fastest way to build reactive, modern UIs without leaving your CFML server!


With CBWire, you can forget about complex front-end frameworks and endless JavaScript. CBWire brings simplicity, speed, and power to your development workflow by letting you build dynamic, real-time interfaces directly in ColdBox. Whether you're modernizing legacy apps or launching new ones, CBWire helps developers and companies ship faster with cleaner, more maintainable code.

Ready to level up? Join our 2-Day CBWire Workshop right after Adobe CFSummit 2025, led by creators Grant Copley and Luis Majano, and get hands-on with everything you need to master CBWire.(Sept 24-25 Las Vegas, Nevada)


🔗 Learn more and register:
Workshop-Reactive-UIS-CBWire.eventbrite.com 

BoxLang

CFML Updates 

Events


Episode Transcript

Available transcripts are automatically generated. Complete accuracy is not guaranteed.
(00:05):
Hello and welcome to the Modernize or Die podcast.
It is August 5th, 2025.
This is episode 238.
My name is Eric Peterson and I'm joined today by Grant Copley.
How are doing, Grant?
doing good.
How are you doing?
I'm doing pretty well.
It's crazy to think we're in August already.
I know and if you have kids they're probably starting school.

(00:28):
So my daughter just started her school today so summer is ending.
It's true.
My kids got two more weeks left and we're both counting down for different reasons.
Well, hope your summer has gone well, all of you out there listening, and thanks forjoining us today.
We want to start by thanking our sponsor, Ortus Solutions, and tell you a little bit abouta upcoming workshop that we have.

(00:53):
So this episode is sponsored by CBWire, which is the one of the fastest ways to buildreactive modern UIs without leaving your CFML server.
So as many you probably know, I'm the lead on CBWire.
So it felt appropriate for me to tell you about it this morning.
But you can forget about front-end frameworks and endless JavaScript.
CBWire tries to simplify all that for you.

(01:16):
And if you're interested in it, we've got a two day CBWIRE workshop that's going to beright after Adobe CF Summit 2025.
So it will be led by yours truly and Luis Majano And if you attend, it is a two dayworkshop and you get a hands on experience and we're going to do a deep dive into anything

(01:38):
and everything CBWIRE.
So we'd love for you to attend that September 24th and 25th in Las Vegas.
Awesome, that sounds like a great time
I'm looking forward to it.
Well, let's jump into some news.
Let's tell you about some BoxLang things this week.
We'll start with a community post from Ray Camden about simple charting with BoxLang.
I actually really liked his opening here.

(02:01):
If you pull it open, he says, building a BoxLang app and want to know how to do chartingwith it.
The answer is simple.
Don't.
uh Which you might be sitting there thinking, wait, what?
But the idea is charting for the most part is a front end concern and your users are goingto want interactive charts that they can hover and click around and drill down.

(02:22):
And you just can't do that without going into JavaScript.
So just use JavaScript.
Now, if you're sitting there thinking, but I want to like print this, I want to generateit in a PDF, I would point you to tools like WKHTML to PDF, which is a mouthful.
but it's a open source tool to basically run your web page and take a PDF screenshot of itfor lack of a better word.

(02:44):
There's even a Forgebox module out there made by the Inleak group that works with a Dockercontainer so you can easily make those PDFs.
then it goes through, you know, here's how you provide data to the chart and initializethat JavaScript.
And, um, I believe there is a CF chart, sorry, a BoxLang chart library slated fordevelopment when somebody that is a

(03:10):
paying subscriber wants it.
So until then, keep your life simple.
I know one of my previous jobs, we loved high charts was the charting library we used.
And it could do a ton of stuff.
You know, once you got the data, you know, like, here's a map of things and you can clickon it and drill down to the countries and then the countries you can see numbers and heat

(03:35):
maps on the map and like it's
Yeah, so there's lots of.
issue nowadays is there's so many to out there, it's trying to figure out which one to gowith.
It's true.
And it also depends on your budget, Like, high charts is not free.
Chart.js is, I think, what Ray was using, which is really great for a fully open sourceand free chart library.

(03:57):
I mean, start there if you need something.
And then look at other ones if you need that.
great little blog post there about charting and BoxLang.
We had a couple of releases as well.
BoxLang 1.4 is out and it is being billed as the biggest release yet.
I'm guessing that means biggest release since 1.0, since I think 1.0, the whole language,is a pretty big release.

(04:23):
Yeah, I think that's fair to say.
But yeah, this is a big one.
So just look, we're going to post the link here, but just some of the highlights from therelease, new async primitives.
So things like async run, async all, async any, all kinds of asynchronous goodness they'veput into this release.
There's been some improvements with mini server.

(04:44):
So I see here environment variables, health checks.
Additional security protections looks like there's a lot of changes there Performanceimprovements with strings and JSON and custom component lookups tons of bug fixes.
Actually, I've got hundreds of bug fixes here don't know if that's literally but theremight Okay Yeah, and then it looks like new documentation which I yeah, I know that

(05:13):
they've been uh
pretty busy with that stuff.
everything from the mini server to transactions and all that good stuff.
So yeah, really big release and I'm excited to check it out.
I think my favorite here has to be the async stuff.
Having dealt with it across multiple engines now, you appreciate the power that BoxLanghands you.

(05:34):
It's very simple when that's all you need, and then you can dive into basically the wholepower of Java completable features underneath when you need it.
So that's great.
And we also had one more release in a BoxLang module, the BoxLang JSoup module.
JSoup is a library, a Java library used to parse HTML.

(05:55):
You can use it to grab data out that you need.
You can use it to clean HTML if you're, you know, accepting user content and you need tomake sure to sanitize that.
You could do a lot with, even with pipelines, I've seen things transforming.
HTML into structured JSON, which is pretty crazy.
All built in, huge power of BoxLang is how easy it is to tap into Java and even easierwhen you install a module that gets that jar for you and gives you a couple of built-in

(06:23):
functions to start dealing with Jsoup documents.
So if you're in BoxLang, this probably supplants the...
Is it cbjsoup on ForgeBox?
There's one.
I don't know.
I made one, I thought.
Maybe I used somebody else's.
Let's see.
No, I must have used somebody else's.
Don't tell me.
Eric, that you had really done all of the modules that are in existence.

(06:45):
You've done a bunch.
I have.
I used Jsoup way back in the way to make a integrated testing library where you couldbasically say, visit this page, type this, type that, press this button.
Kind of like you would think like Cypress or Playwright tests, but it was all...
just static HTML.

(07:05):
wasn't running a browser.
wasn't clicking.
It was using Jsoup to basically say, make sure this form field exists that he said typeinto store this data, get ready to send it off.
like, it hasn't seen updates since, I don't know, 2020.
Like, it probably works, but yeah, I tend to use, I tend to need JavaScript supportnowadays.
So playwrights kind of my thing for that, but.

(07:25):
JSoup was very good on that and there is a coldbox JSoup module.
Don Bellamy wrapped that up.
So if you're not on BoxLang, CBJSoup and if you're on BoxLang, BXJSoup.
All right, should we talk about some CFML updates?
I grabbed one out when I was looking today.
I saw a question on the community forum and posted an answer, so I figured I'd bring itup.

(07:50):
It was about handling custom JWT claims in CB Security.
So cbSecurity has built in JWT support, JSON web tokens, and claims in those tokens isbasically any data that you want to put in.
And when you decode the token, you can see that data.
A JSON web token, for those that haven't used it, is just a serialized JSON object thatincludes a signature so you can verify that it hasn't been tampered with and that you can

(08:16):
trust that data.
and you can put anything you want in those custom claims.
And this person was asking how to do that in CB security.
So I was pointing out there are two main ways.
One is your subject that's being logged in or that's having the token created for it hastwo methods that will be called on it.
There's a get JWT custom claims and get JWT scopes.

(08:39):
So that custom claims is a perfect place to take the structure passes you add anythingelse you want and send it back.
So if your claims are per user, that's a perfect place.
And then when you are logging in, the attempt and the from user methods both accept customclaims being passed in.
For one client, we use that to like look at a remember me token.

(09:02):
And if it's checked, we up the timeout, right?
We pass it a higher timeout that gets merged in.
So those are two ways that you can.
Adjust the custom claims based on where you need in your application.
Very nice.
All right.
And we also have an update from Ben Nadel.
We've got a blog on explicit arguments, always override argument collection.

(09:22):
So I did not know this, and I do this all the time.
I use argument collection.
So if you don't know, when you are passing arguments to a function in CFML, you can...
pass them all, you can do them individually or you can do it all at once in this argumentcalled argument collection.
And apparently there's a little more to it than that according to Ben's blog post.

(09:45):
So you can not only pass argument collection and then pass in a series of arguments, butthen in addition to that, you can actually pass additional arguments that end up
overriding what you're sending in argument collection.
So.
This is one of those things, you know, as long as I've been doing this, I don't think I'veever had an instance where I was trying to pass in something other than just argument

(10:08):
collection, because I didn't know that you could.
I just always assumed that it was just, you had to put everything in argument collection.
So anyway, it's been uh blogged on that.
We'll post the link here.
So I thought that was kind of interesting.
Yeah, I mean, it was kind of like a weird spread operator, right?
In JavaScript, where you can, depending on if you put the keys before or after they getoverridden.

(10:30):
But in this case, explicit keys always overwrite argument collection.
So, yeah, I'm with you.
I did it.
see if that's consistent across the CFML engines, but I'm assuming it is.
question Ben usually puts in a couple but in this case
He only has a screenshot from Adobe?
Yeah, that's a good question.

(10:51):
Yeah, I think I'm going to keep doing what I do, which is build up that argumentcollection struct beforehand and handle overrides in the order I want so I can remember
why it's happening.
but yeah.
Also from Ben this last few weeks was creating runtime extensions and polyfills inColdFusion.

(11:14):
I think this is a very classic.
Ben posts where he goes through kind of setting up a framework so that you can injectthese methods in a clean and also bounded way so they don't become like global and
polluting your variable scope or anything like that.
So he goes through a few and like putting in a system output or dump polyfill right youcan use those in

(11:38):
BoxLang in Lucee, but not in Adobe.
And so there's a way to add that.
It reminded me a lot of things that Wirebox does with its runtime mixins or evenColdFusion has, not ColdFusion, sorry, ColdBox has application helpers or view helpers
that you can register and get put in every file.
It's interesting.

(11:59):
Part of the reason that he wanted to go through this was, I guess his work has a globalfunction E, just the letter E as an alias for encode for HTML.
he was fresh.
Maybe I don't know for us, he's the right word, but saying like, how do you know what thatis?
They seem mysterious.

(12:20):
They seem surprising.
And this whole lot.
exercise was how to make that more explicit so you know where all these are coming from.
And I think that's one thing I like about Coldbox is at first it kind of feels mysterious,but once you learn here's where the framework grabs all those functions from and if I add
a function here it now appears like it becomes less mysterious.

(12:41):
it in all your we're all creating a framework and there's always some some learning curveto get up to speed on that.
And until then, some things just seem like magic.
But once you understand the magic, then you can extend it and augment it for your ownneeds.
Yeah, for sure.
All right, shall we talk about some events that are coming up?
All right, so in case you missed it, build a Boxlang app webinar with Raymond Camden.

(13:04):
We'll post the link there.
So if you didn't get a chance to see that, go check it out.
And I think there's going to be a few of these because this is listed as part one ofthree.
part two and three supposedly coming to you soon, but, not in August because August wehave a different webinar.
We have leveling up your async game with BoxLang presented by Jon Clausen This is going tobe August 20th at 11 AM central time.

(13:34):
It is free.
You can register at Eventbrite.
and we'll put the link to the blog post in the show notes.
Yeah, so I'm assuming he's going to be covering all the all the async goodies that justcame out.
That and I know there's a lot that came up before like John specifically worked on thevirtual thread support Which is Normal Java threads and so anything async worked on Actual

(13:58):
platform threads right like how many threads your computer had access to and you cansaturate those Virtual threads is I want to run this Asynchronously, it doesn't need its
own dedicated platform thread.
It can share them
And so you can now have hundreds of threads, virtual threads running without, you know,bogging down the JVM and causing performance issues.

(14:20):
So he worked on that part.
You can access virtual threads in BoxLang.
So I'm sure that's going to be part of it as well.
So that's going to be one not to miss, especially if you're like, I haven't really gotteninto the async stuff.
Like it can change your code dramatically and the tools in BoxLang make it so easy to usewithout some of the normal headaches that the other CFML engines tend to have.

(14:45):
We also have Adobe Confusion Summit 2025 coming up.
We talked about it briefly, September 22nd and 23rd.
There is a certification available on either the 21st or 24th.
Tickets are still available at CFSummit.AdobeEvents.com.
If you are doing the certification, you're going to want to go on the 21st before theconference.
So that way you're available for the Ortus training afterwards on the 24th and 25th thatwe talked about.

(15:11):
That's that CBWire Workshop led by Grant here and Luis.
Make sure to grab tickets to that.
It's going to be great and you'll have a wonderful week of CF and BoxLang learning.
Yeah.
So, and I really enjoy, you know, we did the workshop at end of the box and loved it.
The only thing, the only downside to it was trying to fit everything into one day.

(15:32):
And I'm pretty excited that this is going to be a two day workshop because it's reallygoing to give us time to, to, really dig into it.
So we've got that and then already, I can't believe this, Into the box 2026 is now out.
Our call for speakers is open.
So if you are interested in being a speaker, we would love to hear from you.
Can't wait to see what awesome BoxLang stuff comes out.

(15:56):
It's like we opened this entirely new avenue of creativity.
It's not just cold box and other box goodness, it's BoxLang
Yeah, and being able to extend the language and yeah, it's going to be interesting.
em That is April 29th through May 1st is into the box.
There will be some workshops before then as well.

(16:16):
The call for speakers is open until November 15th.
So you've got some time.
Go ahead and submit those topics.
We're very excited to see what you come up with.
Speaking of Into the Box, the video series for Into the Box 2025 is live on CFCasts forall attendees.

(16:37):
If you are just a CFCasts subscriber or not a subscriber and you want access to this, canpurchase it at a premium right now.
CFCasts subscribers will be getting access later this year on November 1st.
And Patreons also have free access for their, as a token of appreciation for their ongoingsupport.

(16:57):
If you are in any of the groups that should have free access and don't, please drop us aline so we could get you all set up on
Additionally, we have some YouTube links and a blog post that will take you to the CF Campslides and recordings that Ortus was in charge of that would include a few sessions there
as well as the keynote for, I think, day two, one of the days.

(17:18):
So lots to catch up on if you've missed some of these events.
Better than just come to them in person next year, right?
Get your tickets now.
Day one keynote.
I was wrong.
Day one keynote.
Awesome.
All right.
We got through this one pretty quick.
We we don't want to waste any of your time today.
Other days we'll waste your time, but not today.
Well, we definitely don't want to leave without giving a huge thanks to our Patreonsupporters.

(17:43):
So these are individuals that are personally supporting our open source initiatives tosupport things like Command Box, Forge Box, Cold Box, Content Box, all the boxes and help
us do continued development on those.
So your contributions fund our cloud infrastructure for the community, things like ForgeBox and package management with Command Box.

(18:03):
And we're going to post a link where you can, if you're interested in being a Patreon, youcan join us and we have annual memberships.
You pay for the year and you can save 10%.
It's great for businesses.
And I think we've got different packages.
We've got like a bronze package and up bronze packages and up now get a Forgebox Pro andCFCasts subscription with your Patreon subscription.

(18:25):
All Patreon supporters, get a profile badge on the community website and private forumaccess on the community website and then also a private channel in our Box Team Slack,
which we are always active on, always on the Slack.
And so thank you again to all of our Patreons for supporting what we do.
And I think we are up to 61 now, is what I'm seeing.

(18:49):
So yeah, thank you guys.
And thank you everyone for tuning in.
Thank you to our live viewers and thank you to you listening wherever you listen to yourfine podcasts.
We'll be catching you again in two weeks.
We'll see you then.
Bye everyone.
Advertise With Us

Popular Podcasts

Dateline NBC

Dateline NBC

Current and classic episodes, featuring compelling true-crime mysteries, powerful documentaries and in-depth investigations. Follow now to get the latest episodes of Dateline NBC completely free, or subscribe to Dateline Premium for ad-free listening and exclusive bonus content: DatelinePremium.com

Stuff You Should Know

Stuff You Should Know

If you've ever wanted to know about champagne, satanism, the Stonewall Uprising, chaos theory, LSD, El Nino, true crime and Rosa Parks, then look no further. Josh and Chuck have you covered.

NFL Daily with Gregg Rosenthal

NFL Daily with Gregg Rosenthal

Gregg Rosenthal and a rotating crew of elite NFL Media co-hosts, including Patrick Claybon, Colleen Wolfe, Steve Wyche, Nick Shook and Jourdan Rodrigue of The Athletic get you caught up daily on all the NFL news and analysis you need to be smarter and funnier than your friends.

Music, radio and podcasts, all free. Listen online or download the iHeart App.

Connect

© 2025 iHeartMedia, Inc.