Modernize or Die® - CFML News Podcast for August 8th, 2023 - Episode 201
2023-08-08 Weekly News - Episode 201
Watch the video version on YouTube at https://youtube.com/live/HJHCDA-UbV8?feature=share
Hosts:
Watch the video version on YouTube at https://youtube.com/live/HJHCDA-UbV8?feature=share
Hosts:
- Eric Peterson - Senior Developer at Ortus Solutions
- Daniel Garcia - Senior Developer at Ortus Solutions
Thanks to our Sponsor - Ortus Solutions
The makers of ColdBox, CommandBox, ForgeBox, TestBox and all your favorite box-es out there.
A few ways to say thanks back to Ortus Solutions:
- Like and subscribe to our videos on YouTube.
- Help ORTUS reach for the Stars - Star and Fork our Repos
- Star all of your Github Box Dependencies from CommandBox with https://www.forgebox.io/view/commandbox-github
- Subscribe to our Podcast on your Podcast Apps and leave us a review
- Sign up for a free or paid account on CFCasts, which is releasing new content every week
- BOXLife store: https://www.ortussolutions.com/about-us/shop
- Buy Ortus’s Books
- 102 ColdBox HMVC Quick Tips and Tricks on GumRoad (http://gum.co/coldbox-tips)
- Learn Modern ColdFusion (CFML) in 100+ Minutes - Free online https://modern-cfml.ortusbooks.com/ or buy an EBook or Paper copy https://www.ortussolutions.com/learn/books/coldfusion-in-100-minutes
Patreon Support (Amazing)
We have 40 patreons:
https://www.patreon.com/ortussolutions.
News and Announcements
Passing the Baton: Lucee 5.4 and Hibernate ORM
As of Lucee 5.4.1.8, new Lucee builds will no longer bundle the (Lucee) Hibernate extension. This means that if you rely on Hibernate ORM in your CFML application, you will need to manually bundle the Hibernate extension into your Lucee server. Let's read on for more info.
The News
First, let's start with the official note from the Lucee 5.4.1.8 Stable Release notes (courtesy of Zac Spitzer):
Lucee ORM is no longer being developed or bundled by the Lucee Team, Ortus have forked and taken over the development of ORM for Lucee, see Introducing: The Ortus ORM Extension.
It seems that Lucee has made the decision to 1) trim the Lucee installation size by no longer bundling the Hibernate extension with new Lucee installations, and to 2) halt further development on the Lucee Hibernate extension. It is unclear whether "no longer being developed" is referring to new features only, or whether that includes bug fixes and security patches as well.
This news means that Micha and the LAS team can focus on the Lucee server platform, bringing you speed and stability, while Ortus provides the Hibernate integration for a powerful database ORM layer.
https://www.ortussolutions.com/blog/passing-the-baton-lucee-6-and-hibernate-orm
New Releases and Updates
ColdBox v7.1.0
ColdBox 7.1 introduces several new features that expand the capabilities of the framework and facilitate better development practices:
Scheduled Tasks Debugging
You can now add a debug argument to your task definitions, and your console will add tons of debugging for your tasks:
`task( name : "My Task", debug : true )`
toRedirectTo() Matcher
You can now use this matcher to test relocations in a nice fluent expectation:
`expect( event ).toRedirectTo( "main.index" )`
REST on{errorType}Exception() Convention
Thanks to our very own Gavin Pickin you can now create exception handlers in your REST Handlers that follow the on{type}Exception() convention and you can listen to specific error type exceptions:
`function onTypeMismatchException( event, rc, prc )`
https://www.ortussolutions.com/blog/coldbox-710-released
TestBox v5.2.0 and v5.3.0
v5.2.0
New Features
Faster Performance with Updated MixerUtil
TESTBOX-375
Introduces enhancements to the MixerUtil module, resulting in faster performance during dynamic mixins and enhancing the flexibility of your test suites.
More Control with bundlesPattern in TestBox Init
TESTBOX-376
Adds the bundlesPattern parameter to testbox.system.TestBox's init method. This new addition gives you greater control over defining the pattern for your test bundles, making test organization a breeze.
Introducing TestBox Modules
TESTBOX-377
Brings a game-changing feature to TestBox - Modules support! Now you can create and utilize modules to extend TestBox's capabilities, opening up endless possibilities for tailored testing workflows. Check out our docs: https://testbox.ortusbooks.com/in-depth/modules
Bug Fixes
Query Compatibility in Expectation
TESTBOX-346
Addresses an issue where using expect(sut).toBeInstanceOf("something")) with a query could cause unexpected behavior. This has been resolved, ensuring a smoother testing experience with query objects.
Improved cbstreams Functionality
TESTBOX-374
Fixes issues related to cbstreams outside of ColdBox, ensuring seamless functionality in various environments.
Improvements
Enhanced toBeInstanceOf() Handling
TESTBOX-20
Improves the handling of toBeInstanceOf() expectations for Java classes, making it even easier to write precise and robust tests for Java objects.
v5.3.0
New Features
toBeIn() and toBeInWithCase() Expectations
TESTBOX-379
These new expectations allow you to verify the presence of a needle within a string or an array target. With the toBeIn() expectation, you can easily check if the expected needle exists in the target. Additionally, toBeInWithCase() performs a case-sensitive check for the needle in the target. These powerful expectations enhance your testing capabilities and streamline the validation of data within your tests.
New Matchers and Assertions for String Start
TESTBOX-380
With these new matchers and assertions, namely toStartWith(), toStartWithCase(), startsWith(), and startsWithCase(), you can validate whether a string begins with an expected prefix. These matchers come with their appropriate negations, allowing you to easily test and verify the starting points of strings in your application.
New Matchers and Assertions for String End
TESTBOX-381
TestBox v5.3 introduces powerful matchers for checking the end of strings. The new matchers include toEndWith(), toEndWithCase(), endsWith(), and endsWithCase(). These matchers enable you to confirm the presence of an expected suffix in a given string, making it convenient to test the endings of strings during your test suite executions.
Bug Fixes
onSpecError suiteSpecs Correction
TESTBOX-378
In previous versions, there was a minor issue with onSpecError, where the suiteSpecs attribute was mistakenly referred to as suiteStats. With TestBox v5.3, we have fixed this bug, and the attribute is now correctly recognized as suiteSpecs. This ensures that error reporting and handling in your test suites function as expected, providing you with accurate and helpful feedback during testing.
https://www.ortussolutions.com/blog/testbox-v52-release-embracing-performance-and-extensibility
https://www.ortussolutions.com/blog/testbox-v53-release
Ortus Redis Extension v3.0.0
We are very excited to bring you another release for our Redis Lucee Extension. This release:
- Updates the underlying Redis java driver from v2.9.3 to v4.4.3
- Added SSL and username support to RedisClusterCache configuration
- Added username support to RedisCache ( non-cluster ) configuration
These enhancements have been made to ensure full compatibility with both standalone Redis implementations, as well as AWS Elasticache configurations and authentication mechanisms.
https://www.ortussolutions.com/blog/ortus-redis-extension-v300-released
Lucee Script Runner Updated
The Lucee Script Runner has been updated with some additional features:
luceeVersionQuery
You can now specify a query string to run with the following syntax to select which version of Lucee you want to run, it overrides `luceeVersion`.
Compile
Passing in `-Dcompile=true` on the command line or compile: true will compile all the code under specified webroot
This is great for catching any invalid CFML during CI before it hits production, also great for checking your code against the latest 6 snapshot to catch any errors introduced which causes errors with your codebase
Windows Runner support for Github actions
The `action.yml` has been updated to use Windows syntax for running script-runner. You can see examples in the image extension repo: https://github.com/lucee/extension-image/actions
https://dev.lucee.org/t/lucee-script-runner-version-query-compile-github-actions-windows-support/12865
https://github.com/lucee/script-runner
Webinar / Meetups and Workshops
ICYMI — Hawaii ColdFusion Meetup Group — CF Scheduled Tasks: more than you may know, and should
Speaker: Charlie Arehart
Friday July 28th, 2023 at 3pm PT
If folks were asked to discuss CF scheduled tasks, I suspect most would feel "there's not much 'to say", but there really is a lot more to working with them simply "setting a given url to run on a given schedule" (did you know it could be a CFC, for instance?).
There are both more features than most realize, as well as solutions to common problems people can face when running them, and a lot of myths regarding old limitations that have since been lifted. In this talk, veteran CF troubleshooter Charlie Arehart will address all these and more, starting with a focus on tools and techniques for solving common problems with them, then showing several ways to create them (yes, even more than just cfschedule and the CF Admin UI).
He'll then review several features of using tasks that you may have missed—to include distinguishing which few are NOT available in CF Standard.
He'll also discuss briefly the underlying quartz open source framework that powers them (and offers still more extensibility), as well as the underlying neo-cron.xml file and tips for protecting that, and he'll even identify ways to control/allow access to managing tasks that may surprise many. He'll conclude with alternatives when the base features don't suit you.
https://hawaiicoldfusionusergroup.adobeconnect.com/p6izv4ia43a7/
Hawaii ColdFusion Meetup Group — Graph QL & ColdFusion
Speaker: Mark Takata
Friday, August 25, 2023 @ 12 PM HAST (Hawaii Standard Time)
GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. GraphQL provides a complete and understandable description of the data in your API, gives clients the power to ask for exactly what they need and nothing more, makes it easier to evolve APIs over time, and enables powerful developer tools.
GraphQL is a query language for APIs and a runtime for executing those queries with your existing data. It provides a more efficient, powerful, and flexible alternative to REST.
In ColdFusion 2023 we are providing a native method of consuming and sending data across GraphQL using GQL. This includes support for fragments, variables, aliases, queries, mutations, subscriptions and more.
Also, this talk will go over on why to use Graph QL over REST APIs.
https://www.meetup.com/hawaii-coldfusion-meetup-group/events/294631289/
Adobe Upcoming Events
Adobe ColdFusion Workshop
WEDNESDAY, AUGUST 9, 2023
9:00 AM EDT
Online Event
Brian Sappey
https://adobecf-1day-workshop.meetus.adobeevents.com/
Join the Adobe ColdFusion Workshop to learn how you and your agency can leverage ColdFusion to create amazing web content. This one-day training will cover all facets of Adobe ColdFusion that developers need to build applications that can run across multiple cloud providers or on-premise.
The workshop will explore:
- The major features in the latest release of Adobe ColdFusion
- How to use CFML to develop, test, and deploy web applications
- Adobe ColdFusion constructs and functions
- How to reuse code in Adobe ColdFusion
- The Adobe ColdFusion application framework and basic database operations
- Object-oriented programming and object-relational mapping
- Basic error handling in Adobe ColdFusion
- PDF, forms, and spreadsheet support in Adobe ColdFusion
Webinar - Road to Fortuna Series: Exploring the New Google Cloud Platform Features
FRIDAY, AUGUST 25, 2023
10:00 AM PDT
Online Event
Mark Takata
https://google-cloud-platform-adobe-coldfusion.meetus.adobeevents.com/
During the Road to Fortuna Series: Exploring the New Google Cloud Platform Features webinar, Mark Takata will explore the new native hooks that Adobe ColdFusion is adding to work with the Google Cloud Platform. He will focus on features related to the GCP FireStore document database, Storage capabilities, and PubSub messaging features, providing attendees with valuable insights into how these features can be leveraged to optimize application development and delivery on the Google Cloud Platform. The session will be highly technical and will provide attendees with practical examples and use cases.
CFCasts Content Updates
https://www.cfcasts.com
Recent Releases
- Into the Box 2023 Videos is available for purchase as an EXCLUSIVE PREMIUM package. https://cfcasts.com/series/itb-2023
- Subscribers will get access to premium packages after a 6 month exclusive window.
- Into the Box Attendees should have their coupon code in the email already!!!!
- 2023 ForgeBox Module of the Week Series - 1 new Video https://cfcasts.com/series/2023-forgebox-modules-of-the-week
- 2023 VS Code Hint tip and Trick of the Week Series - 1 new Video https://cfcasts.com/series/2023-vs-code-hint-tip-and-trick-of-the-week
Coming Soon
- More ForgeBox and VS Code Podcast snippet videos
- ColdBox Elixir from Eric
- Getting Started with Inertia.js from Eric
Conferences and Training
Adobe CF Summit West
Las Vegas 2-4th of October.
Get your early bird passes now.
Session passes @ $199
Professional passes @ $299.
First round of speakers has been announced - with some great sessions
https://cfsummit.adobeevents.com/
STUDENTS can get a free pass if they are enrolled at tertiary level educational institutions
Ortus CF Summit Training - ColdBox 7 Zero to Hero
Date: October 4th - 5th, 2023 | Right after Adobe CFSummit, 2023
Speakers: Luis Majano & Gavin Pickin
Location: Las Vegas, Nevada
Venue: Regus - Las Vegas - 3960 Howard Hughes Parkway Paradise #Suite 500 Las Vegas, NV 89169 United States
Ticket Price
- Early Bird Price: $499 (Available until August 18th, 2023)
- Regular Price Tickets: $699
- 25% Discount today: https://www.eventbrite.com/e/659169262007/?discount=modernize
Spotlight
- Less than 2 miles from the Mirage - 30 mins walk
- Next to Marriot hotel - 2 min walk
- 1 mile to Top Golf - 20 min walk
- 5 min walk to Fogo de Chão Brazilian Steakhouse
- 5 min walk to starbucks
- 5 min walk to Lo-los chicken and waffles
WIN WIN WIN WIN
https://www.eventbrite.com/e/workshop-coldbox-from-zero-to-hero-tickets-659169262007?aff=oddtdtcreator
Into the Box LATAM
November 30th - more details to follow
University of Business in El Salvador.
ITB 2024
https://www.eventbrite.com/e/workshop-coldbox-from-zero-to-hero-tickets-659169262007?aff=oddtdtcreator
Into the Box LATAM
November 30th - more details to follow
University of Business in El Salvador.
ITB 2024
- Locations: Washington, DC
- Dates: May 15-17, 2024
More conferences
Need more conferences, this site has a huge list of conferences for almost any language/community.
https://confs.tech/
Blogs, Tweets, and Videos of the Week
07/26/2023 - Blog - Ben Nadel - Considering UTC And Recording Activity Streak Data In ColdFusion
For as long as I can remember, I've been storing Date/Time values in UTC (Coordinated Universal Time) within my ColdFusion applications. UTC is "the primary time standard by which the world regulates clocks and time" (source). Date/Time values get stored in UTC and then - as needed - translated back into a given user's timezone during the rendering process. This is why, when I added the concept of "workout streaks" in Dig Deep Fitness (my ColdFusion fitness tracker), my initial instinct was to use UTC. Unfortunately, this approach quickly broke down.
https://www.bennadel.com/blog/4492-considering-utc-and-recording-activity-streak-data-in-coldfusion.htm
07/27/2023 - Tweet X Post(?) - Brad Wood - Automated CommandBox Server Tests
I've fully automated the tests in my CommandBox Server Tests repo. Now, with a single Task Runner, I can fire off hundreds of tests across dozens of servers to check for regressions.
https://github.com/Ortus-Solutions/commandbox-tests
07/31/2023 - Blog - Ben Nadel - Auto-Saving Form Data In The Background Using The fetch() API
In Dig Deep Fitness, my ColdFusion fitness tracker, the main gesture of the app is the "Perform Exercise" view. In this view, the user is presented with a series of inputs for resistance weights, reps, and notes. Depending on how fast a user is moving through their workout, they may be on this one view for several minutes without submitting the form back to the ColdFusion server. This "pending data" makes me nervous. As such, I've started auto-saving the form data in the background using JavaScript's fetch() API.
https://www.bennadel.com/blog/4494-auto-saving-form-data-in-the-background-using-the-fetch-api.htm
Beacons : https://developer.mozilla.org/en-US/docs/Web/API/Beacon_API
LocalStorage: https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API
08/02/2023 - Blog - Ben Nadel - My ColdFusion "Controller" Layer Is Just A Bunch Of Switch Statements And CFIncludes
The more experience I get, the more I appreciate using an appropriate amount of complexity when solving a problem. This is a big part of why I love ColdFusion so much: it allows one to easily scale-up in complexity if and when the requirements grow to warrant it. When I'm working on my own, I don't need a robust framework with all the bells-and-whistles. All I need is a simple dependency-injection strategy and a series of CFSwtich and CFInclude statements.
https://www.bennadel.com/blog/4497-my-coldfusion-controller-layer-is-just-a-bunch-of-switch-statements-and-cfincludes.htm
CFML Jobs
Several positions available on https://www.getcfmljobs.com/
Listing over 85 ColdFusion positions from 56 companies across 39 locations in 5 Countries.
2 new jobs listed in the last two weeks
Full-Time - SIS New ColdFusion C1 - Pune, Maharashtra, India
Posted: July 26, 2023
https://www.getcfmljobs.com/jobs/index.cfm/india/SIS-New-ColdFusion-C1-at-Pune-Maharashtra/11592
Full-Time - ColdFusion Developer - Washington, DC, United States
Posted: August 01, 2023
https://www.getcfmljobs.com/jobs/index.cfm/united-states/CFDeveloper-Washington-DC/11593
Other Job Links
There is a jobs channel in the CFML slack team, and in the Box team slack now too
ForgeBox Module of the Week
ColdBox Vite & ColdBox Vite Helpers
by Eric Peterson
This module provides a `vite` helper function in your views for loading files generated by
Vite and the coldbox-vite-plugin in your ColdBox applications.
https://www.forgebox.io/view/vite-helpers
https://www.npmjs.com/package/coldbox-vite-plugin
VS Code Hint Tips and Tricks of the Week
Headwind
By Ryan Heybourn
Headwind is an opinionated Tailwind CSS class sorter for Visual Studio Code. It enforces consistent ordering of classes by parsing your code and reprinting class tags to follow a given order.
Headwind runs on save, will remove duplicate classes and can even sort entire workspaces.
https://marketplace.visualstudio.com/items?itemName=heybourn.headwind
Thank you to all of our Patreon Supporters
These individuals are personally supporting our open source initiatives to ensure the great toolings like CommandBox, ForgeBox, ColdBox, ContentBox, TestBox and all the other boxes keep getting the continuous development they need, and funds the cloud infrastructure at our community relies on like ForgeBox for our Package Management with CommandBox.
You can support us on Patreon here https://www.patreon.com/ortussolutions
Don’t forget, we have Annual Memberships, pay for the year and save 10% - great for businesses everyone.
Need more conferences, this site has a huge list of conferences for almost any language/community.
https://confs.tech/
Blogs, Tweets, and Videos of the Week
07/26/2023 - Blog - Ben Nadel - Considering UTC And Recording Activity Streak Data In ColdFusion
For as long as I can remember, I've been storing Date/Time values in UTC (Coordinated Universal Time) within my ColdFusion applications. UTC is "the primary time standard by which the world regulates clocks and time" (source). Date/Time values get stored in UTC and then - as needed - translated back into a given user's timezone during the rendering process. This is why, when I added the concept of "workout streaks" in Dig Deep Fitness (my ColdFusion fitness tracker), my initial instinct was to use UTC. Unfortunately, this approach quickly broke down.
https://www.bennadel.com/blog/4492-considering-utc-and-recording-activity-streak-data-in-coldfusion.htm
07/27/2023 - Tweet X Post(?) - Brad Wood - Automated CommandBox Server Tests
I've fully automated the tests in my CommandBox Server Tests repo. Now, with a single Task Runner, I can fire off hundreds of tests across dozens of servers to check for regressions.
https://github.com/Ortus-Solutions/commandbox-tests
07/31/2023 - Blog - Ben Nadel - Auto-Saving Form Data In The Background Using The fetch() API
In Dig Deep Fitness, my ColdFusion fitness tracker, the main gesture of the app is the "Perform Exercise" view. In this view, the user is presented with a series of inputs for resistance weights, reps, and notes. Depending on how fast a user is moving through their workout, they may be on this one view for several minutes without submitting the form back to the ColdFusion server. This "pending data" makes me nervous. As such, I've started auto-saving the form data in the background using JavaScript's fetch() API.
https://www.bennadel.com/blog/4494-auto-saving-form-data-in-the-background-using-the-fetch-api.htm
Beacons : https://developer.mozilla.org/en-US/docs/Web/API/Beacon_API
LocalStorage: https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API
08/02/2023 - Blog - Ben Nadel - My ColdFusion "Controller" Layer Is Just A Bunch Of Switch Statements And CFIncludes
The more experience I get, the more I appreciate using an appropriate amount of complexity when solving a problem. This is a big part of why I love ColdFusion so much: it allows one to easily scale-up in complexity if and when the requirements grow to warrant it. When I'm working on my own, I don't need a robust framework with all the bells-and-whistles. All I need is a simple dependency-injection strategy and a series of CFSwtich and CFInclude statements.
https://www.bennadel.com/blog/4497-my-coldfusion-controller-layer-is-just-a-bunch-of-switch-statements-and-cfincludes.htm
CFML Jobs
Several positions available on https://www.getcfmljobs.com/
Listing over 85 ColdFusion positions from 56 companies across 39 locations in 5 Countries.
2 new jobs listed in the last two weeks
Full-Time - SIS New ColdFusion C1 - Pune, Maharashtra, India
Posted: July 26, 2023
https://www.getcfmljobs.com/jobs/index.cfm/india/SIS-New-ColdFusion-C1-at-Pune-Maharashtra/11592
Full-Time - ColdFusion Developer - Washington, DC, United States
Posted: August 01, 2023
https://www.getcfmljobs.com/jobs/index.cfm/united-states/CFDeveloper-Washington-DC/11593
Other Job Links
There is a jobs channel in the CFML slack team, and in the Box team slack now too
ForgeBox Module of the Week
ColdBox Vite & ColdBox Vite Helpers
by Eric Peterson
This module provides a `vite` helper function in your views for loading files generated by
Vite and the coldbox-vite-plugin in your ColdBox applications.
https://www.forgebox.io/view/vite-helpers
https://www.npmjs.com/package/coldbox-vite-plugin
VS Code Hint Tips and Tricks of the Week
Headwind
By Ryan Heybourn
Headwind is an opinionated Tailwind CSS class sorter for Visual Studio Code. It enforces consistent ordering of classes by parsing your code and reprinting class tags to follow a given order.
Headwind runs on save, will remove duplicate classes and can even sort entire workspaces.
https://marketplace.visualstudio.com/items?itemName=heybourn.headwind
Thank you to all of our Patreon Supporters
These individuals are personally supporting our open source initiatives to ensure the great toolings like CommandBox, ForgeBox, ColdBox, ContentBox, TestBox and all the other boxes keep getting the continuous development they need, and funds the cloud infrastructure at our community relies on like ForgeBox for our Package Management with CommandBox.
You can support us on Patreon here https://www.patreon.com/ortussolutions
Don’t forget, we have Annual Memberships, pay for the year and save 10% - great for businesses everyone.
- Bronze Packages and up, now get a ForgeBox Pro and CFCasts subscriptions as a perk for their Patreon Subscription.
- All Patreon supporters have a Profile badge on the Community Website
- All Patreon supporters have their own Private Forum access on the Community Website
- All Patreon supporters have their own Private Channel access BoxTeam Slack
- John Wilson - Synaptrix
- Tomorrows Guides
- Jordan Clark
- Gary Knight
- Giancarlo Gomez
- David Belanger
- Dan Card
- Jeffry McGee - Sunstar Media
- Dean Maunder
- Kevin Wright
- Doug Cain
- Nolan Erck
- Abdul Raheen
And many more Patreons
You can see an up to date list of all sponsors on Ortus Solutions' Website
https://ortussolutions.com/about-us/sponsors
Thanks everyone!!!
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