Still writing CFML in 2017

I came across a post by Adam Cameron today regarding migrating away from CFML, and the possibility of helping others to do so with some kind of project similar to the excellent ColdFusion UI the Right Way - showing how common CF functionality could be replicated in other languages.

I still love CFML, but I can't deny that the community has gotten smaller over recent years and some of the work I've had of late has involved helping to maintain legacy CF based systems while new ones are being built in some other language.

I'm certainly not against moving to other languages, but I have to say I'm still in the process of building complex and if I do say so myself, awesome systems in CFML. There's life in the old girl yet if you ask me.
Still, it's a worthwhile discussion and I would certainly be interested in a project that showed the right way to do things in languages I'm unfamiliar with.

I'd suggest anyone with some time to spare go over and fill out Adam's survey. In the meantime, I thought I'd share my answers below for posterity.

Provide a brief comment about yourself

I'm Gary Stanton, a freelance webdev based in Brighton. Primarily contracting for a few clients and have been building bespoke systems for well over a decade.

How did you come to be a developer?

I have no formal training beyond some very limited exposure to Turbo Pascal and Cobol in college.
Back in the late 90's I was primarily designing, and coding websites for anyone who'd pay me to do so. Static HTML, tables for layout, all that lovely stuff. My focus was mainly on the design at that stage.
In the early 2000's I was working for a small startup e-commerce company using an off-the-shelf offline package. As we grew, we began to need something more bespoke and dynamic. We were approached by a CF developer who ended up building our new system and so I was forced to familiarise myself with CF... It was so easy to get involved in the server side, and the possibilities excited me far more than design... I never looked back really.
Dev is my core function, but with most of my clients I have to act as sysop as well. I do a bit of design and UX too if I can’t avoid it.

Summarise your CFML usage timeline

I’ve been using CF from about 2003 I think. I started on MX so have only ever experienced JVM versions.
I've worked with every version up until CF11
Around 2012 I think, I began to use Railo for some clients and now split about 60/40 between ACF and Lucee.
I’m not moving on yet, but front end dev has become a bigger part of my workload in the last 3 years or so.

During that time was it your primary or sole dev language? Or was it always an adjunct to some other language?

CFML has always been my primary server side language, but work has often required significant client-side stuff and I've sometimes found months have gone by where I've not used CFML much at all.
I've had to work with Wordpress a fair bit, which I consider to be different to building in PHP as the API is so extensive. It's amazing how much you can do in Wordpress whilst still remaining utterly ignorant of the intricacies of PHP... alas.
These days my primary focus is still CFML, but I'm doing more with JS... I've had some work with HTML5 game development and dabbled in Node a little.

Client side stuff has become more and more involved over the last few years, with responsive dev, package managers, build automation, etc. - I'm finding this is taking up higher percentages of dev time in any given project... ‘s fun though.

Did you work on just in-house code bases for your employer, or did you also work on third party code bases too.

I've inherited a few in-house systems, and built a few of my own.
I've not really had much experience with third party CF stuff - be it a framework, CMS or application. Everything is usually built from scratch. I’ll sometimes make use of a library or some Java class though.

I've been itching to open source some of my better stuff but have never quite got anything to a stage I'd be happy to release.

If you're still primarily a CFML developer... why?

There's a whole bunch of reasons really... I've got a lot of CFML experience and I still find it a pleasure to build with.
There are fewer CF devs out there, so I find myself on the radar of companies that need it.

There's also the fact that if I'm busy being hired to write CFML, I have less time to look at other languages. I'm confident in my ability to build robust and secure apps in CFML, but without the years of experience I've had, I'd feel less confident building complex systems in another language.

As a contractor, no-one is going to pay for my time to learn anything new, so my entire workday is filled with CFML or front end dev.

If you've moved on from CFML: why?

I'm aware of the way the winds are blowing - while I've not moved away from CFML, I know I need to expand my skillset. Which way to turn is a bigger question and I've struggled to think of another serverside language that I could feel as empowered with, as CFML.

Do you use primarily or solely ColdFusion; or Lucee or Railo; or some variation of BlueDragon?

I moved from ACF to Railo for my own systems primarily because of cost - my clients have limited budgets.
I found however that Railo was faster, and that the team were far better at offering help and fixing issues. Most of my systems have migrated to Lucee now of course, though one or two are still on a legacy Railo version.

Some of my clients are still running ACF and that's great.... but if there's a bug, I have to find a workaround really, because it'll take Adobe well over a year to look at it and then decide they can't be arsed to fix it.

Having said that, the more corporate environments sometimes have requirements that ACF can handle and I'm not sure Lucee could. Bizarre legacy DLLs and the like... probably why they went for ACF in the first place.

Do you participate in any CFML-based open source projects?

Not really... I'll engage with a community if I'm using a project, but that rarely goes beyond submitting bugs or discussing features.

And what about in other languages?

I’ve made a few commits to the Magento API documentation... that count?

What is or was - for you - the best feature of CFML which has you going "yeah, that's pretty cool actually".

Flash forms? ;)

I dunno that there’s any one killer feature... and certainly none of the RIA bollocks... but there’s a few things I prefer in CF to php.
I like that I can switch between CFScript and CFML and that I can embed a tag directly in HTML. I find php cumbersome in this regard.
I like the struct and query objects, both of which seem more useful than what’s available to me in php. I also find the formatting of CFDump to be a real timesaver compared to the php options. I actually found a php UDF to mimic CFDump not so long ago.

Are there any CFML features that would have fallen into that category for you when you were doing CFML, but ended up not being as cool as you thought when you looked at other languages?

At a push maybe... query of queries? They can be useful, but more and more now I’m tending to write similar functionality directly in the DB, which feels a lot cleaner.

What is it about CFML (or the underlying ColdFusion / Lucee / etc platform) you like the least?

The JVM is still something of a mystery to me. I’ve had problems with the JVM over the years that I simply lack the understanding to diagnose... CFML is so easy to build great functionality and with a bit of experience I’m even confident I’m building things the right way; but still I’m at the mercy of the goddamned JVM, and I’m not sure as a CFML developer I should have to delve into the underlying JVM as much I have done.

I also find Adobe’s attitude to CF frustrating. Bugs take ages to get fixed, and way too much emphasis has been placed on poorly implemented RIA functionality to the detriment of the core language.

If there was a project similar to "ColdFusion UI the Right Way", but aimed at any part of CFML (like how to make a DB query in PHP instead of CFML for example), would you be keen to help on it? Would it be of interest to you to be a "user" of it?

I’d be interested in something like this if there was an emphasis on the ‘Right Way’ aspect. It took me a couple of months to learn to code in CF and probably about another five years to learn how to code well. Perhaps that would have been different if I had a computer science background, but I think it’s way too easy to learn bad coding habits. When I’ve dabbled in other languages, I have a niggling worry that I’m writing terrible code that I’ll come to loathe in a short while.
I’m not sure how much help I could be, but I’ll keep an eye on the project.