<?xml version="1.0" encoding="UTF-8" ?>
<!-- RSS generated by SunStar Media (https://www.sunstarmedia.com) -->
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>myCFML Developer Blog - Articles</title>
<link>http://www.mycfml.com/</link>
<description>myCFML Developer Blog - Articles</description>
<language>en-us</language>
<lastBuildDate>Sun, 26 Jul 2026 09:02:28 GMT</lastBuildDate>
<copyright>Copyright 2026, myCFML Developer Blog</copyright>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<generator>SunStar Media - https://www.sunstarmedia.com/</generator>
<managingEditor>james@sunstarmedia.com</managingEditor>
<webMaster>james@sunstarmedia.com</webMaster>
<ttl>60</ttl>

<item>
<title>Building Word documents from CFML with cf-word - Build, populate and convert Word .docx from CFML</title>
<link>https://www.mycfml.com/articles/building-word-documents-from-cfml-with-cf-word/</link>
<guid>https://www.mycfml.com/articles/building-word-documents-from-cfml-with-cf-word/</guid>
<pubDate>Sun, 26 Jul 2026 12:00:00 GMT</pubDate>
<description>Every couple of years I hit the same wall. A client needs a real .docx, not HTML pretending to be one, and CFML has never had a good answer for it. You end up shelling out to a COM object on Windows, or hand-writing OOXML, or gluing Apache POI together wi</description>
</item>
<item>
<title>Expose local CommandBox servers to the internet using NetBird - Using a launcher so I don&apos;t have to manually type any flags</title>
<link>https://www.mycfml.com/articles/expose-local-commandbox-servers-to-the-internet-using-netbird/</link>
<guid>https://www.mycfml.com/articles/expose-local-commandbox-servers-to-the-internet-using-netbird/</guid>
<pubDate>Sat, 18 Jul 2026 12:00:00 GMT</pubDate>
<description>I use Netbird to show work-in-progress CFML sites to clients and to point webhooks at a local Adobe ColdFusion or Lucee server without deploying anything. It also does tcp&#x2f;udp&#x2f;tls for things like database tunnels, and the http side supports a PIN or SSO group restrictions instead of a password if that fits better.</description>
</item>
<item>
<title>Reading old WDDX files in 2026</title>
<link>https://www.mycfml.com/articles/reading-old-wddx-files-in-2026/</link>
<guid>https://www.mycfml.com/articles/reading-old-wddx-files-in-2026/</guid>
<pubDate>Tue, 14 Jul 2026 12:00:00 GMT</pubDate>
<description>Old WDDX files you can&amp;apos&#x3b;t open anymore&#x3f; I built a set of Windows tools that reads WDDX and converts to CSV, JSON, SQL, XLSX and more, plus a Total Commander lister plugin that opens .wddx as a grid.</description>
</item>
<item>
<title>JS-Screensaver - a privacy curtain for admin apps - A small, zero-dependency JavaScript framework for full-screen browser screensavers.</title>
<link>https://www.mycfml.com/js-screensaver-a-privacy-curtain-for-admin-apps/</link>
<guid>https://www.mycfml.com/js-screensaver-a-privacy-curtain-for-admin-apps/</guid>
<pubDate>Tue, 07 Jul 2026 12:00:00 GMT</pubDate>
<description>Beyond nostalgia&#x3a; web apps for admin or back-office users often sit open with sensitive data &#x28;PII, financials&#x29; on screen while someone steps away. JS-Screensaver is a small, zero-dependency JavaScript framework for full-screen browser screensavers to provide shoulder-surfing protection.</description>
</item>
<item>
<title>Free, on-device text-to-speech in the browser (and a scam-call sound board) - Leveraging Supertonic TTS and ONNX Runtime Web</title>
<link>https://www.mycfml.com/articles/free-on-device-text-to-speech-in-the-browser/</link>
<guid>https://www.mycfml.com/articles/free-on-device-text-to-speech-in-the-browser/</guid>
<pubDate>Wed, 01 Jul 2026 12:00:00 GMT</pubDate>
<description>I&amp;apos&#x3b;ve written CFML-based AI chatbots using an older perpetual licensed version of ColdFusion and wanted to integrate text-to-speech that I would not have to pay a cloud vendor for. It turns out that is now possible, and the whole thing runs client-side.</description>
</item>
<item>
<title>Backporting ColdFusion 2025&apos;s password hashing API to CF2016, Lucee, and BoxLang</title>
<link>https://www.mycfml.com/articles/backporting-coldfusion-2025s-password-hashing-api-to-cf2016-lucee-boxlang/</link>
<guid>https://www.mycfml.com/articles/backporting-coldfusion-2025s-password-hashing-api-to-cf2016-lucee-boxlang/</guid>
<pubDate>Sun, 28 Jun 2026 12:00:00 GMT</pubDate>
<description>I built a backport, a single shaded JAR plus a thin ColdFusion CFC, that gives you the identical function signatures and identical hash output of ColdFusion 2025u8&amp;apos&#x3b;s passwordHashGenerate and passwordHashVerify &#x28;plus PBKDF2&#x29;.</description>
</item>
<item>
<title>Tags: A Six-Song Love Letter to ColdFusion (and the Soundtrack to My 500-Mile Summit Pilgrimage) - Six songs, five genres, one web platform that outlived its own obituary.</title>
<link>https://www.mycfml.com/articles/tags-a-six-song-love-letter-to-coldfusion-and-the-soundtrack-to-my/</link>
<guid>https://www.mycfml.com/articles/tags-a-six-song-love-letter-to-coldfusion-and-the-soundtrack-to-my/</guid>
<pubDate>Thu, 11 Jun 2026 12:00:00 GMT</pubDate>
<description>Tags is a six-song love letter to ColdFusion, the web platform declared dead in 2002 that never got around to dying. Spanning Americana, heartland rock, blues, electro-funk, synthwave, and pop-punk, it tells thirty years of history - two brothers in a Minnesota basement, three corporate names on the door, and a faithful community that still gathers in the Vegas desert every year. It&amp;apos&#x3b;s an album about outliving your own obituary, written in the only language that could&#x3a; the one they buried running.</description>
</item>
<item>
<title>The cfExec CFC library is now on GitHub</title>
<link>https://www.mycfml.com/articles/the-cfexec-cfc-library-is-now-on-github/</link>
<guid>https://www.mycfml.com/articles/the-cfexec-cfc-library-is-now-on-github/</guid>
<pubDate>Sun, 07 Jun 2026 12:00:00 GMT</pubDate>
<description>I&amp;apos&#x3b;ve been running cfExec.com for a while now, and it&amp;apos&#x3b;s up and running today. It&amp;apos&#x3b;s a reference site for command-line tools you can drive from ColdFusion&#x3a; what each one does, live &amp;quot&#x3b;try it&amp;quot&#x3b; demos, the arguments spelled out. The one thing it never did was hand you the code in one place. Now it does.</description>
</item>
<item>
<title>A cross-engine CFML client for the ipLogs.com IP reputation API - Is this IP a VPN, a datacenter, or a real person?</title>
<link>https://www.mycfml.com/articles/a-cross-engine-cfml-client-for-the-iplogs-com-ip-reputation-api/</link>
<guid>https://www.mycfml.com/articles/a-cross-engine-cfml-client-for-the-iplogs-com-ip-reputation-api/</guid>
<pubDate>Thu, 04 Jun 2026 12:00:00 GMT</pubDate>
<description>Released a new open-source CFC&#x3a; iplogs, a cross-engine client for the ipLogs.com IP reputation &#x2f; VPN-detection API.</description>
</item>
<item>
<title>cfGlobalping: ping, dig, and curl your site from anywhere on Earth - in CFML - Run a ping, traceroute, mtr, DNS lookup, or HTTP check from real machines in real locations</title>
<link>https://www.mycfml.com/articles/cfglobalping-ping-dig-and-curl-your-site-from-anywhere-on-earth-in/</link>
<guid>https://www.mycfml.com/articles/cfglobalping-ping-dig-and-curl-your-site-from-anywhere-on-earth-in/</guid>
<pubDate>Tue, 02 Jun 2026 12:00:00 GMT</pubDate>
<description>Can my web application be accessed &amp;quot&#x3b;out there&amp;quot&#x3b;&#x3f; Not from my server. Not from my laptop on the Central Coast. From Frankfurt. From Tokyo. Globalping &#x28;free&#x29; solves the vantage-point problem.</description>
</item>
<item>
<title>cf-scrimage: a CFML wrapper for Scrimage with WebP, filters, and a dual API - A dual API wrapper supports the full Scrimage 4.x feature set.</title>
<link>https://www.mycfml.com/articles/cf-scrimage-a-cfml-wrapper-for-scrimage-with-webp-filters-and-a-dual-api/</link>
<guid>https://www.mycfml.com/articles/cf-scrimage-a-cfml-wrapper-for-scrimage-with-webp-filters-and-a-dual-api/</guid>
<pubDate>Thu, 28 May 2026 12:00:00 GMT</pubDate>
<description>CF 2025 added native WebP support and Lucee has had it for a bit, but most of us are still running CF 2021 or 2023 in production. If you wanted WebP from CFML before now, your options were ImageMagick shell-outs, a Photoshop step, or &amp;quot&#x3b;use a different format.&amp;quot&#x3b; It does more than WebP. Scrimage&amp;apos&#x3b;s full surface is 46 named filters, 21 composite blend modes, two dominant-color transforms, plus the usual sizing and geometry work.</description>
</item>
<item>
<title>A CFML wrapper for Thumbnailator - Fluent API; EXIF auto-rotate; watermark; batch resize; single JAR</title>
<link>https://www.mycfml.com/articles/a-cfml-wrapper-for-thumbnailator/</link>
<guid>https://www.mycfml.com/articles/a-cfml-wrapper-for-thumbnailator/</guid>
<pubDate>Thu, 21 May 2026 12:00:00 GMT</pubDate>
<description>Thumbnailator is a single JAR with no transitive dependencies, MIT-licensed, compiled to Java 8 bytecode, and the API is well thought through - feature-complete for what most CFML projects need&#x3a; resize, scale, crop, rotate, watermark, format conversion, batch processing, EXIF orientation, and a real fluent builder.</description>
</item>
<item>
<title>cfTOML: a pure CFML parser and emitter for TOML 1.0 and 1.1</title>
<link>https://www.mycfml.com/articles/cftoml-a-pure-cfml-parser-and-emitter-for-toml-1-0-and-1-1/</link>
<guid>https://www.mycfml.com/articles/cftoml-a-pure-cfml-parser-and-emitter-for-toml-1-0-and-1-1/</guid>
<pubDate>Thu, 14 May 2026 12:00:00 GMT</pubDate>
<description>cfTOML parses and emits TOML, runs on Adobe CF 2016 through 2025, Lucee 5&#x2b;, and BoxLang 1&#x2b;. One CFC.</description>
</item>
<item>
<title>ashid for CFML: time-sortable, prefixed IDs without a JAR</title>
<link>https://www.mycfml.com/articles/ashid-for-cfml-time-sortable-prefixed-ids-without-a-jar/</link>
<guid>https://www.mycfml.com/articles/ashid-for-cfml-time-sortable-prefixed-ids-without-a-jar/</guid>
<pubDate>Thu, 07 May 2026 12:00:00 GMT</pubDate>
<description>Self-documenting prefix, embedded millisecond timestamp, lexicographically sortable, double-click-selectable as a single token, case-insensitive on decode. &#x28;Inspired by Stripe&amp;apos&#x3b;s IDs, ULID, and TypeID. Crockford Base32 keeps the alphabet to 32 lowercase characters with no I&#x2f;L&#x2f;O&#x2f;U ambiguity.&#x29;</description>
</item>
<item>
<title>cf-JEmoji: a CFML Emoji Wrapper for the Post-emoji-java Era</title>
<link>https://www.mycfml.com/articles/cf-jemoji-a-cfml-emoji-wrapper-for-the-post-emoji-java-era/</link>
<guid>https://www.mycfml.com/articles/cf-jemoji-a-cfml-emoji-wrapper-for-the-post-emoji-java-era/</guid>
<pubDate>Wed, 29 Apr 2026 12:00:00 GMT</pubDate>
<description>This CFML wrapper provides support for newer emojis using the JEmoji Java library &#x28;and Java 17&#x29;.</description>
</item>
<item>
<title>cf-BadWords (AKA Verbal Morality Statute Enforcement, CFML Edition) - Profanity detection and filtering CFC for ColdFusion 2016+</title>
<link>https://www.mycfml.com/articles/cf-badwords-aka-verbal-morality-statute-enforcement-cfml-edition/</link>
<guid>https://www.mycfml.com/articles/cf-badwords-aka-verbal-morality-statute-enforcement-cfml-edition/</guid>
<pubDate>Tue, 21 Apr 2026 12:00:00 GMT</pubDate>
<description>cf-badWords is a CFML profanity detection and filtering CFC for ColdFusion 2016&#x2b; that normalizes input through AnyAscii to defeat Unicode pseudo-letters, homoglyph attacks, Punycode, zero-width-space smuggling, leetspeak, and emoji-as-letters before matching.</description>
</item>
<item>
<title>cfmlFiddle - Compare ColdFusion, Lucee, and BoxLang Side-by-Side - I built a local CFML playground that runs 10 engines at once</title>
<link>https://www.mycfml.com/articles/cfmlfiddle-compare-coldfusion-lucee-and-boxlang-side-by-side/</link>
<guid>https://www.mycfml.com/articles/cfmlfiddle-compare-coldfusion-lucee-and-boxlang-side-by-side/</guid>
<pubDate>Thu, 16 Apr 2026 12:00:00 GMT</pubDate>
<description>cfmlFiddle is a self-hosted CFML playground. It runs on your machine through CommandBox. You write code in an Ace Editor, pick an engine &#x28;or all of them&#x29;, click Run, and see the output. If you picked multiple engines, you see all the results stacked, side by side, or tabbed.</description>
</item>
<item>
<title>Parsing PDFs into structured data with CFML and OpenDataLoader</title>
<link>https://www.mycfml.com/articles/parsing-pdfs-into-structured-data-with-cfml-and-opendataloader/</link>
<guid>https://www.mycfml.com/articles/parsing-pdfs-into-structured-data-with-cfml-and-opendataloader/</guid>
<pubDate>Tue, 07 Apr 2026 12:00:00 GMT</pubDate>
<description>OpenDataLoader is an open source Java library that actually handles this well. It runs locally, no GPU needed, and it parses PDFs into JSON, text, HTML, annotated PDF, and three flavors of Markdown. Since it&amp;apos&#x3b;s a Java JAR, it works with Adobe ColdFusion 2016&#x2b;, Lucee &amp;amp&#x3b; BoxLang.</description>
</item>
<item>
<title>JSONata Comes to ColdFusion: Query and Transform JSON Like a Pro</title>
<link>https://www.mycfml.com/articles/jsonata-comes-to-coldfusion-query-and-transform-json-like-a-pro/</link>
<guid>https://www.mycfml.com/articles/jsonata-comes-to-coldfusion-query-and-transform-json-like-a-pro/</guid>
<pubDate>Wed, 01 Apr 2026 12:00:00 GMT</pubDate>
<description>If you&amp;apos&#x3b;ve ever wrestled with deeply nested JSON structures in CFML - writing loop after loop, checking for key existence, and manually building transformed output - there&amp;apos&#x3b;s now a better way. cfJSONata is a new open-source CFC that brings JSONata expression support to Adobe ColdFusion 2016&#x2b; and Lucee 5-7. Think of JSONata as XPath for JSON - a declarative query and transformation language that lets you extract, filter, aggregate, and reshape JSON data with compact expressions instead of procedural code.</description>
</item>
<item>
<title>Parseable JSON is Not Always Valid or Consistent JSON - Parsing behavior is undefined and implementation-dependent</title>
<link>https://www.mycfml.com/articles/parseable-json-is-not-always-valid-or-consistent-json/</link>
<guid>https://www.mycfml.com/articles/parseable-json-is-not-always-valid-or-consistent-json/</guid>
<pubDate>Thu, 12 Feb 2026 12:00:00 GMT</pubDate>
<description>The JSON specification &#x28;RFC 8259&#x29; says that object keys SHOULD be unique, but it doesn&amp;apos&#x3b;t strictly forbid duplicates-meaning duplicate keys produce valid JSON that will parse, but the behavior is undefined and implementation-dependent.</description>
</item>
<item>
<title>Token-Oriented Object Notation (TOON) for ColdFusion / CFML - JSON for LLM prompts at half the tokens</title>
<link>https://www.mycfml.com/articles/token-oriented-object-notation-toon-for-coldfusion-cfml/</link>
<guid>https://www.mycfml.com/articles/token-oriented-object-notation-toon-for-coldfusion-cfml/</guid>
<pubDate>Thu, 06 Nov 2025 12:00:00 GMT</pubDate>
<description>After generating a ColdFusion function for MessagePack encoding and decoding, I started seeing articles regarding optimizing data for use with LLMs called &amp;quot&#x3b;TOON&amp;quot&#x3b;. TOON stands for &amp;quot&#x3b;Token-Oriented Object Notation&amp;quot&#x3b; and is lightweight data format optimized fo</description>
</item>
<item>
<title>MessagePack Support for ColdFusion / CFML - A pure ColdFusion port of msgpack-lite for encoding and decoding MessagePack binary format. Compatible with ColdFusion 2016+</title>
<link>https://www.mycfml.com/articles/messagepack-support-for-coldfusion-cfml/</link>
<guid>https://www.mycfml.com/articles/messagepack-support-for-coldfusion-cfml/</guid>
<pubDate>Wed, 29 Oct 2025 12:00:00 GMT</pubDate>
<description>MessagePack is an efficient binary serialization format. It lets you exchange data among multiple languages like JSON. But it&amp;apos&#x3b;s faster and smaller. It&amp;apos&#x3b;s supported by over 50 programming languages and environments, but not ColdFusion... until now.</description>
</item>
<item>
<title>ColdFusion CSV Processing Speed Test Results: October 2025</title>
<link>https://www.mycfml.com/articles/coldfusion-csv-processing-speed-test-results-october-2025/</link>
<guid>https://www.mycfml.com/articles/coldfusion-csv-processing-speed-test-results-october-2025/</guid>
<pubDate>Thu, 23 Oct 2025 12:00:00 GMT</pubDate>
<description>DuckDB dominates with the lowest mean &#x28;362 ms&#x29; and high consistency &#x28;low std relative to scale&#x29;. OctoSQL follows closely &#x28;542 ms mean&#x29;, making these ideal for low-latency CSV processing. CSVRead_2025 and CSVProcess_2025 &#x28;&#x7e;51166&amp;&#x23;8211&#x3b;299 ms&#x29; are moderately slow with decent consistency.</description>
</item>
<item>
<title>ColdFusion CSV Processing Speed Test</title>
<link>https://www.mycfml.com/articles/coldfusion-csv-processing-speed-test/</link>
<guid>https://www.mycfml.com/articles/coldfusion-csv-processing-speed-test/</guid>
<pubDate>Thu, 16 Oct 2025 12:00:00 GMT</pubDate>
<description>While in the process of developing &amp;quot&#x3b;real world&amp;quot&#x3b; unit tests to compare purist ColdFusion&#x2f;CFML-only approaches against alternatives available using the command line &#x28;via CFExecute&#x29;, I came across staggering performance issues that kinda suprised me.</description>
</item>
<item>
<title>CustomTag CFScript &quot;Nuance&quot; - Use thisTag.executionMode to ensure logic only runs once</title>
<link>https://www.mycfml.com/articles/customtag-cfscript-nuance/</link>
<guid>https://www.mycfml.com/articles/customtag-cfscript-nuance/</guid>
<pubDate>Mon, 06 Oct 2025 12:00:00 GMT</pubDate>
<description>When calling a ColdFusion custom tag using CFScript syntax &#x28;cf_customTagName&#x28;&#x29;&#x29;, it executes twice-once in start mode and once in end mode-unlike the single execution with tag-based syntax &#x28;&amp;lt&#x3b;cf_customTagName&amp;gt&#x3b;&#x29;. This subtle behavior can cause unexpected results. To handle this, I use thisTag.executionMode to ensure logic only runs once. This nuance isn&amp;apos&#x3b;t well-documented, so I wanted to share it to help others avoid confusion.</description>
</item>
<item>
<title>Who&apos;s Who - Survey Status Update - It&apos;s crunch time... I&apos;m finalizing my Adobe ColdFusion &quot;first time&quot; presentation and working on publishing this survey. I need help locating some people.</title>
<link>https://www.mycfml.com/articles/whos-who-survey-status-update/</link>
<guid>https://www.mycfml.com/articles/whos-who-survey-status-update/</guid>
<pubDate>Mon, 15 Sep 2025 12:00:00 GMT</pubDate>
<description>I&amp;apos&#x3b;ve identified many developers through the archived articles and code samples that I&amp;apos&#x3b;ve accrued over the last 28 years. I could use some assistance locating some developers from the past.</description>
</item>
<item>
<title>&quot;Who&apos;s Who&quot; Survey - Highlighting ColdFusion developers over the last 30 years</title>
<link>https://www.mycfml.com/articles/whos-who-survey/</link>
<guid>https://www.mycfml.com/articles/whos-who-survey/</guid>
<pubDate>Thu, 28 Aug 2025 12:00:00 GMT</pubDate>
<description>I&amp;apos&#x3b;ve recently started re-reading the original Steven Levy&amp;apos&#x3b;s &amp;quot&#x3b;Hackers&#x3a; Heroes of the Computer Revolution&amp;quot&#x3b; book from 1984 and I like how the author paid homage to the pioneers with a dedicated &amp;quot&#x3b;Who&amp;apos&#x3b;s Who&amp;quot&#x3b; section. In my opinion, the past &amp;amp&#x3b; current CFML plat</description>
</item>
<item>
<title>Convert Unicode to ASCII7 using AnyASCII Java Library - AnyAscii provides ASCII-only replacement strings for practically all Unicode characters.</title>
<link>https://www.mycfml.com/articles/convert-unicode-to-ascii7-using-anyascii-java-library/</link>
<guid>https://www.mycfml.com/articles/convert-unicode-to-ascii7-using-anyascii-java-library/</guid>
<pubDate>Thu, 03 Jul 2025 12:00:00 GMT</pubDate>
<description>&amp;quot&#x3b;Sanitizing inputs&amp;quot&#x3b; 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. &#x28;Don&amp;apos&#x3b;t name your file &amp;quot&#x3b;NUL.txt&amp;quot&#x3b; on Windows or you won&amp;apos&#x3b;t be able to delete it.&#x29; As a pr</description>
</item>
<item>
<title>ColdFusion Wrapper for Zint Barcode Generator - CFML source with 93 example barcode images in 3 formats</title>
<link>https://www.mycfml.com/articles/coldfusion-wrapper-for-zint-barcode-generator/</link>
<guid>https://www.mycfml.com/articles/coldfusion-wrapper-for-zint-barcode-generator/</guid>
<pubDate>Thu, 26 Jun 2025 12:00:00 GMT</pubDate>
<description>Zint is able to generate 93 different barcode formats using the command line on multiple platforms. I haven&amp;apos&#x3b;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.</description>
</item>
<item>
<title>ColdFusion Pseudolocalization for Generating &quot;Fake Translations&quot; - This is beneficial when preparing your app for I&amp;ntilde;t&amp;euml;rn&amp;acirc;ti&amp;ocirc;n&amp;agrave;liz&amp;aelig;ti&amp;oslash;n (i18n) compliance.</title>
<link>https://www.mycfml.com/articles/coldfusion-pseudolocalization-for-generating-fake-translations/</link>
<guid>https://www.mycfml.com/articles/coldfusion-pseudolocalization-for-generating-fake-translations/</guid>
<pubDate>Thu, 19 Jun 2025 12:00:00 GMT</pubDate>
<description>About 10 years ago, I wrote a ColdFusion User Defined Function &#x28;UDF&#x29; named pseudolocalize for transforming a given string by replacing its Roman &#x28;Latin&#x29; characters with similar-looking characters that have simple diacritical marks &#x28;accents, tildes, etc.&#x29;.</description>
</item>
<item>
<title>ColdFusion Gemini Vibes Gone Wrong - ... or maybe I&apos;m just not doing it right.</title>
<link>https://www.mycfml.com/articles/coldfusion-gemini-vibes-gone-wrong/</link>
<guid>https://www.mycfml.com/articles/coldfusion-gemini-vibes-gone-wrong/</guid>
<pubDate>Wed, 11 Jun 2025 12:00:00 GMT</pubDate>
<description>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</description>
</item>
<item>
<title>nameFaker - A CFML-based Function to Generate Fake Identity Data - Inspired by DataFaker, Faker.js and cbMockData. CF2016+</title>
<link>https://www.mycfml.com/articles/namefaker-a-cfml-based-function-to-generate-fake-identity-data/</link>
<guid>https://www.mycfml.com/articles/namefaker-a-cfml-based-function-to-generate-fake-identity-data/</guid>
<pubDate>Wed, 04 Jun 2025 12:00:00 GMT</pubDate>
<description>A project I&amp;apos&#x3b;m working on needs to be able to generate lots of fictitious&#x2f;fake identities for testing purposes. I wanted a mock library that works with CF2016&#x2b;, not have any dependencies &#x28;java JAR, EXE, API, etc&#x29; and offers both granularity &amp;amp&#x3b; customization when it comes to results and name lists.</description>
</item>
<item>
<title>Using ColdFusion and Xpdf to extract PDF metadata - Xpdf&apos;s Pdfinfo.exe outputs the contents of the &apos;Info&apos; dictionary (plus some other useful information) from a Portable Document Format (PDF) file.</title>
<link>https://www.mycfml.com/articles/using-coldfusion-and-xpdf-to-extract-pdf-metadata/</link>
<guid>https://www.mycfml.com/articles/using-coldfusion-and-xpdf-to-extract-pdf-metadata/</guid>
<pubDate>Thu, 29 May 2025 12:00:00 GMT</pubDate>
<description>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.</description>
</item>
<item>
<title>IsIPv6 - What does this built-in function do for your application?</title>
<link>https://www.mycfml.com/articles/isipv6-what-does-this-built-in-function-do-for-your-application/</link>
<guid>https://www.mycfml.com/articles/isipv6-what-does-this-built-in-function-do-for-your-application/</guid>
<pubDate>Mon, 12 May 2025 12:00:00 GMT</pubDate>
<description>isIPv6 has been around since 2009. Are you using it&#x3f; Is it beneficial&#x3f; Does it perform a connection to a host&#x3f; Does it test an IP string for validity&#x3f; Are the results consistent in Adobe ColdFusion, Lucee and BoxLang&#x3f;</description>
</item>
<item>
<title>Support Unlimited Forwarded Email Messages via API (and ColdFusion) - Forward Email Webhook and Taffy API</title>
<link>https://www.mycfml.com/articles/support-unlimited-forwarded-email-messages-via-api-and-coldfusion/</link>
<guid>https://www.mycfml.com/articles/support-unlimited-forwarded-email-messages-via-api-and-coldfusion/</guid>
<pubDate>Thu, 08 May 2025 12:00:00 GMT</pubDate>
<description>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&amp;apos&#x3b;s service, which offers unlimited domains and webhook-supported email forwarding.</description>
</item>
<item>
<title>CF_Timer Revisited - Timer functionality without enabling CF Debugging</title>
<link>https://www.mycfml.com/articles/cf-timer-revisited/</link>
<guid>https://www.mycfml.com/articles/cf-timer-revisited/</guid>
<pubDate>Thu, 01 May 2025 12:00:00 GMT</pubDate>
<description>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 be displayed in various formats &#x28;inline, outline, or as a comment&#x29;, assigned to a specified variable, or suppressed based on allowed IP addresses. The tag also offers flexibility in the time unit for output, including nanoseconds, microseconds, milliseconds, or seconds.</description>
</item>
<item>
<title>Ben &amp;amp; Ryan Show Guest Appearance - ColdFusion Custom UDFs - I get to share and explain some of my custom UDFs on a podcast with Ben &amp;amp; Ryan.</title>
<link>https://www.mycfml.com/articles/ben-and-ryan-show-guest-appearance-coldfusion-custom-udfs/</link>
<guid>https://www.mycfml.com/articles/ben-and-ryan-show-guest-appearance-coldfusion-custom-udfs/</guid>
<pubDate>Wed, 23 Apr 2025 12:00:00 GMT</pubDate>
<description>I was invited to be a guest on the Ben &amp;amp&#x3b; Ryan Show &#x28;hosted by xByte Solutions and Ben Nadel&#x29; to share some custom ColdFusion user-defined functions &#x28;UDFs&#x29;. UDFs are custom code blocks that you can create to perform specific tasks in your web applications,</description>
</item>
<item>
<title>maskCC UDF - Strips all credit card variations from a string. Useful when sending/storing user-submitted data in order to remain compliant with VISA Payment Card Industry Data Security Standard (PCI DSS) requirements</title>
<link>https://www.mycfml.com/articles/maskcc-udf/</link>
<guid>https://www.mycfml.com/articles/maskcc-udf/</guid>
<pubDate>Sat, 19 Apr 2025 12:00:00 GMT</pubDate>
<description>The maskCC user-defined function &#x28;UDF&#x29; takes a text string as input, searches for patterns that resemble credit card numbers, attempts to validate these potential numbers using ColdFusion&amp;apos&#x3b;s built-in credit card validation, and then masks the validated numbers by replacing all but the last four digits with asterisks.</description>
</item>
<item>
<title>jreEscape UDF - Escapes regular expression control characters within a string</title>
<link>https://www.mycfml.com/articles/jreescape-udf/</link>
<guid>https://www.mycfml.com/articles/jreescape-udf/</guid>
<pubDate>Sat, 19 Apr 2025 12:00:00 GMT</pubDate>
<description>The jreEscape user-defined function &#x28;UDF&#x29; 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.</description>
</item>
<item>
<title>tempCache UDF - Leverages cacheput/get to store temporary secrets; ie short-lived client variables-on-demand without having to enable client variables</title>
<link>https://www.mycfml.com/articles/tempcache-udf/</link>
<guid>https://www.mycfml.com/articles/tempcache-udf/</guid>
<pubDate>Sat, 19 Apr 2025 12:00:00 GMT</pubDate>
<description>The tempCache user-defined function &#x28;UDF&#x29; 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.</description>
</item>
<item>
<title>enableWKHTMLTOPDFForms UDF - Modifies PDF bits so Adobe Reader treats non-Adobe PDF as &quot;editable&quot;</title>
<link>https://www.mycfml.com/articles/enablewkhtmltopdfforms-udf/</link>
<guid>https://www.mycfml.com/articles/enablewkhtmltopdfforms-udf/</guid>
<pubDate>Sat, 19 Apr 2025 12:00:00 GMT</pubDate>
<description>This enableWKHTMLTOPDFForms user-defined function &#x28;UDF&#x29; 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&amp;apos&#x3b;s data related to annotation parents and replacing the word &amp;quot&#x3b;Parent&amp;quot&#x3b; with &amp;quot&#x3b;Papent&amp;quot&#x3b; in those patterns. This seemingly small change addresses an incompatibility issue that prevents Acrobat from recognizing and allowing editing of form fields created by WKHTMLTOPDF.</description>
</item>
<item>
<title>generateEmailHashCode UDF - Useful for identifying and blocking comment form abuse; SQL queries using INTs are faster</title>
<link>https://www.mycfml.com/articles/generateemailhashcode-udf/</link>
<guid>https://www.mycfml.com/articles/generateemailhashcode-udf/</guid>
<pubDate>Sat, 19 Apr 2025 12:00:00 GMT</pubDate>
<description>The generateEmailHashCode user-defined function &#x28;UDF&#x29; processes an email address by extracting the domain, sanitizing the username by removing periods &#x28;dots&#x29; and any part after the first &amp;quot&#x3b;&#x2b;&amp;quot&#x3b;, converting both parts to lowercase, and then returning a consistent Java-generated integer hash code of the resulting string.</description>
</item>
<item>
<title>streamFindnocase UDF - Searches the output buffer to determine if a string exists; Used for lazy dependency injection</title>
<link>https://www.mycfml.com/articles/streamfindnocase-udf/</link>
<guid>https://www.mycfml.com/articles/streamfindnocase-udf/</guid>
<pubDate>Sat, 19 Apr 2025 12:00:00 GMT</pubDate>
<description>The streamFindNoCase user-defined function &#x28;UDF&#x29; 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</description>
</item>
<item>
<title>createShadowHtml UDF - Allows embedding of a full HTML document in a webpage; (ie, inline email/PDF preview)</title>
<link>https://www.mycfml.com/articles/createshadowhtml-udf/</link>
<guid>https://www.mycfml.com/articles/createshadowhtml-udf/</guid>
<pubDate>Sat, 19 Apr 2025 12:00:00 GMT</pubDate>
<description>The createShadowHtml CFML user-defined function &#x28;UDF&#x29; 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 isolated rendering of HTML and CSS without interference from the main document&amp;apos&#x3b;s styles or scripts.</description>
</item>
<item>
<title>hashid / ishashidValid UDFs - Protect against sequential traversal when using INT keys</title>
<link>https://www.mycfml.com/articles/udf-hashid-ishashidvalid/</link>
<guid>https://www.mycfml.com/articles/udf-hashid-ishashidvalid/</guid>
<pubDate>Sat, 19 Apr 2025 12:00:00 GMT</pubDate>
<description>The hashid and ishashidValid CFML user-defined functions &#x28;UDFs&#x29; provide a simple mechanism for generating and validating hash-based identifiers.</description>
</item>
<item>
<title>CFFrankenstein: Choosing to use EXEs instead of CFML BIFs</title>
<link>https://www.mycfml.com/articles/cffrankenstein-choosing-to-use-exes-instead-of-cfml-bifs/</link>
<guid>https://www.mycfml.com/articles/cffrankenstein-choosing-to-use-exes-instead-of-cfml-bifs/</guid>
<pubDate>Sun, 30 Mar 2025 12:00:00 GMT</pubDate>
<description>I &#x2a;&#x2a;choose&#x2a;&#x2a; to use a lot of third-party Windows command line programs as part of our ColdFusion&#x2f;CFML stack. Much of the functionality could be considered duplicated since official built-in functions &#x28;BIFs&#x29; already exist, but I perceive it as a &amp;quot&#x3b;customer-controlled functions that always return reliable results regardless of CFML platform and&#x2f;or version&amp;quot&#x3b;.</description>
</item>
<item>
<title>Using ColdFusion to Generate Pre-Signed Wasabi Download URL</title>
<link>https://www.mycfml.com/articles/using-coldfusion-to-generate-pre-signed-wasabi-url/</link>
<guid>https://www.mycfml.com/articles/using-coldfusion-to-generate-pre-signed-wasabi-url/</guid>
<pubDate>Thu, 20 Mar 2025 12:00:00 GMT</pubDate>
<description>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 simple, but I got confused somewhere along the way and it just wasn&amp;apos&#x3b;t working.</description>
</item>

<atom:link href="http://www.mycfml.com/feed/" rel="self" type="application/rss+xml" />
</channel>
</rss>

		
		
	