[HN Gopher] Building ColdFusion for the Web
       ___________________________________________________________________
        
       Building ColdFusion for the Web
        
       Author : paulgb
       Score  : 84 points
       Date   : 2023-12-31 02:28 UTC (20 hours ago)
        
 (HTM) web link (thehistoryoftheweb.com)
 (TXT) w3m dump (thehistoryoftheweb.com)
        
       | simondotau wrote:
       | I still use CFML today, albeit a fully open source rewrite of it.
       | It's insanely productive, even if it doesn't tick all the modern
       | enterprise programming boxes.
        
         | conception wrote:
         | It's true. CFML is the fastest nothing to something I've ever
         | used.
        
           | JoeOfTexas wrote:
           | CF is actually pretty good for server-side rendering.
           | However, when mixing with JS it does get a bit convoluted.
           | 
           | I used it back in 2010-2014, and made some pretty nifty
           | webapps to manage a tournament with brackets and live scores.
           | I thought whoever designed it was bonkers, and the ones who
           | bought into it, even more bonkers. But Ben Nadel showed me
           | the way, bringing some sanity to the language.
        
         | a1o wrote:
         | Are you using Lucee?
        
           | simondotau wrote:
           | Yep. It's been running my large-ish website for over a
           | decade. Performance, reliability etc are all off the charts
           | compared to any other ecosystem I've used.
        
             | c-hendricks wrote:
             | Is whirlpool.net.au built with coldfusion?
        
               | simondotau wrote:
               | It's built with CFML and the server ran ColdFusion in the
               | early years but we switched to Railo (later Lucee) pretty
               | much as soon as it was an option. Aside from being free,
               | it was faster and more reliable.
        
         | LispSporks22 wrote:
         | What's the open source one called?
        
           | simondotau wrote:
           | https://www.lucee.org/
        
       | replwoacause wrote:
       | Is there a modern version of CFML today or something currently
       | maintained? It sounds really nice and stands in contrast to the
       | convoluted options we have today.
        
         | replwoacause wrote:
         | Oh looks like adobe sells one. But I'm not a fan of their
         | software so I wonder if there are any other comparable options?
        
           | bdcravens wrote:
           | Yes, there's an open source variant
           | 
           | https://www.lucee.org/
        
         | yebyen wrote:
         | Yes, there is Lucee; I never used it, but when I was briefly
         | asked to take on some Coldfusion work almost two jobs ago, I
         | remember that I found it looked to be a vibrant and actively
         | developed community, far different than what we were seeing of
         | CF upstream that appeared to be on life support. I did not get
         | into it, I'm afraid my manager thought I might like it too much
         | and I was asked to work on something else about when it started
         | heating up :( too bad for me.
         | 
         | I also remember coming across something called Railo that
         | appears to have come before Lucee.
        
           | bdcravens wrote:
           | Lucee was forked from Railo (Railo, like Lucee, was well-
           | maintained until the company that owned it and hired the
           | developers mismanaged it. The developers left and went on to
           | start Lucee)
        
         | altano wrote:
         | CFML was the easiest way to get into dynamic, server-side
         | rendered pages back in the day. It was insanely productive and
         | easy for a person cutting their teeth on programming as it was
         | such a small leap from HTML.
         | 
         | I don't know of anything that still ticks those boxes but if
         | you're just looking for (1) easy-ish, (2) interspersing HTML
         | tags and code, and (3) server-side rendered simplicity, then
         | PHP is still a very viable successor.
        
         | bdcravens wrote:
         | I built the first part of my career in CFML. I then moved onto
         | Rails, which I feel has much of the same ethos.
         | 
         | That said, Lucee is a well-maintained, open-source variant of
         | CFML that you can use today. I still maintain a significant
         | production app that uses it.
         | 
         | https://www.lucee.org/
        
           | simondotau wrote:
           | Same, I run a large-ish website with it. Lucee is insanely
           | stable and reliable, and is VERY actively maintained. It just
           | works, and it keeps on just working.
           | 
           | The only thing going against it is prejudice, IMHO.
        
         | ChrisMarshallNY wrote:
         | I'd say that PHP is actually a fairly good alternative to CF.
         | It's probably why CF fell out of favor (CF was also a
         | commercial product).
         | 
         | Early PHP was almost always embedded in HTML, like CF. It's
         | been many moons, since I've worked that way, but many
         | developers still do.
        
           | jrochkind1 wrote:
           | And indeed decades ago when i used CF, some developers would
           | move to files that had all CF logic and no HTML, for an MVC-
           | kind of setup where only the V was HTML with embeds. Similar
           | to the trend in PHP.
           | 
           | (I stopped using it nearly 20 years ago and don't know what
           | has happened since).
           | 
           | I would agree that PHP and CF (at least CF of 20 years ago)
           | are pretty similar conceptually.
        
       | KevinMS wrote:
       | In the 90's I saw a poster calling for ColdFusion developers to
       | apply, in one of those backlit poster stands, in the mall. That's
       | how crazy the job market was.
        
       | MentallyRetired wrote:
       | Blast from the past. I was a lead ColdFusion developer for almost
       | a decade. Good times. When I rearchitected the booking engine for
       | all of the Disney Parks, I based the design on Fusebox, a popular
       | ColdFusion framework at the time. It's still in use today.
        
         | jamghee wrote:
         | Was Fusebox a predecessor to ColdBox?
        
           | bdcravens wrote:
           | Yes.
        
       | zekenie wrote:
       | i learned cold fusion in middle school. this was before stack
       | overflow and i remember that one of the benefits to cfml was that
       | it was highly guessable. i wasn't great at consulting docs and
       | once you got a few patterns you could figure the rest out with
       | trial and error
        
       | kshahkshah wrote:
       | As a teenager in the 90s, I built a huge site off of CFML, IIS
       | 4.0, Apache 1.3 pre-fork, Windows NT, and MSSQL (6?). Really
       | grateful for that tech back then.
        
       | peteforde wrote:
       | The ugly legacy of ColdFusion lives on in tools like Vue and
       | AlpineJS.
       | 
       | If you like working with HTML, don't use tools that introduce
       | proprietary syntax to inject janky control structure and looping
       | logic.
       | 
       | Instead, consider StimulusJS, which allows you to add behaviors
       | to elements in your DOM. It's the sharpest tool you're not using.
       | Give it a shot before smashing that down arrow.
        
         | alephnan wrote:
         | > Instead, consider StimulusJS, which allows you to add
         | behaviors to elements in your DOM. It's the sharpest tool
         | you're not using. Give it a shot before smashing that down
         | arrow
         | 
         | I did. And that's exactly why I'm smashing that down arrow.
         | It's highly subjective whether it's the sharpest tool for the
         | job, because for me it's not.
        
         | bdcravens wrote:
         | Stimulus is great, but a technology that really gives me the
         | vibe of working with CFML is HTMX.
         | 
         | I think the "ugly legacy" is a bit of a near-sighted
         | perspective. Today CF's reputation seems limited to being a
         | spaghetti-riddle mix of HTML with logic, but for the era it was
         | built in, it was an amazing language focused on productivity.
        
           | peteforde wrote:
           | I agree that HTMX is in this camp. My primary frustration
           | with HTMX - even more than the CF-inspired syntax - is that
           | it's fundamentally a client-side solution. Better than
           | nothing, but if you want to build the next Figma, you need to
           | look towards a toolset where the single source of truth is on
           | the server. StimulusReflex on Rails or Phoenix LiveView on
           | Elixir are a lot closer to a full-stack solution.
           | 
           | Obviously, all of this is highly subjective. When ColdFusion
           | came out, I was primarily working in ASP and its OSS clone,
           | PHP. You'll have to trust me when I say that my opinion on
           | the ugly was formed at the time, and hasn't changed since.
           | 
           | It seems as though folks either like interpolated templates
           | (ASP, PHP, ERb), components (React and etc) or macros (CF,
           | Alpine, HTMX). It could be that one's first true love
           | endures.
        
             | listenallyall wrote:
             | Such a weird comment... nobody would ever suggest using
             | HTMX to build a "desktop app" running in the browser like
             | Figma. But since 99% of projects are nothing like Figma,
             | it's typically not an issue.
             | 
             | But HTMX practically _requires_ server-side state. The
             | whole point is to make it very easy to frequently update,
             | and receive new content from, a server (HATEOAS), and NOT
             | to maintain state client-side. If you 're building a site
             | "where the single source of truth is on the server" then
             | HTMX fits perfectly.
        
               | peteforde wrote:
               | The difference I'm referring to is "requires" vs "ships
               | with".
               | 
               | As to whether a requirement is typical or not, I am
               | frustrated by local maximum thinking. If your tooling
               | cannot build an ambitious project, then you're not going
               | to build an ambitious project.
               | 
               | I actively try to spend my finite time on ambitious
               | projects in general. You don't need LiveView or
               | StimulusReflex to build a landing page, that's true. But
               | if you're building an ambitious real-time web app, the
               | range of complexity where it makes sense to use HTMX
               | instead of a full-stack solution gets smaller very
               | quickly.
        
         | troupo wrote:
         | > don't use tools that introduce proprietary syntax to inject
         | janky control structure and looping logic
         | 
         | And StimulusJS doesn't?                  <div data-
         | controller="modal"          data-
         | action="keydown.esc->modal#close" tabindex="0">
         | 
         | </div>                  <div data-controller="content-loader"
         | data-content-loader-url-value="/messages.html"          data-
         | content-loader-refresh-interval-value="5000"></div>
         | 
         | Zealots cannot recognize a custom nonstandard poorly specified
         | DSL even if stares them right in the face
        
           | peteforde wrote:
           | Wait, do you mean this custom nonstandard poorly specified
           | DSL? https://html.spec.whatwg.org/multipage/dom.html#attr-
           | data-*
           | 
           | What you're showing above is 100% standards HTML 5. Data
           | attributes have been a thing since 2008 or perhaps slightly
           | earlier.
           | 
           | You might not love the look of it, but the markup above is
           | something that your browser understands without
           | interpretation. You can turn off JS and it will render
           | without any issue whatsoever.
           | 
           | https://developer.mozilla.org/en-
           | US/docs/Web/HTML/Global_att...*
           | 
           | This is very different from tooling that uses alternative,
           | non-HTML syntax. Our browsers might be written to be absurdly
           | tolerant of broken markup, but that doesn't mean that
           | Vue/HTMX/Alpine/CFML templates aren't proprietary.
        
             | arcanemachiner wrote:
             | FWIW I'm pretty sure Alpine can be configured to require
             | `data-` as a prefix for its tags, e.g. `data-x-
             | click="handleClick"`.
        
             | troupo wrote:
             | > What you're showing above is 100% standards HTML 5. Data
             | attributes have been a thing since 2008 or perhaps slightly
             | earlier.
             | 
             | So, which part of these is standardized and non-custom:
             | keydown.esc->modal#close        content-loader-url-value
             | content-loader-refresh-interval-value
             | 
             | > This is very different from tooling that uses
             | alternative, non-HTML syntax.
             | 
             | Ah yes. Pure HTML syntax of `keydown.esc->modal#close`
        
       | PaulDavisThe1st wrote:
       | I was on the web early (building amzn in 94), doing everything
       | from scratch in C++ with NSAPI. ColdFusion was probably the only
       | tool I saw in that period that made me ever think "I wish we were
       | using that". Probably for the best that we didn't :)
        
       | pknerd wrote:
       | Ah.. my first Job was writing apps in cfm.
        
         | Eric_WVGG wrote:
         | In 1997 I got a job at a local newspaper, threw together a
         | weekly website that mostly consisted of hard-coded HTML
         | templates and liberal use of `<frame>` tags.
         | 
         | After a few months and several hundred hard-coded files, a
         | helpful fellow at our hosting firm introduced me to ColdFusion
         | and Microsoft Access. That set the foundation for the next
         | twenty-five years of my life, really.
         | 
         | Thanks CF!
        
       | zubairq wrote:
       | ColdFusion was a very influential language for me. I first
       | encountered real world use of it in 2001 when I worked at
       | TradingCars, a startup in the Netherlands. A guy could build in a
       | few hours in Coldfusion a faster version of the same webapp that
       | took several of us Enterprise Java guys several weeks to build. I
       | think they even ended up dumping Java for the Coldfusion version
       | in the end, but I can't verify that.
       | 
       | Anyway, I always loved the elegance and simplicity of the SQL
       | embedded in the HTML (from what I remember).
       | 
       | Also interesting how the creator of Coldfusion, Jeremy Allaire,
       | ended up moving to Crypto and creating Circle and USDC, one of
       | the cornerstones of the whole crypto world.
        
       | bdcravens wrote:
       | I built the first part of my career in ColdFusion, ran the local
       | CF user group, and even spoke at a number of CF conferences. I
       | even still run a production app and occasionally do consulting in
       | CF.
       | 
       | CF, while still a commercial product, also has a well-maintained
       | open-source version called Lucee [1]. There's a modern MVC
       | framework called ColdBox [2], and the parent company also
       | produces a number of amazing ecosystem tools like CommandBox [3]
       | (a first-class tool for standing up local dev servers, dependency
       | management, etc) and a modern testing framework [4].
       | 
       | I mostly focus on Rails these days, but there's a number of
       | things I miss from the CFML world. (web GUI for configuration,
       | in-memory ability to query recordsets with SQL, etc). I can't
       | help but chuckle at things like server-rendered components which
       | we were doing in the 90s with CF custom tags.
       | 
       | 1. https://www.lucee.org/
       | 
       | 2. https://coldbox.org/
       | 
       | 3. https://www.ortussolutions.com/products/commandbox
       | 
       | 4. https://www.ortussolutions.com/products/testbox
        
         | riffraff wrote:
         | Could you expand on what does "web gui for configuration" mean?
         | 
         | Do you mean that CF came with a default system to create db-
         | backed configurations with some pre-built UI?
         | 
         | That seems cool but somewhat nasty to deal with when having
         | different environments.
        
           | bdcravens wrote:
           | No, I'm talking about application configuration. Things like
           | database connections, caching, SMTP server, etc. All the
           | things in contemporary frameworks that are stored in YAML or
           | JSON files.
        
             | simondotau wrote:
             | Important to note that this config is still stored in an
             | XML file inside of WEB-INF and can be version controlled
             | etc. (Or at least it can with Lucee. Don't know about
             | Coldfusion Server. Surely nobody seriously uses that any
             | more?)
        
               | linsomniac wrote:
               | Adobe CF also definitely uses an XML configuration as
               | well.
        
         | n3storm wrote:
         | What happened or what role has in this Open Blue Dragon?
        
       | winrid wrote:
       | I almost became a CF dev in 2013.
       | 
       | I was living in my car and another car stopped at the rest stop
       | making bad noises. I traveled with lots of tools and helped them
       | diagnose the issue, and he said if I could write ColdFusion and
       | PHP they would practically beg me to join (although he used a
       | more sexual phrasing...).
       | 
       | Anyway I declined the offer and got a job writing PHP and Node...
       | :)
        
         | coffeebeqn wrote:
         | Probably a solid life principal to decline sexually tinged
         | offers at truck stops
        
       | netcraft wrote:
       | I wrote CFML for the better part of two decades, only getting
       | away from it in the past couple years.
       | 
       | I started back with 4.5 when I found it on a shelf at the
       | publishing company I worked for in high school - a former
       | employee had won it in a contest at a conference and had no idea
       | what it was. I ended up building an entire ecommerce system on
       | it, building many backoffice apps, connected to the mainframe and
       | building far faster than the green screen programmers ever could.
       | (this is not a critique of mainframes or green screens, there was
       | much value there thats been lost, but I digress)
       | 
       | I am very happy to be away from CF today. it was one thing with
       | macromedia, a different thing when adobe bought it and IMO
       | mismanaged it over the years (I cant believe they still have it
       | tbh, the money they make from legacy apps using it in the
       | enterprise must be enormous), and while lucee started off great,
       | it lost its way and never had enough resources to do things well.
       | 
       | But the biggest thing was that like many niche languages, you end
       | up with a cult of zealots - either true believers, those whose
       | livelihoods are tied to it, or those who are so pot committed to
       | it they have to convince everyone around them that they're
       | continuing to make the right choice sticking with it. Ive seen it
       | with many niche or dying languages, the ones that have been
       | around as long as this one, really had time to metastasize,
       | theyre the worst though. You cant criticize or critique without
       | causing drama. "evangelists" jumping into every thread, yelling
       | how CF isnt dead, how their latest framework is the one true way,
       | arguing over things that dont matter. I know because I was one of
       | those people for a decent stretch. Not wanting to believe that
       | the language I had chosen and spent so much time with wasnt the
       | the best.
       | 
       | But I also look back fondly on CF, and others like it. PHP,
       | rails, these are looked down on today but there are so many
       | places where they are an excellent choice for the job at hand.
       | Types are fantastic once you reach a level of complexity and
       | size, theyre a hindrance till then. The compiler is great when
       | you reach that size, it slows you down till then. In my "modern"
       | stack at work, there are lots of nice features, but the iteration
       | speed is a tenth of what I had with my server-rendered, JIT, html
       | sprinkled with programming language. We delivered more value, far
       | faster.
       | 
       | So I guess ill just say, thank you CF for what you were, still
       | are for many. If youre on the outside or inside nowadays, dont
       | look down on it, but also dont think about it like religion.
        
         | netcraft wrote:
         | I want to add one more thought here though: the one language
         | that I will evangelize as long as I live, the one that will
         | outlast them all is SQL - and credit where due, CF had a
         | fantastic relationship with SQL, much better than many other
         | comparable langs, honestly one of the best ive ever seen.
         | cfquery was and still is the best thing CF ever had. No other
         | lang was it as easy and fast to run a safe, parameterized sql
         | statement and stick the results in html.
        
           | irrational wrote:
           | Absolutely. I mentioned this in another comment, but the fact
           | that every language doesn't have a version of cfquery
           | (including query of queries) is criminal. It makes me sick
           | when I have to work with sql in any other language because I
           | always think how much easier it would be with cfquery. People
           | should copy the best ideas and cfquery is one of the very
           | best ideas ever to come out of programming languages.
           | Everyone should be copying it.
        
       | twodave wrote:
       | I had to do a final project in ColdFusion in a web dev class in
       | college (2006 I think?). It was a class where we had also used
       | Perl, PHP and classic ASP. After that class I spent a lot more
       | time with PHP and eventually ASP.NET, never touched ColdFusion
       | again.
       | 
       | Unrelated, but by far the worst part of the class was the
       | requirement to connect to MS Access databases, which were
       | notoriously tricky to avoid locking, after which point the whole
       | application would stop working until you figured out why. Many of
       | us would keep a "clean" snapshot of the database around with the
       | expectation we would somehow break/lock/corrupt the one the
       | website was using. A reboot would also fix it but took a lot
       | longer back then...
        
       | xrd wrote:
       | I never used ColdFusion but I had a negative association with it
       | because all the Latin American developers I knew while living in
       | Brazil derogatively referred to it as "confusion." It must have
       | been funnier in Spanish but I still got the joke.
        
         | loumaciel wrote:
         | Maybe they were expressing their confusion because you were
         | speaking Spanish to people in Brazil?
        
           | xrd wrote:
           | Funny!
           | 
           | It was ironic that I lived in Brazil but because the entire
           | office there spoke Portuguese they always sent me to the
           | Spanish speaking countries. At that point I liked to travel
           | and didn't mind staying in fancy hotels in Argentina and
           | Chile. So all those conversations were in Spanish.
           | 
           | It isn't as funny to refer to ColdFusion as confusao. I never
           | heard a Brazilian make that joke.
        
       | tcper wrote:
       | I was a Flash/AS3 developer before, saw ColdFusion every time in
       | Macromedia software serial, never used it.
       | 
       | All macromedia tech stack dead now, the feelings of ColdFusion
       | developers today, is the same like us legacy AS3 developer.
        
       | m8s wrote:
       | Hands up if you've still got ColdFusion powering critical apps in
       | production to this day
        
         | linsomniac wrote:
         | I was watching all these "I used to CF" replies and wondering
         | if anyone else was going to admit to having running
         | applications. :-)
        
         | stopnamingnuts wrote:
         | Yup. I support a largeish legacy application for a federal
         | government agency running on ColdFusion. The idea of rewriting
         | it in another language is a tough sell as long as it's still
         | supported by Adobe. I'm realistic about its past, present and
         | future but I also still love using it every day.
        
       | irrational wrote:
       | I used ColdFusion for many years. I think it was a great choice
       | back in the early 2000s. It is basically a JVM language where you
       | can write cf at a high level and use straight Java in the same
       | code base if you need to do anything more low level (like high
       | almost never happened, but was useful on the rare occasions it
       | arose).
       | 
       | But one of the main reasons it died off is license costs. The
       | last time I was involved in license negotiations with Adobe, they
       | wanted to charge us $100k per cpu core per server per year. These
       | were cloud servers with many cpu cores and there were dev, qa and
       | prod servers. The licensing cost for a single years was
       | astronomical.
       | 
       | There are free versions of ColdFusion (Lucee is the best), but
       | they are far too late for ColdFusion to make any sort of
       | comeback.
       | 
       | The main thing I miss from ColdFusion is cfquery and
       | cfquerypararms and query of queries. I've never seen any other
       | language that makes database interactions as easy as those do.
       | Every other language is such an enormous pain to do sql queries,
       | when compared to cfquery.
        
       | Mountain_Skies wrote:
       | ColdFusion was a great product for its time. My employer in the
       | early 2000s had it as our default preferred language though if a
       | client had a different language preference, we'd use that
       | instead. Today most of my exposure to CF is through finding
       | untouched old code still chugging along decades after it was
       | first written. Unfortunately, injection vulnerabilities were
       | pervasive in CF coding practices of the era and now it's very
       | common to find old CF programs with thousands of vulnerabilities
       | and no one to fix them. Any documentation on the business rules
       | in them have long been forgotten. We have web application
       | firewalls and other monitors in place to try to catch any
       | vulnerable code being exploited and hope someday that the
       | departments behind the programs decide they need a major overhaul
       | that necessitates a greenfield rewrite. I did push for us to hire
       | someone to either correct the vulnerable code or do a
       | transliteration conversion to a contemporary tech stack but no
       | one wants to allocate money for it, especially since the problem
       | is spread around many different departments.
       | 
       | That the ColdFusion programs have been silently doing their thing
       | for a long time without failing is a testament to the strength
       | and durability of the platform. It also says something about what
       | a sleepy, mundane employer I'm with now, but sometimes it's nice
       | to not have to deal with everything around you being a moving
       | part constantly changing its path.
        
       | oooyay wrote:
       | Heh, I was pretty young when I first managed to get my hands on a
       | CF license. Like others said, CFML was amazing. The other thing I
       | found that was amazing was their IDE. It was folded into
       | Dreamweaver and never really fully recovered down the line but it
       | really set the standard for features like symbol/syntax
       | completion.
       | 
       | The misgiving it had I think was in being expensive and totally
       | proprietary. I think it died sometime after the Adobe acquisition
       | and cost was all I heard about. Interesting that there's a FOSS
       | fork now though!
        
       | justinator wrote:
       | Metafilter still runs on ColdFusion
       | 
       | https://metafilter.com
        
       | foundart wrote:
       | We built one of the first digital photo sharing / printing
       | websites and its fulfillment system in ColdFusion in 1999.
       | 
       | The fulfillment system was a mess, but that was due to my lack of
       | experience and not due to any issue with ColdFusion.
       | 
       | I will definitely have a look at https://www.lucee.org/ the next
       | time I need to throw together a quick prototype.
        
       ___________________________________________________________________
       (page generated 2023-12-31 23:02 UTC)