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:
  • 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:
 
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
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
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
  • 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.

  • 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!!!

★ Support this podcast on Patreon ★

Switch to Modernize or Die ® Podcast - SoapBox Edition - Switch to Modernize or Die ® Podcast - Conference Edition

Powered by

Music from this podcast used under Royalty Free license from SoundDotCom and BlueTreeAudio

© 2019 Ortus Solutions