Existential dilemma: Is it time to turn my back on ColdFusion?

Discussion in 'Programming' started by Lizard626, Mar 24, 2014.

?

With only enough free time to learn one language, what's the best path forward?

  1. Bring yourself up to speed on ColdFusion 10.

    40.0%
  2. Dump ColdFusion and learn PHP.

    40.0%
  3. Dump ColdFusion and learn Ruby.

    0 vote(s)
    0.0%
  4. Dump ColdFusion and learn Python.

    20.0%
  1. #1
    Hi everyone,

    Here’s the quick version of my question:
    Is it time to dump ColdFusion and start learning something else? If so, which language to study? PHP, Ruby, Python?

    Here’s the long version:

    So, I’m not a professional web developer. I built my first HTML page about 20 years ago, but I’m actually a network engineer and systems administrator. I’m functional at SQL, PowerShell, Bash, C, and a couple others but I’m no programmer.

    About 12 years ago I read the word “ColdFusion” somewhere, and honestly because I liked the name I started reading up on it. Because I had some free time (ahh, the good old days), I ended up reading Ben Forta’s ColdFusion MX book cover-to-cover. It taught me what a dynamic web page was, what SQL was, and how to program CFML and build SQL queries. In those early days a built a couple of pretty cool sites that no longer exist.

    Then about 8 years ago I built the first version of a web application for my volunteer fire department. Now days that site still exists as Version 2, but it’s ballooned into 25+ table MSSQL backend, with a couple dozen pages that pretty much runs the department: Timecards, scheduling, finance, equipment tracking, etc, etc. It’s a labor of love, hosted by a ColdFusion hosting provider on a ColdFusion 9 server.

    Every now and then when the site needs a new feature I go back to my poorly documented code, written to ColdFusion MX standards (no CFCs for example), break open the latest ColdFusion books or documentation and make my tweaks with outdated techniques.

    So a couple weeks ago, I decided to develop Version 3, based on the existing database. This time I went out and bought a nice admin template based on Bootstrap and JQuery. I figured this would be a good opportunity to get into JQuery, Ajax and Bootstrap. Since I already “know” ColdFusion, this should be only a small learning curve, right?

    Ok, three things happened that have me questioning my path forward.

    1. I started reading about ColdFusion 9 and 10’s newest features, CFML frameworks that now exist, best practices and CF9 and 10’s ORM implementation and how it really changes everything, IE: writing my huge SQL queries with joins, upon joins, upon joins. Just to get back up to speed on modern ColdFusion it looks like I have a lot of reading to do.

    2. I accidentally wiped out my last three weeks of work on Version 3 (file recovery is running as I type, but I’m not hopeful). Since I’m starting V3 from scratch again, if I’m going to switch to something else, now’s the time.

    3. I found some website that shows ColdFusion only has about a 1% share of the web development pie. Plus several other blogs, etc that says ColdFusion is dead. Plus a few more that angrily say it’s NOT dead.


    So, after all that, here’s my dilemma:

    Is it stupid to put any more energy getting up to speed on ColdFusion? Is it time to learn something else and build version 3 of my site in another language?

    I’m leaning towards PHP since it seems to be the most widely used. For example, every JQuery widget seems to come with a proof of concept demo written in PHP. But maybe Ruby is a better investment in my time. Or Python? Or maybe reports of ColdFusion’s death have been greatly exaggerated?

    In short, is it time to give up a language I first learned 12 years ago and still love programming in?

    Thanks for any advice and for letting me vent. :)

    -Ian
     
    Lizard626, Mar 24, 2014 IP
  2. deathshadow

    deathshadow Acclaimed Member

    Messages:
    9,732
    Likes Received:
    1,999
    Best Answers:
    253
    Trophy Points:
    515
    #2
    Christmas on a cracker, there are people still using ColdFusion?!? I never understood why anyone used it in the first place... apart from maintaining old crappy sites sleazed together with it, I can't see any practical point in moving forward with it at this point. It's one of the most needlessly pointlessly convoluted "languages" ever to come along, to the point it makes the XML "application" wankers look like they have a clue. After some three and a half decades of writing software, I know crap when I see it, and to be frank Coldfusion was a bad choice a decade and a half ago... Today? REALLY? Tag based markup should NOT be the basis of a programming language, that's as malfing stupid as the whole <?php ?> or <% %> more than once per file asshattery you see out of people who really have no sense writing ASP or PHP in the first place. (If I had my way, PHP "tags" would be removed from PHP entirely)

    PHP is probably your best bet. Python is a joke for making web apps (It's just the wrong tool for the job, it's like driving a screw with a hammer... you can do it...) -- and ruby is slow, needlessly pointlessly cryptic to the point I can't fathom how anyone writes anything useful with it.

    PHP is everywhere, you'll never find a host that doesn't or cannot provide it. It is ridiculously well documented to the point of making every other language right now look like the documentation was written by 100 rhesis monkeys on crack banging away on keyboards at random... and there are PLENTY of people out there willing to help you when you get stuck.
     
    deathshadow, Mar 24, 2014 IP
  3. Brad Wood

    Brad Wood Greenhorn

    Messages:
    4
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    11
    #3
    @deathshadow, you obviously know nothing recent about ColdFusion, so you really probably just shouldn't even comment on it. I have been developing in CF for about 15 years and still use it today to build new sites.

    Yes, CFML is still used. A lot. The fact that this knowledge has escaped a good many people is depressing honestly. Most every major corporate and government entity has CF somewhere in their stack. Heck, even Twitter uses it for their investor relations site. If you think CF is still only tags, you haven't looked at the language in many years. Today, CFML is a modern JVM web scripting language that supports writing as much (or as little ) as you wish in script. Of course, CF still has one of the best templating solutions in my opinion via tags and they very much still serve a purpose.

    Here's a look at a modern object oriented CFML MVC CMS. It's called ContentBox, and is built on top of CF's ORM and uses the ColdBox MVC Platform.

    Model: https://github.com/Ortus-Solutions/ContentBox/blob/master/modules/contentbox/model/security/Permission.cfc
    View: https://github.com/Ortus-Solutions/ContentBox/blob/master/modules/contentbox/layouts/default/views/entry.cfm
    Controller: https://github.com/Ortus-Solutions/ContentBox/blob/master/modules/contentbox-ui/handlers/blog.cfc

    CFML has also been open source for a decade now via Railo which has a great community almost complete feature parity and I'm also a contributor. There's no reason you can't have a full open source stack with CFML.

    It's true that most of the internet is developed in PHP but I don't think that makes it a good option. I've never liked PHP as a language, it's poorly thought out and a bit of a hack. IMO the only thing it has going for it is its popularity. If I was to learn a new language, it would probably be jRuby, Closure, or Scala... something JVM-based like CF. Twitter started on Ruby and switched to Java because they found out JVM-based languages scale better.

    That being said, there's no reason not to stick with CFML if it's what you know, but it sounds like you'd need to get up to date on how modern applications are built. For starters. familiarize yourself with CF Script and pick up a solid MVC stack like the ColdBox platform. It's a lot of Grails and has tons of stuff built in like caching, logging, REST, URL routing, dependency injection, unit testing and modularity. Second, get on a good mailing list (like the ColdBox Google group) where you can ask questions and learn. Thirdly USE SOURCE CONTROL! Github is free and pretty easy to pick up. If you had your code in a repo, you wouldn't have lost it :)

    Good luck and happy coding.
     
    Brad Wood, Mar 24, 2014 IP
  4. PoPSiCLe

    PoPSiCLe Illustrious Member

    Messages:
    4,623
    Likes Received:
    725
    Best Answers:
    152
    Trophy Points:
    470
    #4
    I must agree with @deathshadow on this one. PHP would be my choice for what you're trying to do, as well. It's made for your needs, and if you can get over the hurdle of learning new stuff, it might not be that difficult to transfer the current website to a new format, properly coded for a 2014 and forward approach. Just be advised that using mysql_ functions are NOT the way forward (you'll need to either learn mysqli_ or PDO to connect to the database).
     
    PoPSiCLe, Mar 24, 2014 IP
  5. PoPSiCLe

    PoPSiCLe Illustrious Member

    Messages:
    4,623
    Likes Received:
    725
    Best Answers:
    152
    Trophy Points:
    470
    #5
    Linking to a repo where the readme.md starts and ends with bible scripture... color me sceptical from the get-go.
     
    PoPSiCLe, Mar 24, 2014 IP
  6. Brad Wood

    Brad Wood Greenhorn

    Messages:
    4
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    11
    #6
    The owner of that project is a Christian and I respect that. If you choose your projects based on the religious inclination of of the author, I truly pity you.
     
    Brad Wood, Mar 24, 2014 IP
  7. PoPSiCLe

    PoPSiCLe Illustrious Member

    Messages:
    4,623
    Likes Received:
    725
    Best Answers:
    152
    Trophy Points:
    470
    #7
    Nope, I choose my projects, and my tools, based on the professionalism on the people involved - and throwing bible scripture in a readme is NOT professional - at all.
    I've personally never understood ColdFusion - it's a malarky of mash-ups (or at least it felt like it when I tried it years ago), and I doubt that underlying coding practices have changed.
     
    PoPSiCLe, Mar 24, 2014 IP
    ryan_uk and sarahk like this.
  8. Brad Wood

    Brad Wood Greenhorn

    Messages:
    4
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    11
    #8
    There's absolutely nothing unprofessional about that. It's his readme and if he wants to give a shout out to God, it's really pretty juvenile of you to complain about it. ContentBox is a respected, active, open source, and professionally supported project. The *Box libraries that its written on are the most active, full featured, and documented in the entire CFML space.

    If we're going to leverage criticism at CF based on how people used to develop with it in the year 2000 then there's not much point in even having this conversation. Coding practices are whatever you make them and and there's nothing making you write good or bad code in any language out there. I'm sure you probably have seen some _apps_ that were "a malarky of mash-ups", but if you want to go there-- let's talk about all the PHP spaghetti code out there. Point is, CFML is a productive, modern scripting language that allows people to write applications that are as organized and smart as the developer doing the work.
     
    Brad Wood, Mar 24, 2014 IP
  9. deathshadow

    deathshadow Acclaimed Member

    Messages:
    9,732
    Likes Received:
    1,999
    Best Answers:
    253
    Trophy Points:
    515
    #9
    I suspect his reaction to that is a bit akin to mine in that the moment you have some nitwit admitting to even having faith, you assume them to be a drooling re-re who lacks enough brain cells to offer a valid opinion on any subject... no? Just me on that?

    I have to say, those two CFC files you linked to look nothing like any CFC I've ever seen... since when has coldfusion had classes and functions? I'm more used to every file being filled with those stupid malfing asshat tags for everything including logic flow... you know, something like:

    <cfcomponent><cfset somedamnedthing=1><cfif somedamnedthing equ 1>Do Something</cfif></cfcomponent>

    It's what made most everyone I ever knew turn their nose up at it. When did they up and decide to turn it into a real language? Sometime after CF8 I figure (that's the last time I even had to deal with it). Hm... CFScript? Yeah, that's new (to me)... 2007, too little too late at that point. The only people who would have cared by then would be anyone already using it.

    Still, given that most hosts won't provide it, most hosts will look at you like you have eight heads if you request it... I still don't see how it's got a viable future apart from the handful of people who have always used it; in that way it's like the various accountants I still support who use an accounting package I wrote twenty years ago in Paradox for DOS, just because nothing newer has the options they need.... or all the places STILL running ASA-400 based stuff. It might have advantages in a few narrow spots, but those are probably outweighed in general practice.

    ... and of course code like that entry.cfm is exactly the type of "escaping it on every line" crap that bugs the hell out of me, violates one of the basic rules of scripted languages; no file should ever output anything directly when called. Admittedly, PHP developers pull that same asshat stunt all the time using <?php ?> or <?= ?> or even dumber crap like 'heredoc' and 'nowdoc' -- but that's why I avoid using them and wish they'd make them go away for PHP 6. (along with adding an include method that breaks scope for library includes instead of blind includes).

    Of course, I also have a total distrust of anything that's Adobe + internet; taking web development advice from Adobe is like taking marital advice from OJ Simpson or Lorena Bobbitt.

    See the idiotic halfwit bloated overpriced bullshit known as Dreamweaver, or worse all the nimrods sleazing you goofy pictures in Photoshop then having the giant brass monkey balls to call themselves "designers" when they don't know enough about HTML or CSS to be designing but two things...

    The same way Church of Stallman freetards rail against anything Microsoft, I rail against anything Adobe. Far, FAR more insidious.

    NOT that I'm one to talk on preferring obscure languages, since I'm one of those Wirth type nutters. Been playing with making a preprocessor for FPC to add whitespace preserving strings and fastCGI access...
     
    Last edited: Mar 24, 2014
    deathshadow, Mar 24, 2014 IP
    ryan_uk likes this.
  10. Brad Wood

    Brad Wood Greenhorn

    Messages:
    4
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    11
    #10
    Wow, that's quite a mental picture there, not to mention a thoughtful and balanced point of view. As much as I'd love to have the "faith" debate here, this really isn't my thread :)

    Since version 6 which came out in 2002. In fact, I think CF allowed for OO code before PHP even did.

    Well, it's been turing complete since it came out in 1995. If you're referring to the resemblance to ECMA script, CF has increasingly supported script since it was introduced in version 4 (1998). CF8 (2007) was the first vesrion to see really good script support, and CF9 (2009) saw "full" script support. (The current version of CF is 10 with 11 in public beta.)

    I wouldn't want to use shared hosting for a number of reasons. I prefer to get a VPS, deploy an open source engine atop Tomcat behind Apache or NginX and roll with that. Better to be in charge of your own patching, etc.

    entry.cfm isn't a class nor business logic; it's a view. That's what templating does-- it mixes output with markup. 1000 times better that ugly string concatenation and using print() or echo() functions to puke content into an output buffer. You'll also notice that entry.cfm has no queries, no business logic, little control flow at all- it's just concerned with markup and everything else is delegated. That's how MVC works.

    Well, you wouldn't be the first. Again, I don't use Adobe ColdFusion for my personal sites. I use a free open source community engine called Railo.

    LOL, that's funny. I don't take any web development advice from Adobe. I get my programming advice from the same places most people do: Gang of four, Clean Code, Fowler, Uncle Bob, etc. Design patterns are transferrable.

    You're hardcore, man. And sick. A sick, hardcore dude. :)
     
    Brad Wood, Mar 24, 2014 IP
  11. deathshadow

    deathshadow Acclaimed Member

    Messages:
    9,732
    Likes Received:
    1,999
    Best Answers:
    253
    Trophy Points:
    515
    #11
    Shame I never saw any books or tutorials or code from people using CF using it... I'd have taken it FAR more seriously if I had. Is there a reason even Adobe's instructions/tutorials for using it don't even seem to want to touch using it that way? (I did a quick google check to that end, came up empty?)

    I prefer dedicated hosting myself, but really that raises a better question -- are you writing something for in-house use, or something that will see wide deployment by other people?

    What I mean is that if you're writing a proprietary in-house only use program, you can go ahead and use any goofy language since you have full control over how/where it's being deployed. Want to use Eiffel? Clipper? Prolog? Doesn't really matter.

    BUT, if you were writing something like say... a generic forums software or blogging system, it's not going to catch on, be popular or even real world deployable for most users if you use something too far outside the mainstream.

    Which is quite often WAY too limiting in what you can do, and in my experience harder to deal with. Usually explains why the markup vomited up by such systems is usually a bloated non-semantic train wreck. (well, alongside most back-end coders not knowing enough HMTL/CSS to have any business writing a back end, or even turning someone else's front end code into something to be output). There's a reason I absolutely DESPISE 'templating' systems like 'smarty'.

    I really LIKE echo -- maybe it's my ASM/Pascal/C background, but it just works how I expect a programming language to work. You're right though about blind string addition -- 99% of the time people do that regardless of the programming language in use it's just ineptitude or ignorance in action.

    I want to like the idea of MVC, I really do... and I do in ACTUAL EVENT DRIVEN programming... unfortunately a website is NOT properly event driven, so the entire notion of MVC seems to be more about making site building bloated, slow and needlessly convoluted. I do like the idea of separating database access code from output code, but trying to implement 'true' MVC in a web language to me always feels like trying to shove a fat woman's size 16 hoof into a size 6 shoe Al Bundy style. It's a programming paradigm meant for proper event driven environments (winApi, cocoa, gtk, swing...), and people are WAY too proactive about shoving it into what for all intents and purposes is a top-down execution model environment.

    Excuse me, but "proactive" and "paradigm"? Aren't these just buzzwords that dumb people use to sound important? Not that I'm accusing you of anything like that... I'm fired, aren't I?

    Should I be worried that after 37 years of programming, a third that doing websites I don't recognize any of those other than Marty Fowler? Admittedly, 90% of what's on shelves and out there for sites these days I glaze over and go "user crap", or disagree with completely as it contradicts every bit of common sense I learned about programming prior to 1990? Hell, I'm so old school I still refer to K&R as 'new kid BS'.

    I'm also so old-school that most of what todays (aka anyone who started after 1995) programmers call 'clean code' I call bloated halfwit bull... Admittedly when you started out hand assembling your own RCA 1802 machine language trying to fit an entire program into 149 bytes of available RAM (with the other handful of bytes sucked down my memory based registers and the stack), then entering it on toggle switches one bit at a time, you end up with a bit different an idea of what compact efficient code means.

    Thank you. I do take that as a compliment. :D
     
    Last edited: Mar 24, 2014
    deathshadow, Mar 24, 2014 IP
  12. ThePHPMaster

    ThePHPMaster Well-Known Member

    Messages:
    737
    Likes Received:
    52
    Best Answers:
    33
    Trophy Points:
    150
    #12
    ColdFusion is still being used and is definitely worth learning (to me it seems like a pretty cool language). Personally I don't know much about it, but I did have some colleagues at one point, who were making more than me for that exact reason. There are positives and negatives on using a language that is famous like PHP or a language that isn't as ColdFusion. If you are looking to code for yourself and you have no intention of working with a company, PHP is the way to go. Now if you are thinking about joining the workforce any time soon, PHP has too much competition, unless you come with proven work that is used in the public domain.

    No matter what languages you would've posted instead of ColdFusion or PHP in your post, you will always get people defending each side. I say go with what your gut tells you to. Weigh your options and see what will be the best for you in the long run. Account for learning curves, local employment opportunities, your existing business connections and where they can lead you to. There are way to many personal factors for anyone to tell you what you should be doing.

    No personally, for web development, I wouldn't recommend PHP nor ColdFusion. Go with something like ROR or Python, this is what I see most of the new start ups in Silicon Valley are requesting.
     
    ThePHPMaster, Mar 25, 2014 IP