All posts

Every article I've written, collected in reverse chronological order.

2026

2022

  • How to Get the Version of Any Java Package from CFML

    The Apache POI library is an awesome tool for messing with spreadsheets. You can read spreadsheet data, get header rows, total row count, all sorts of wacky stuff. Julian Halliwell's excellent spreadsheet-cfml library uses it to great effect.

2021

2020

2019

  • Three ColdBox Features I Learned While Building A URL Shortener

    Last night I did another live-stream where I finished the first draft of a URL shortener I'm calling "cfShorty". During live-streams I typically end up searching the ColdBox docs for help, but this time Gavin Pickin watched and commented with some cool tips, most of which I'd never used before.

  • Localizing Dates In Sql Server

    Several months ago I added timezone handling to a CF app. This post is my best effort to document how to localize dates using MSSQL timezone functionality.

  • Form Processing in CFScript Part Three: Sending Email Notifications

    In this series so far, we've looked at how to validate a form entry and how to save that form entry to the database. Today we'll see how we can notify a person (usually a site admin or editor) that a new form entry has been submitted and processed by simply sending an email.

  • Storing and Using DateTimeOffsets in Lucee

    Recently at Impelos I began storing dates using SQL Server's DateTimeOffset field, which allows us to store a date and time with embedded UTC offset. Unfortunately, I ran into several issues with Lucee's support for the data type.

  • CFScript Gotchas and Syntax Guides

    Now, script syntax is usually straightforward, but as with any language, sometimes it's easy to get confused over certain things in script syntax. In this post I'll cover a quick list of common "gotchas" in CFScript, document the proper syntax for each, and finally link to a list of CFScript guides which may help you start writing CFScript today.

  • Switching from Tag to Script

    Look, I write in CFScript. Most of the CF devs I look up to write in CFScript. But maybe you don't. Here's where I convince you CFScript is worth the jump and, for that matter, just how to "jump" to CFScript.

  • CF: A Legacy of Legacy

    I've seen a lot of discussions revolving around ColdFusion and whether it is inherently a "legacy" language. There are dozens of blog posts proclaiming the death of the language, and every comment seems to share a story about just how "legacy" CF is. Today, I'd like to look closely at why so many dare to call us a legacy language, and what we can do about that.

  • Yes, ColdFusion is 'Unpopular'. No, I don't care.

    It’s popular to hate on CF. It’s popular to say ColdFusion is "dying". It’s popular to call CF a "legacy" language, and compare it to COBOL. But is ColdFusion really unpopular? And, more important… does it matter?

  • TIL: Rename a Column in SQL Server

    Trying to rename a column today in an MSSQL database. I expected the standard ALTER TABLE x CHANGE oldColumn newColumn <type> to work, but apparently that's a MySQL-only thing? Instead I did a quick Google search and came up with this nugget:

  • Using ArraySome and ArrayEvery Higher-Order Functions in Lucee

    In this post I'm going to take two Lucee only higher-order array functions, arraySome() and arrayEvery(), and explain their use and purpose. I'll also review the concept of a higher-order function, as well as the Super Cool (yet very little used) lambda expression available in Lucee 5.

  • Five Reasons to Learn CF in 2019

    I am happy to present Five Reasons to Learn CF in 2019. I'm trying to be honest here, but you may find some bias because I love ColdFusion. There, I confessed. Read on!

  • Five Reasons to Learn CF in 2019

    Now that you've read my Why Coldfusion? post (you HAVE, right?), let's do a simple Hello World just to try some sample CF code.

  • Why I Program in Coldfusion

    I get asked this a bunch. Why are you programming in Coldfusion, anyway? Isn't Coldfusion dead? Isn't it closed-source? Isn't it expensive?

  • TIL: Ignore Linting Rules in CFLint

    So, CFLint is super useful for CF development. There's a VS Code Extension which can lint your CF tag or script syntax on the fly, and there is also a CommandBox Package which can lint an entire folder of .cfm or .cfc files.

  • TIL: Stash Specific Files and Filenames

    Why would you ever want to stash a specific file, as opposed to any and all altered files, you ask? In an ideal world, you probably wouldn't need to. In this specific case, I was attempting to stash files I had modified without stashing other files which had been bulk-edited by a script. In other words, I wished to throw away most of my changes and keep one or two specific changes after a git merge.

  • TIL: Docker Env Vars Use Equal Signs

    I did something pretty stupid a week or two ago. I was setting up a MariaDB database using Docker-compose, and I kept getting an error saying that MYSQL_ROOT_PASSWORD was not set. This made no sense to me - of course MYSQL_ROOT_PASSWORD is in the .env file, right?

  • TIL: How To Disable Auto-Restart on Docker Containers

    So I've had this docker container hanging around my Ubuntu machine since I first developed/started it. It's there whenever I run docker ps, and I finally decided I need to stop this useless container from hogging my machine's memory. (After three months!)

2018