Modernize or Die® - CFML News for December 15th, 2020 - Episode 83

Brad and Gavin host this weeks episode. They discuss next week's special mystery guest for episode 84, the Christmas episode. They discuss a Date Comparison Inconsistencies blog post shared by James Moberg. They also discuss a blog post by Jason Steinshouer about using CFML with Github CodeSpaces. They share the link for last weeks Online CF Meetup on CommandBox Servers presented by Brad Wood. They briefly discuss Advent of Code and how you can participate. They give you an update on a post on the Sentry site, to get CFML added into the language lists. They give you an roundup of CFCasts Content Updates... including 20 ColdBox Zero to Hero videos and the launch of the 12 Modules of ForgeBox Christmas. They discuss the last week of AWS re:Invent going on right now, and how to watch last week's videos from Github Universe. They mentioned how you can get On Demand Videos in case you miss last week's Security workshop, lead by Pete Freitag from Foundeo's, called "Writing Secure CFML". They discuss how the Adobe ColdFusion Certification is still available online. They spotlight a lot of great blog posts, tweets, videos and podcasts, too many to list, so listen to the show. They announce some jobs from getCfmlJobs.com, as well as a Senior CFML position available at Ortus Solutions. They show off the ForgeBox module of the Week, The ColdBox Paginator, built by Javier Quintero and Ortus Solutions. The module builds the pagination struct for API responses and custom data tables. This week's VS Code Tip of the week is ESLint. Integrates ESLint into VS Code. If you are new to ESLint check the documentation. For the show notes - visit the website https://cfmlnews.modernizeordie.io/episodes/modernize-or-die-cfml-news-for-december-15th-2020-episode-83 Music from this podcast used under Royalty Free license from SoundDotCom https://www.soundotcom.com/ and BlueTreeAudio https://bluetreeaudio.com
2020-12-15 Weekly News - Episode 83

Watch the video version on YouTube at https://youtu.be/9MTS5GMGKyw

Hosts:

Gavin Pickin - Software Consultant for Ortus Solutions
Brad Wood - Software Consultant for Ortus Solutions


Thanks to our Sponsor - Ortus Solutions

CFCasts is releasing new Free and Paid content every week, now including the ColdBox Zero to Hero training series and the 12 Modules of ForgeBox Christmas


Patreon Support

We have 33 patreons providing 61% of the funding for our Modernize or Die Podcasts via our Patreon site: https://www.patreon.com/ortussolutions. If you love our podcasts and all we do for the #coldfusion #cfml community considers chipping in, we are almost there!
https://www.ortussolutions.com/blog/we-need-your-help




News and Events


Podcast News

Special Guest for our next episode, Dec 22nd episode.84 - our Christmas  Episode will have a Mystery Guest
No Podcast Dec 29th - we’re taking a break for the holidays



Date Comparison Inconsistencies - shared by James Moberg

I'm reviewing #cfml date comparisons based on Lucee syntax notes
https://docs.lucee.org/guides/developing-with-lucee-server/language-syntax-differences.html#date-comparison
I discovered some Adobe #ColdFusion inconsistencies where TRUE comparisons are FALSE depending on version used. https://www.trycf.com/gist/7fc7e05ff7121cb481989b57c05c3bd5  As a result, no more date strings for me. #YIKES
https://twitter.com/gamesover/status/1337113503090552834
https://twitter.com/gamesover



CFML Development with Github Codespaces - by Jason Steinshouer

I saw the announcement from Github awhile back for the beta release of their Codespaces product. I thought it looked like an interesting idea and decided to sign up. I was given access awhile back but just recently had some time to play around with it a bit.
The idea of running your development environment in containers is not new. However, typically it has applied to just the application itself. Codespaces takes it a step further by packaging everything including the editor (VS Code), extensions, tools, or anything else needed for development inside a container environment. With Codespaces you can develop from any machine that has a internet browser.
https://jasonsteinshouer.com/2020/12/07/setup-a-cfml-development-environment-in-codespaces.html 



ICYMI - Coldfusion Online Meetup - "Using CommandBox CLI to manage all your servers", with Brad Wood

Thursday, December 10, 2020
11:00 AM to 12:00 PM CST
CommandBox is a CLI tool designed for CFML developers to be easy to use. If you are not a fan of CLI tools, please don't pass over CommandBox until you've given it a try. It is capable of starting any version of Lucee Server or Adobe ColdFusion with no installation. Learn how to easily get started with a local development environment today, get tips to dial in your server settings, and discover how to automate your server setups. CommandBox is used across the CF space for local dev, production, and Docker. We'll cover what you need to know to get started and answer any questions you have about how it works.
Meeting Link: https://www.meetup.com/coldfusionmeetup/events/274974315/
Recording Link: https://www.youtube.com/watch?v=AYeuRWxK_6g



Advent of Code 2020

Advent of Code is an Advent calendar of small programming puzzles for a variety of skill sets and skill levels that can be solved in any programming language you like. People use them as a speed contest, interview prep, company training, university coursework, practice problems, or to challenge each other.
You don't need a computer science background to participate - just a little programming knowledge and some problem solving skills will get you pretty far. Nor do you need a fancy computer; every problem has a solution that completes in at most 15 seconds on ten-year-old hardware.
https://adventofcode.com/2020



Help us get CFML listed on Sentry.io

Giancarlo Gomez started a thread on Sentry.io to get CFML on the Create Project view. As he mentions in the thread, we have a couple of Sentry plugins available, one he created, and one by Brad.
Let’s get behind this thread, like, reply, and make a little noise for CFML.
https://forum.sentry.io/t/adding-coldfusion-as-a-platform/11875



CFCasts Content Updates

12 Modules of ForgeBox Christmas
- 2 Videos already, 1 a day until Christmas

ColdBox Zero to Hero Workshop
- 20 Videos posted already
- 6 Hands-on with Step by Step Instructions
- Releasing Mon / Wed / Fri until 2021

Send your suggestions at https://cfcasts.com/support



Conferences and Training



AWS re:Invent
NOV. 30 – DEC. 18, 2020
Free
Amazon’s Premium Conference is also virtual, and a free 3-week event:
https://reinvent.awsevents.com/



Adobe ColdFusion Certification now available Online

Adobe Certified Professional: Adobe ColdFusion is an industry-leading certification program from Adobe, for ColdFusion developers. The course consists of 50+ online videos and is designed for professionals who have basic to advanced level proficiency in any computer language and basic understanding of how web pages work. Successfully passing an assessment test at the end of the program will reward participants with a badge and certificate from Adobe.

Introductory Offer: $499

Blog: https://coldfusion.adobe.com/2020/07/coldfusion-certification-online-now/
Register: https://www.adobe.com/products/coldfusion-family/certificate.html



ICYMI - GitHub Universe

Dec 8 - 10th - 830AM PST - 200PM PST
Join GitHub team leaders, industry icons, and artists inspired by code for three days of live interactive sessions as we explore the future of software for enterprises, developers, and students.
With 70 talks across the 3 days, 4 Channels, lots of great content
No registration required and free to watch.
Videos On Demand https://githubuniverse.com/



ICYMI - ColdFusion Security Training by Foundeo / Pete Freitag

Writing Secure CFML
A hands-on CFML / ColdFusion Security Training class for developers. Learn how to identify and fix security vulnerabilities in your ColdFusion / CFML applications.
When: Thursday December 10, 2020 @ 11am-2pm & Friday December 11 @ 11am-2pm
(Eastern Standard Time, UTC -5) - 6 hours in total.
Where: Online / Web Conference
Who: Taught by Pete Freitag
Cost: $600
On Demand Videos Available : https://foundeo.com/consulting/coldfusion/security-training/


More conferences: https://confs.tech/



Blogs, Tweets and Videos of the Week


Blog - Wil De Bruin - Configuring SES URL’s on apache and the Coldbox router.

So we proxy our request via Nginx to a lucee coldbox application and use some rewrite rules as described in the coldbox manual. Recently we had a slightly different configuration: apache in front of an old-fashioned standard lucee standard install on Linux. Again, we followed instructions in the same coldbox manual but NO success…
Whatever I tried I couldn’t get this SES configured in the right way on my Apache box. Many thanks to the amazing Pete Freitag from Foundeo who put me on the right track to solve this problem. I will share it with you here.
https://shiftinsert.nl/configuring-ses-urls-on-apache-and-the-coldbox-router/


Blog - Andy Peterson - Round-Trip From ColdFusion to Okta using SAML and ColdFusion 2021

I feel as though when the Adobe ColdFusion 2021 planning committee called their first meeting to order, the number one item on their agenda was how to make a developer's life easier In addition to the AWS/Azure cloud configuration/integration capabilities I've posted about, I now have Okta integration to play with, via SAML. And with a few lines of code to handle authentication, I now have the ability to leverage SSO, MFA, and much more in my applications.
http://ciacfug.org/blog/round-trip-from-coldfusion-to-okta-using-saml-and-coldfusion-2021b


Blog - Ben Nadel - Using Java's Concurrent Queues For Asynchronous Processing In Lucee CFML 5.3.7.47

I'm utterly fascinated with asynchronous processing. But, I also know that there's always a healthy tension between complexity and performance, stability, and availability. Which is why I'm constantly noodling on different ways to perform asynchronous processing (such as with Task threads in Lucee CFML). The other day, I came across a set of "Concurrent Queues" in Java. These are queues that use efficient locking and non-locking techniques to allow for safe, high-throughput queues in a multi-threaded environment. These piqued my interesting; and, I wanted to see how I might be able to leverage these concurrent queues for asynchronous processing in Lucee CFML 5.3.7.47.
https://www.bennadel.com/blog/3940-using-javas-concurrent-queues-for-asynchronous-processing-in-lucee-cfml-5-3-7-47.htm
Tweets related to this: https://twitter.com/BenNadel/status/1338466431399317506


Blog - Andy Peterson - Hello Cloud! Zero to Serverless CFML in 20 Minutes

When it comes to CFML serverless environments, I have watched a lot of videos and read a lot of documentation but never have I come across a session that gets your cfml code working in the cloud so fast. 20 minutes into this 90 minute session by Paul Kukiel of Amazon Web Services and I'm watching my cfml run on AWS. Given this quick win, and despite having another 70 minutes of video to watch, I stopped to take stock of what happened, and how.
http://ciacfug.org/blog/hello-cloud-zero-to-serverless-cfml-in-20-minutes


Blog - Ben Nadel - Recursive / Nested CFThreads Can Get Around CFSetting RequestTimeout In Lucee CFML 5.3.7.47

A couple of months, I demonstrated that the request timeout of the parent page also affects the execution of CFThread tags in that same request in Lucee CFML. To get around that, within that post, we were using the CFSetting tag to override the requestTimeout value from within the asynchronous thread. In yesterday's post, I started to look at implementing "tail recursion" using CFThread tags in Lucee CFML. Which got me wondering as to how recursive and / or nested CFThread tags would interact with the requestTimeout setting in Lucee CFML 5.3.7.47.
https://www.bennadel.com/blog/3939-recursive-nested-cfthreads-can-get-around-cfsetting-requesttimeout-in-lucee-cfml-5-3-7-47.htm


Blog - Ben Nadel - Experimenting With "Tail Recursion" Using CFThread In Lucee CFML 5.3.7.47

In a recursive algorithm, "tail recursion" is when the very last call in the recursive algorithm is the recursive call of the same function. Developers generally care about "tail recursion" because it can be optimized by the runtime / compiler (depending on your runtime / compiler). While tail recursion doesn't really have anything to do with the CFThread tag in ColdFusion, I was curious to see if a CFThread tag could "recursively" spawn itself. Historically, with Adobe ColdFusion (ACF), nested CFThread tags have been blocked. However, with Lucee CFML, you can have deeply nested CFThread tags. So, "recursing" a CFThread tag should be possible in Lucee CFML 5.3.7.47.
https://www.bennadel.com/blog/3938-experimenting-with-tail-recursion-using-cfthread-in-lucee-cfml-5-3-7-47.htm


Blog - ColdFusion Portal - Azure BLOB Cloud Storage with ColdFusion 2021

CF2021 introduces integration with Azure Blob, Microsoft’s object storage solution for the cloud. Operations such as Creating containers, Deleting container, Uploading File, Downloading File, Block Upload, Shared Access Signature are supported.
You have already seen AWS S3 with ColdFusion. In this blog I will cover cloud storage using Azure BLOB.
https://coldfusion.adobe.com/2020/12/azure-blob-cloud-storage-coldfusion-2021/


Tweet- James Moberg - Date Comparison Inconsistencies

I'm reviewing #cfml date comparisons based on Lucee syntax notes
https://docs.lucee.org/guides/developing-with-lucee-server/language-syntax-differences.html#date-comparison 
I discovered some Adobe #ColdFusion inconsistencies where TRUE comparisons are FALSE depending on version used.https://www.trycf.com/gist/7fc7e05ff7121cb481989b57c05c3bd5   As a result, no more date strings for me. #YIKES
https://twitter.com/gamesover/status/1337113503090552834
https://twitter.com/gamesover


Blog - Ben Nadel - Exploring Type-Coercion And Value Comparisons In A JSON Column In MySQL 5.7.32

Generally speaking, SQL is pretty lenient when it comes to simple types and value comparisons. Meaning, from a SQL execution standpoint, 1 and "1" are equal because the SQL engine will coerce the values as needed (much like ColdFusion). However, document databases like MongoDB are much less lenient and will not cast values on-the-fly. This got me thinking about the new JSON support in MySQL 5.7: will simple values get coerced when comparing an input to a JSON path?
CAUTION: While MySQL will happily coerce values on-the-fly during a comparison, note that this does have implications. The most critical of which is that type coercion will bypass index selection during query planning which may result in a full-table scan.
https://www.bennadel.com/blog/3937-exploring-type-coercion-and-value-comparisons-in-a-json-column-in-mysql-5-7-32.htm


Blog - ColdFusion Portal - AWS S3 Cloud Storage with ColdFusion 2021

CF2021 introduces integration with Amazon S3, a cloud storage service where you can store and retrieve objects. Operations such as Creating buckets, Deleting Buckets, Uploading File, Downloading File, Object Locking, Bulk Upload are supported.
https://coldfusion.adobe.com/2020/12/aws-s3-cloud-storage-coldfusion-2021/


Blog - ColdFusion Portal - Iterator Support in ColdFusion 2021

This post talks about the new language feature introduced in ColdFusion 2021 , “Iterator Support”
https://coldfusion.adobe.com/2020/12/iterator-support-coldfusion-2021/


Blog - ColdFusion Portal - ColdFusion 2021 Install Experience

ColdFusion (2021 release) introduces an entirely new install experience by promoting the zip installer as the mainline installer and dropping the GUI server installer altogether.
The benefits of modularization have in fact made the installer extremely lightweight. A trimmed down JDK and packaging only the core module has helped reduce the installer size to 149 MB only (CF2018 installer was 971 MB). The deployment time and server startup time too have improved immensely.
https://coldfusion.adobe.com/2020/12/coldfusion-2021-install-experience/


Blog - Ben Nadel - Experimenting With Virtual Indexed Columns In MySQL 5.7.32 And Lucee CFML 5.3.7.47

As I mentioned in an earlier post, InVision is upgrading some of its MySQL servers to 5.7.32 (for Long-Term Support, LTS). This upgrade brings with it some excited features like the JSON column type. It also unlocks the ability to add virtual columns to a table which can be derived from existing columns; and, as needed, get stored in a secondary index on said table. When I read about this feature, I immediately thought of the ability to derive email domain from a user's email address. This is something that our data scientists and product teams are always asking about. As such, I wanted to sit down and see what a virtual "email domain column" might look like in MySQL 5.7.32 and Lucee CFML 5.3.7.47.
https://www.bennadel.com/blog/3936-experimenting-with-virtual-indexed-columns-in-mysql-5-7-32-and-lucee-cfml-5-3-7-47.htm


Blog - ColdFusion Portal - Old School Switch Case is now Dynamic!

From now on, we will be supporting dynamic case values.
https://coldfusion.adobe.com/2020/12/old-school-switch-case-now-dynamic/


Blog - ColdFusion Portal - Understanding Simple Queue Service Usage through CFML- 2

This post is about covering a few more frequent operations on SQS using CF2021, which directly integrates cloud services into language.
https://coldfusion.adobe.com/2020/12/understanding-simple-queue-service-usage-cfml-2/


Blog - Brad Wood - Ortus - How to override a single server rule in CommandBox's new Server Profiles

CommandBox 5.2.0 added a new feature called Server Profiles which allow you to dial in a bevy of development or production lockdown rules in a single setting.  Each profile can be tweaked with individual settings to customize them
https://www.ortussolutions.com/blog/how-to-override-a-single-sever-rule-in-commandboxs-new-server-profiles


Blog - Jason Steinshouer - CFML Development with Github Codespaces

I saw the announcement from Github awhile back for the beta release of their Codespaces product. I thought it looked like an interesting idea and decided to sign up. I was given access awhile back but just recently had some time to play around with it a bit.
The idea of running your development environment in containers is not new. However, typically it has applied to just the application itself. Codespaces takes it a step further by packaging everything including the editor (VS Code), extensions, tools, or anything else needed for development inside a container environment. With Codespaces you can develop from any machine that has a internet browser.
https://jasonsteinshouer.com/2020/12/07/setup-a-cfml-development-environment-in-codespaces.html



CFML Jobs

Several positions available on https://www.getcfmljobs.com/
Listing over 56 ColdFusion positions from 37 companies across 29 locations in 5 Countries  since July 1st

1 new job this week.

Full-Time - Coldfusion Programmer at Saint Louis, MI - United States
Posted Dec 11
https://www.getcfmljobs.com/jobs/index.cfm/united-states/Coldfusion-Programmer-at-Saint-Louis-MI/11148


Ortus is hiring: Senior ColdFusion CFML Developer

At Ortus you will be:
Modernizing web applications and helping companies move out of legacy hell
Teaming up with ColdFusion Experts in order to solve complex web development problems.
Testing and integrating new web technologies in order to create custom business implementations
Pushed to innovate constantly and create new solutions to web development problems
Leading project teams that deliver software that matters

US Timezone availability is a must
US Citizen or Resident or Work Visa is a must
https://www.ortussolutions.com/about-us/careers



ForgeBox Module of the Week

The ColdBox Paginator built by Javier Quintero and Ortus Solutions

This module builds the pagination struct for API responses and custom data tables.
This module has several functions, two most commonly used below.

Generate returns the pagination struct according to the total records.
If page and maxRows parameters are not passed in, it will use the default values.

GenerateWithResults returns the same pagination struct as the above along with the results
You can convert your results to be a resultsMap by setting asResultsMap to true
In addition you can set a name for your results key by passing in the resultsKeyName value as a parameter. By default this key is called results

box install cbpaginator

https://forgebox.io/view/cbpaginator



VS Code Hint Tips and Tricks of the Week

ESLint

Dbaeumer.vscode-eslint - 12 million+ installs

Integrates ESLint into VS Code. If you are new to ESLint check the documentation.

ESLint statically analyzes your code to quickly find problems. ESLint is built into most text editors and you can run ESLint as part of your continuous integration pipeline.

Many problems ESLint finds can be automatically fixed. ESLint fixes are syntax-aware so you won't experience errors introduced by traditional find-and-replace algorithms.

Preprocess code, use custom parsers, and write your own rules that work alongside ESLint's built-in rules. You can customize ESLint to work exactly the way you need it for your project.

https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint



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

John Wilson - Synaptrix just raised this Patreon Support this week to tip us over the 60% mark.

Ben Nadel
Brett DeLine
Carl Von Stetten
Charlie Arehart
Da Li
Dan Card
Daniel Garcia
David Belanger
Didier Lesnicki
Don Bellamy
Edgardo Cabezas
Erick Hoffman
Gary Knight
Giancarlo Gomez
Jan Jannek
Jason Daiger
Jeff McClain
Jeremy Adams
Jonas Erickson
Jordan Clark
Joseph Lamoree
Kai Koenig
Laksma Tirtohadi
Mario Rodrigues
Matthew Darby
Matthew Clemente
Mingo Hagen
Patrick Flynn
Ross Phillips
Scott Steinbeck
Shawn Oden
Steven Klotz
John Wilson - Synaptrix
Yogesh Mathur

You can see an up to date list of all sponsors on Ortus Solutions' Website
https://ortussolutions.com/about-us/sponsors


★ 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