ColdFusion Posts Around the World
James Moberg
MessagePack is an efficient binary serialization format. It lets you exchange data among multiple languages like JSON. But it's faster and smaller. It's supported by over 50 programming languages and environments, but not ColdFusion... until now....
James Moberg
DuckDB dominates with the lowest mean (362 ms) and high consistency (low std relative to scale). OctoSQL follows closely (542 ms mean), making these ideal for low-latency CSV processing. CSVRead_2025 and CSVProcess_2025 (~51166–299 ms) are moderately slow with decent consistency....
James Moberg
While in the process of developing "real world" unit tests to compare purist ColdFusion/CFML-only approaches against alternatives available using the command line (via CFExecute), I came across staggering performance issues that kinda suprised me....
James Moberg
When calling a ColdFusion custom tag using CFScript syntax (cf_customTagName()), it executes twice-once in start mode and once in end mode-unlike the single execution with tag-based syntax (<cf_customTagName>). This subtle behavior can cause unexpected results. To handle this, I use thisTag.ex...
James Moberg
I've identified many developers through the archived articles and code samples that I've accrued over the last 28 years. I could use some assistance locating some developers from the past....
James Moberg
I've recently started re-reading the original Steven Levy's "Hackers: Heroes of the Computer Revolution" book from 1984 and I like how the author paid homage to the pioneers with a dedicated "Who's Who" section. In my opinion, the past & current CFML plat...
James Moberg
"Sanitizing inputs" is critical and it goes beyond checking for SQLi and XSS. For example, some filename naming conventions that work on one OS may not work on another. (Don't name your file "NUL.txt" on Windows or you won't be able to delete it.) As a pr...
James Moberg
Zint is able to generate 93 different barcode formats using the command line on multiple platforms. I haven't found any java library that is capable of supporting the same formats or outputting files as BMP, EPS, GIF, PCX, TIF, EMF, PNG or SVG....
James Moberg
About 10 years ago, I wrote a ColdFusion User Defined Function (UDF) named pseudolocalize for transforming a given string by replacing its Roman (Latin) characters with similar-looking characters that have simple diacritical marks (accents, tildes, etc.)....
James Moberg
I like creating custom tag wrappers for command line executable that match built-in ColdFusion functions and utilize the same parameters. I do my best to match the same output when it matters. I thought that this would be a simple task to test AI LLM sinc...
James Moberg
Blogging on the dev.to platform was a nice change from Tumblr. I really liked that I could embed my Github and
James Moberg
A project I'm working on needs to be able to generate lots of fictitious/fake identities for testing purposes. I wanted a mock library that works with CF2016+, not have any dependencies (java JAR, EXE, API, etc) and offers both granularity & customization when it comes to results and name l...
James Moberg
Xpdf is an open source projects that includes a PDF viewer, but it also includes a collection of command line tools for Linux, Windows and Mac that can perform some helpful functions:
xpdf: PDF vie...
James Moberg
A quick dive into the powerful combination of ColdFusion and Xpdf for extracting PDF metadata. Xpdf, an open-source project, provides a robust set of command-line tools, including pdfinfo.exe, which excels at metadata extraction....
James Moberg
isIPv6 has been around since 2009. Are you using it? Is it beneficial? Does it perform a connection to a host? Does it test an IP string for validity? Are the results consistent in Adobe ColdFusion, Lucee and BoxLang?...
James Moberg
We have clients that use dedicated email addresses to receive and process messages and attachments. I had previously developed some functions to bulk download EML files directly from a mail server's file system (using Fast...
James Moberg
In tackling the challenge of processing email attachments from dedicated email addresses, we initially built a system to process EML using javax.mail. We sought out a more efficient approach and are exploring Forward Email's service, which offers unlimited domains and webhook-supported email fo...
James Moberg
I posted an update to my ColdFusion CF_Timer custom tag on my new myCFML blog with the same title. It has an allowedIPs option so that it can be safely integrated without displayed data to us...
James Moberg
The CF_Timer custom ColdFusion tag measures the execution time of the code block it encloses. Upon encountering the CF_Timer start tag, it records a timestamp with nanosecond or millisecond precision. When the corresponding end tag is reached, it calculates the elapsed time. This duration can then b...
James Moberg
I was recently invited to be a guest on the "Ben & Ryan Show" podcast to share some custom ColdFusion UDFs. The episode just aired on Tuesday, 2025-04-22. This served as motivation...
James Moberg
I was invited to be a guest on the Ben & Ryan Show (hosted by xByte Solutions and Ben Nadel) to share some custom ColdFusion user-defined functions (UDFs). UDFs are custom code blocks that you can create to perform specific tasks in your web applications,...
James Moberg
The createShadowHtml CFML user-defined function (UDF) generates HTML and inline JavaScript to create a dynamic, client-side preview of a given HTML document within a shadow DOM. It optionally disables links within the preview and uses a placeholder text before the HTML is loaded. This allows for iso...
James Moberg
The streamFindNoCase user-defined function (UDF) searches the currently accumulated output buffer for the presence of a given string, performing a case-insensitive comparison. It utilizes different methods for accessing and searching the output buffer dep...
James Moberg
The generateEmailHashCode user-defined function (UDF) processes an email address by extracting the domain, sanitizing the username by removing periods (dots) and any part after the first "+", converting both parts to lowercase, and then returning a consistent Java-generated integer hash co...
James Moberg
The tempCache user-defined function (UDF) allows you to temporarily store data in the ColdFusion cache and retrieve it using a generated UUID. This is particularly useful for preserving data across HTTP redirects, with options for automatic expiration and single-use retrieval....
James Moberg
The jreEscape user-defined function (UDF) ensures strings can be safely used in regex patterns by preventing special characters from being interpreted as regex metacharacters. The reescape function exists in Adobe ColdFusion, but not Lucee....
James Moberg
The maskCC user-defined function (UDF) takes a text string as input, searches for patterns that resemble credit card numbers, attempts to validate these potential numbers using ColdFusion's built-in credit card validation, and then masks the validated numbers by replacing all but the last four ...
James Moberg
This enableWKHTMLTOPDFForms user-defined function (UDF) modifies the binary of a non-Adobe-generated PDF file to enable the editing of form fields in Adobe Acrobat. The function works by finding specific patterns within the PDF's data related to annotation parents and replacing the word "P...
James Moberg
The hashid and ishashidValid CFML user-defined functions (UDFs) provide a simple mechanism for generating and validating hash-based identifiers.
James Moberg
The State of myCFML PDF Generation
My current comparison is with CFDocument on the deprecated CF2016 Developer Edition. I'm planning on performing tests with CF2021 & CF2023 soon and will perform this on my personal developer workstation using
James Moberg
I **choose** to use a lot of third-party Windows command line programs as part of our ColdFusion/CFML stack. Much of the functionality could be considered duplicated since official built-in functions (BIFs) already exist, but I perceive it as a "customer-controlled functions that always return ...
James Moberg
I choose to use a lot of third-party Windows command line programs as part of our ColdFusion/CFML stack. Much of the functionality could be considered duplicated since official built-in functions (BIFs) already exist, but I perceive it as a "customer-controlled functions that alw...
James Moberg
There was an internal decision to use Wasabi Cloud Storage instead of Amazon S3 and I needed to use ColdFusion to generate a pre-signed URL to allow access to AI-...
James Moberg
There was an internal decision to use Wasabi Cloud Storage instead of Amazon S3 and I needed to use ColdFusion to generate a pre-signed URL to allow access to AI-generated content for a limited time. I had used the Sv4Util.cfc and aws-cfml libraries before with Amazon and thought it was just as simp...
James Moberg
In a project I'm working on, I needed to generate a QR code and display it within an HTML file that is converted to a PDF using WKHTMLTOPDF. I didn't want to rely upon physical, statically-hosted SVG image...
James Moberg
I saw a post on Linkedin regarding the "Unlocking the Power of listGetDuplicates". I like...
James Moberg
While working on my ColdFusion colorTools CFC, I wondered if isValid() supported a "hex" type since "guid" & "UUID" both rely on validating hexadecim...
James Moberg
While working on some internal graphs to represent daily Fastly WAF/CDN statistics, I realized that I needed to generate some additional random colors. I started to use the returnRandomHEXColors UDF from
James Moberg
I was unit testing a global UDF that accepts a string and leverages Java's built-in hashCode method to return a signed 32bit integer. This seemed trivial, but I wondered if different versions of ColdFusion that are outside of my internal control would consistently return the same values. I past...
James Moberg
The cfdump tag (AKA cfscript "writedump" function) outputs the contents of a variable of any type for debugging purposes. The variable can be as simple as a string or as complex as a cfc component instance.
If you've ever u...
James Moberg
I recently wrote a blog entry about using a third-party Java library to standardize IPv4 & IPv6 IP addresses using ColdFusion.
The Apache Commons Java library (th...
James Moberg
Our Microsoft IIS web server is configured to accept IPv4 connections and, since 1996, we've recorded IPs in databases using VARCHAR(15). We weren't impacted in 2012 when the ARIN and World IPv6 Launch Day intro...
James Moberg
Standardization & validation is important, but good luck getting all you clients and your client's visitors on board with adhering to ISO standards. When it comes to phone numbers, we've embraced the E.164 international standard (
James Moberg
While integrating a new feature for a client to flag customers that were requesting vouchers to be reissued, a business rule was required to determine whether the action should be performed during the current or next month. My client indicated that anything flagged during the last week of a month...
James Moberg
I referenced Zint Barcode Generator in a post from 2020 and included a very basic command line syntax for a QR code. Zint able to generate 9...
James Moberg
When working on new logic and I want to dump a variable, I often use an internal CF_DumpLite CFC/CFTag that we developed that minimizes HTML output, honors original form & query column order & case, redacts CC values and is
James Moberg
PayPal's NVP/SOAP API for Website Payments Pro accounts suddenly
James Moberg
I recently integrated the auto-generation of survey results into a downloadable PDF using ColdFusion and WKHTMLTOPDF 0.12.6. Our client provided a pre-generated PDF cover page with some editable fields that we prepended to the PDF u...
James Moberg
When displaying values in a table, I like to use color to visually indicate whether the number is high or low. When displaying data on a webpage, it was trivial for us to use the jquery-heatcolor library ...
James Moberg
I wouldn't call myself a regular at conferences, but I've enjoyed attending some CF-related conferences in the past. Luckily my Monument 2 Photo device, a self-hosted Google Photos device, makes...
James Moberg
In the early 2000s, many of our customers still viewed the internet as a passing trend. During this period, we operated a ColdFusion 4.5 (or 5) web application on a Windows server utilizing an Access database. Initially, we relied on a dedicated T1 connection. Over time, we upgraded to a dual T1 ...
James Moberg
We use ColdFusion/CFML to generate valid HTML documents for PDF generation using jsoup & WKHTMLTOPDF. If the generated HTML content is simply outputted onto an existing ...
James Moberg
In one of our projects about 10 years ago, we were fetching HTML fragments from a trusted third-party for inclusion on the website. Instead of using an iFrame or incorporating ajax, which could negatively impact our SEO, we would occasionally fetch the content in the background and update the we...
James Moberg
A ColdFusion application that we developed a couple years ago worked with Twilio to log incoming text messages. The UTF-8 message payloads were saved in a MSSQL database using the NVARCHAR datatype and could be displayed on webpages without any issue. When importing a CSV file into a third-party...
James Moberg
We license data from multiple providers and discovered that not all data can be treated equally even though it's the same specification. For example, we work with two (2) separate Real Estate Transaction Standards (RETS) providers and their implementations are slightly different. The west coast ...
James Moberg
Language detection is a feature that we needed in a past project. I wrote an article in 2020 regarding the use of kju2 fork of th...
James Moberg
Q: How do you solve a problem you don't know how to solve?
A: Turn it into a problem that you do know how to solve.
How can I import data to a MSSQL Se...
James Moberg
(This is a repost from my abandoned tumblr blog; dated 2016-11-17)
A client requested that we spell out numbers on their website in order to clarify some financial totals. I initially planned on using the ColdFusion
James Moberg
There's been many occasions where a user-specific payload has been generated (shopping cart, check out, config settings, processing results) and the user needs to be directed to a new destination with the data, but I want to avoid non-securely passing data as URL or form parameters or having to e...
James Moberg
James Moberg
A CFML developer in the ColdFusion Programmers Facebook Group referenced my DEV article regarding how to identify the SSL expiration date using ColdFus...
James Moberg
I'm getting ready to drive 500 miles to attend to the 11th CFSummit taking place in Las Vegas on October 2-3. I'm looking forward to reconnecting with CFML developers that I've communicated & collaborated with online during my past 26 years of developing in CFML.
I'll be arriving ear...
James Moberg
This is a follow-up to a January 11, 2019 article I wrote on my old Tumber blog.
The Hacker News posted an article regarding the ability to bypass Microsoft Office 365's "Safe Links" security feat...
James Moberg
This ColdFusion UDF converts a date object or string into a UTC, ISO8601, RFC 339, ATOM or W3C string
James Moberg
While reviewing the logs of failed contact form submissions, I identified a couple email address variations that were exploiting some
James Moberg
I was researching methods of converting XML to JSON using ColdFusion. I didn't want to use xmlParse() because ...
James Moberg
While viewing FusionReactor logs for a ColdFusion app, I noticed lots of repetitive JDBC entries in a requ...
James Moberg
I was recently notified of a slow ColdFusion script on a project and, after some isolation, determined that it was due to a regex-based UDF that we used in place of Adobe's built-in function (BIF) for isValid("url"). We used a regex rule with isValid("regex") to validate only HTTP/S URLs with valid...
James Moberg
According to my unit tests, after ColdFusion 2018.0.0-15, Adobe changed the way that CFHTMLHead works with CFContent. Prior to CF2021, any strings that were added to the header buffer via CFHTMLHead was outputted to the HTML HEAD section (or top of the page if you neglected to include a HEAD section...
James Moberg
I'm testing some ideas. I'm not sure if I'm on the right path or not, but thought I'd share.
I have some UDF & CFC libraries that we've built over the year and I have some checks to determine whether default application variables exist and use them to override default values. In order to avoid pos...
James Moberg
Useful to determine if braces are correctly matched before processing. Helps reduce SQLi.
I was using a version of smartSearch from CFLib.org that I had updated with some simple regex detection for SQLi strings, but it wasn't catching everything. I considered disabling the bracket matchin...
James Moberg
Useful for validating a human-entered list of integers.
I was working on a search interface for a client where public visitors would be searching for a range of different values regarding event years, event place, ago, # of competitions, hours of training etc. I initially searched Google...
James Moberg
I still have some CustomTags that we've used in production for years and, now that I'm writing more cfscript, I thought I'd continue using some of them (for now) using the following syntax that I learned about on StackOverflow:
CFML tag-based approach:
CFSc...
James Moberg
I mentioned Exiv2 on a blog post from 2 years ago regarding Supporting ColdFusion with Command Line Programs. Someone in the Adobe ColdFusion Forum recently inquired how to "use ImageGetEXIFMetaData to try to get gps coordinates of an image".
I've been down that road before and have found the buil...
James Moberg
While reviewing reports on Lucee's Dev Forum regarding performance differences between using an application-based CFC singleton and a global UDF, I thought I'd release our replacement for Adobe's CFTimer that I wrote back in 2013.
No more editing "Debugging IP Addresses"
If you wanted to...
James Moberg
Someone on the Lucee website asked how to get width/height of SVG image file in Lucee. I tend use a lot of SVG images when generating PDFs using WKHTMLTOPDF with ColdFusion 2016-2021 and Lucee. I thought I'd try writing a cross-compatible UDF to parse this information. I've added support for desc,...
James Moberg
Anyone aware of any information regarding best practices for client-side cookie generation for ColdFusion/Lucee CFML?
I'm working on an admin tool and created a client-side cookie with an email address or two (for email testing). Upon the next page request using ColdFusion 2016-2021, only the conte...
James Moberg
I'm developing a flexible processing CFML script that accepts (authenticated) FORM posts and processes the data. The data is stored based on form field prefixes, but I don't have any hints regarding which fields may contain a file when processing a "multipart/form-data" form posts. I found Ryan Sti...
James Moberg
I was writing some unit tests to identify the output of CFDump under different conditions and discovered that Adobe and Lucee treat the showUDFs parameter differently. I also use 3rdparty CF_Dump since it provides consistent behavior between CFML platforms. Since I've written my own internal Dumplit...
|