Using Argon2 in Lucee CFML

A couple of months ago a wrote about password hashing in CFML (if you haven’t read that, I would suggest reading it before reading this) and in the post, I mentioned that Argon2 as being the currently recommended algorithm for password hashing but that, at the time of writing, neither Adobe ColdFusion or Lucee natively supported the Argon2 algorithm. I submitted an enhancement request to Lucee via their JIRA ticket system and at the end of August, it was reported on the ticket that it had been implemented and support was available in build or higher. Currently, this build is only available on the SNAPSHOT branch, but it is available to download and use if you want it, so I thought I would give it a try.

Read More

Password Hashing in CFML

As we all know, or at least should know, if you are storing passwords in a database, they should only ever be stored as hashes and NEVER as plain text or using reversible encryption.

What is hashing?

By hashing the password, you are not storing the original password, only a calculated representation of the password, that given you know certain information about how the hash of the password was created, you can recreate the same hash from the password and compare the stored version to the newly hashed version for verification.

Read More

Using HTTPS certificates with Traefik and Docker for a development environment

Traefik is a great “cloud” router that is perfect for use in a development environment to route traffic to different Docker hosts, but when I came to try and add some self-signed certificates to it so that my development environment more realistically mirrored the staging and production environments I ran into some problems and the Traefik documentation, whilst good, unfortunately, is a little vague around the subject of certificates in a general, so it took some Googling and putting various different things together to come up with a final solution that works well.

Read More

Insulin Therapy with Loop

Disclaimer: I am not a medical professional and everything in this article is based on personal experience and is for informational purposes only.


My son, Jamie (aged 9), is a type 1 diabetic. He was diagnosed 3 years ago, just before his sixth birthday, and ever since then, we’ve been learning everything we can about it, the treatments and the technology that can help. The standard therapy for Type 1 Diabetes (T1D) is multiple daily injections (MDI), where the patient takes two different types of insulin, long-lasting insulin taken once a day and fast-acting insulin taken with meals, so for most patients, this means at least four injections per day.

Read More

Looping over dates in CFML

A question came up on the CFML Slack a couple of days ago where someone was asking about looping over a date range, e.g. from 1st August 2018 to today. He suggested he was going to “do it the old fashioned way using DateDiffs and DateAdds” so he could do it with “regular numbers”. In CFML, however, looping over dates is possible, like this:

Read More

Functions without parameters in CFML

I’ve been programming in the ColdFusion Markup Language (CFML) since 2000 and every now and again I find out something which I didn’t know, which always surprises me. Yesterday, while working on something I accidentally found out that in CFML you can pass parameters to a function without those parameters actually being defined in the parameter list of the function.

Read More