Download the full episode and listen to the podcast here
Michaela Light 0:02
Welcome back to the show. I'm here with Charlie Arehart, Ben Nadal, Gert Franz, and Mark Drew will be joining us. In about 30 minutes, he had an unavoidable appointment. It's probably having a root canal at his dentist.
But we're gonna be talking about Adobe ColdFusion and Lucee and how they compare and contrast and all cool new features coming in the next five years that we prognosticate future performance. Improvements might be coming CFML engine updates and how you can best approach those confusion security. And we'll wrap up with some other questions about being a good CFML developer and conferences this year. Welcome, guys. Thank you for having us back. And we're gonna kick off with Ben because he was very quiet last time. I'll put in the show notes. The other two panels. This is a third panel we have, there's so much to talk about in about Adobe ColdFusion. Lucee, we couldn't fit it all into one episode. So
what do you think Ben's happening in the next five years? That takes us through 2027?
And it's a it's a really interesting question. As someone who's strictly a developer, as opposed to Gert, who is more in the building of platforms, I tend to focus a lot on how do I best use the tools that have been provided to me? And how do I get my work done with those tools, and I and I tend to focus less on what I don't have and what the future could be like. So this is always a bit of a harder question. For me, I think a lot of what happens in the future is going to be shaped by the changing technology and platform landscape. Obviously, we're what's happening there, do you know what just you know that we're we're we're heavily swinging into a platform as a service infrastructure as a service era with things like Amazon and, and lambda functions and a bunch of you know, there's a bunch of other platforms that now have Functions as a Service. And where does ColdFusion fit into that? And where are the limitations with things like licensing? I mean, obviously, wouldn't want to get into licensing probably, but but not a problem for me,
thoroughly discussed very vigorously licensing in the first panel roundtable. So you, I'll refer people to that. I'm just gonna, you know, suggest we don't, unless there's anything that's coming in the future.
So I guess I'll say that where the where I'd like to see the language go in a very abstract sense, because I don't really have specific things is, is how do I take applications that are historically built on a single server and running on a single database, and, and evolve those to be more of a distributed friendly background process, kind of a workflow. And, again, like, I don't have a lot of hands on experience with that kind of stuff. But I think seeing the language go in that direction will be very interesting to see what the the people who are smarter than me think, works well, in that respect.
Gert Franz 3:15
You know, saying the word people that are smarter than me implies that the other ones are smarter, so we have to live up to that. So thank you for the pressure. And no worries been the thing what what you will want in the future is what we will build for you. So we'll make it in that way that you definitely want to do that. Right. So that you won't need those features. I mean, that is something that I liked so much being in the producing, and the food chain here. So the thing, the thing that every one of us I eat my own dog food every day. So we're using Lucy the latest build up Lucy and we're soon gonna use Lucy six, which is hopefully coming out next week, somewhere Monday, Tuesday, or sometimes next week. So the first beta there, and I
Michaela Light 4:04
just interviewed Zach on that who's on your T.
Charlie Arehart 4:09
Manager and production for people to understand
Michaela Light 4:12
Yeah, we went through all the future features and all kinds of other discussions about release cycles and pull that out. So it was really good detail on Lucy. I'm very excited about Lucy six.
Gert Franz 4:24
Yeah, one thing that I'm really excited about Lucy six is that we're moving our configuration from from XML to full JSON and to full CF conflict support. So CF config was kind of spearing spearheading that, that evolution towards that makes it a lot easier for us to interact with it as well. And makes us I have to say also little independent of CF conflict. So supports the full CF config interface. And the thing is, yes, I know, command box and CF config and all that Those things are great, fantastic additions to Lucy, but very often were asked about barebone Lucy as well, without any underlying Well, command box or whatever. So making it easier for folks to inter interface with, to interfere with with Lucy was a big goal. And then lucid six, as far as I know will is going to be a lot smaller because we're not defaulting all the packages anymore, we're going to reduce the number of packages that you need to run Lucy barebone as well. And so just one highlight that I like a lot is that we're now finally allowing thread debugging. So if you do something like a see a thread, and you have debugging turned on, you finally will be able what that threads debugged in the background, right? Usually, when you see the debugging output, you only see the debugging output of the current page. But the debugging output of threaded pages is not visible. But in the admin, we have a template that allows you to see those, those frame those threaded, debug outputs as well. That is one of my favorite features. And then stuff like CF HTTP being 30% faster now because we're doing connection. Until now we always do a new connection to see if HTTP oversea of HTTP, for example, for distributed we're using a lot of Spotify updates, figuring out is this song live on Spotify. So we do millions of connections to Spotify, and that's where that came from. And we now do connection pooling. And that brought that brought down our, our execution time by orders of magnitude I would even say, right? I mean, of course
Michaela Light 6:48
distro kid, for those who don't know, is a music musician, site, and, you know, band site, and it's totally written in Lucy. So probably the biggest confusion site out there, you have a cluster, I assume
Gert Franz 7:02
we have a huge cluster, we do blue, how
Michaela Light 7:05
big is your cluster, if you don't mind sharing?
Gert Franz 7:11
About 20 instances, I would say. But we are doing completely automated deployment there. So everything is scripted, you can't handle that anymore manually. So you have to do pipelines, and you have to do deployment pipelines and everything. And monitoring, like crazy, the dev team is about 45 people big, you know, not only the developers, but all the SIS admins database and everything. So developers about 20, I would say, and so it is really a very huge site. And it's a great, it's a great performance site. And that's something that I like a lot and, and you know, we're we're using the tool that we build every day. And that also be get some new ideas for future features of loosing, right.
Michaela Light 8:04
One thing that I've always sort of, I've never been able to okay, sorry, let me back up there a second 99% of what I do is a request response lifecycle, meaning a user makes a request to the application. And then ColdFusion responds to it in time, you know, obviously, hitting the database, doing some file IO, pushing stuff, pulling stuff from s3, that kind of stuff. But it's all very much a on demand kind of a thing. And you mentioned the CF thread and being able to debug CF thread. I love threading. Typically, I do that as a sort of a spin off as part of the request response lifecycle, a user does something. And then I want to do some stuff asynchronously, but it's still kind of that on demand model. And then we have our scheduled tasks, which are basically an on demand request response lifecycle, but being driven by by a sort of a cron job. And the thing that I really have yet to dip my foot into and wrap my head around, is having persistent background threads. So for example, something that sits there and listens for message queues on SQS, or something that sits and listens for Pub Sub events off of Redis. And, you know, right now, I think I sort of lean on the idea that ColdFusion is built on top of Java, and there's probably a Java client that does that persistence stuff for me, but I still don't have a good sense of how that interacts with the ColdFusion application. And like, what if the thread that's running that thing dies, like does ColdFusion have a way to really pick that up and run it again, and I guess I'll stop and just say that one thing that I love is a more comprehensive and maybe it's just a documentation issue, but a more comprehensive, you need to do something forever in the background, and here's how you should do Do it in cold fusion. And hopefully it doesn't involve event gateways.
Gert Franz 10:04
And I'm sorry, I'm sorry that I'm picking and taking this on, Charlie, I didn't want to steal time with you. But you know, just like a miracle. We just had somebody turn up right now, who actually is the master on exactly what you're asking. And we have introduced something like that, literally, about half a year ago. For district kid, and it's making its way into Lucy now. And so anyway, Michaela, maybe you just want to take over for a second.
Michaela Light 10:38
So who is this intruder? Mr. Drew?
Mark Drew 10:42
Sorry, I wasn't my usual evil minds. Taking over the world.
Michaela Light 10:48
We do look slightly dark. Dr. Evil, could you do that little finger thing? I just need you to have a nude cat in your lap or something?
Mark Drew 10:59
Yeah, it's just slightly out of frame. Mr. Bigglesworth. It's just slight missing. There's just slightly out of gray. But going back to the topic, things that happen in the background. So yeah, so this is the most exciting thing I think that Lucy has introduced. And we're battle testing it at the moment on a few projects, before we unleash it to the world. And watch the little minds blow, you know. It's essentially a main gateway. Sorry,
Gert Franz 11:36
sorry. But you don't have to write anything. You don't
Mark Drew 11:40
have to do anything. You don't have to do anything. So basically, it's a CFC that has two functions one in it, when it starts up. And when he starts up, you could do something, probably print out going, I've started up. And the other one is, it does something every x seconds by a property. Right? So you have certain properties of saying like how, how often to do something and is mainly how often to wait between times of doing something rather than like a cron job that will do do this every 10 seconds is more like, once you've done something, how long do you wait to do that again. And it just calls a function run, I can't remember if the function is run or invoke. I can't, I can't remember the name of it. But it just got closer. And then you put your code in there, which in our case, it just calls create a component and then all the logic is inside that component. The logic is not inside the the task runner right. Now, the nice thing about the task runners is that when it logs to the sheduled log, because that's where you want stuff that's running on a schedule to log by default. So you're seeing like, oh, this starts when it started. The other one other properties, you could say how many of them you want running at the same time. So for example, you can have one 510, however many of them are running. And we use them in conjunction with stuff like Redis queues. So then we don't have to lock stuff, but you don't have to do just, you know, some kind of database lock, because you can say, here's all my jobs, go and pick one. And you know that, that in Redis, you can only there's only one person that can pick like that last last one, right? Is atomic transactions. And then you also have kind of cooling off periods. Like if there's an error, you don't want that error always happening, right? You don't want it to do that. So you can say, if an error happens, if you've thrown an error within, within the task runner, let it wait for a while. Now we've got this separation of two of them, we've got the runner and the listener, because the listener is basically like your management. So you can then do whatever code management you want to do there. And the information and gives us like how many task runners are running, you know, when they started, you know, all that kind of metrics that you can then log to whatever be it you know, for crappy or bit century or being whatever you want to, to log this data dog or wherever you're going to do your, your telemetry and login. So it's a really exciting project, we've been working pretty well for us. We've done a few projects in it to really like shake out the cobwebs. And the downsides, I guess is that you have to now look more, you have to like log stuff to file or you have to log stuff to to the system out. Because it's something that as you were saying is, is something more a catalog.
Michaela Light 14:36
Yeah, there you go. Now let's just show those 10 lines of code you have their gut and put it for those. Of course we're gonna have to, can you make your font like 20 times bigger?
Gert Franz 14:48
Okay, like like like this? Yeah, that's much
Michaela Light 14:51
better. So for the folks on video, he's got a component here with a task and will you talk us through it? Uh, you mark, you can
Mark Drew 15:01
talk through it, you know, I'll mark is, it's my fault that all of this exists. Because I keep commission, there's a table long enough, I said, Fine, I'll make it. So is it the component extends the the task, the org dot lucee dot CFML. So that's all it does, you now get six different properties like concurrent thread count, you can see is three. So there's three of these running. So if you were printing out the task runner on line 12, you say print it out, when when your server starts up, you'll see three of these. Right? And they'll have their own ID, right? So you know which ones running the each individual has one. So how long to sleep before the call. So it's like, this is how long to wait before the next call, and how long to wait after the call. Right? So you can say before the call, I'm going to wait 400 seconds 4,002nd? And then seconds, or milliseconds? Well, four seconds. And then once I've done something, I'm going to wait a second, right? And then I'll wait four seconds. So there's basically this runs every five seconds. And here you say how long do you sleep when you have an error? Go up a little bit, please?
Gert Franz 16:16
Yeah, this one. Yeah.
Mark Drew 16:19
And if you turn off your, your, your, your server, basically say how long wait to wait for the task to stop. So basically, Lucy won't shut down cleanly, you know, you can be there like ending the thread and stuff like that, which, which is not a polite way of stopping anything. And it will wait 10 seconds for in this case for your function to to stop. And then then no more will run because I said, I know that the server is shutting down. And then you see that
Gert Franz 16:54
when we when we doubt when we shut down the Docker components at the Docker images, then we see that it takes 10 seconds for them to down to stop because this number here says 10 seconds. And that's why we have to wait for 10 seconds, it's a graceful stop. And the magic happens actually air
Mark Drew 17:14
invoke if you go up a little bit got to show the function is invocation. Once you've got one that ID, which is your ID, right? The idea of the thing, how many iterations has gone through how many times it's run, if a number of errors have happened before, last time we executed last time I lost eight, and it will give you the last error. So you can sort of say like, oh, well, I've been arrowing all the time, maybe I'll just shut down or maybe I'll do something,
Gert Franz 17:49
maybe we'll cut it a little short. Just what we do here is we unprocessed our last job, then we process the next job. And then we're done. And this is called this is executed. And once it's executed weights for four seconds weights and at the second unstart. And then the next time it comes here. So this is a this is a task that runs all the time and works on your jobs. And this is the way how we can react on incoming calls. And on callbacks, or where you ratchet reacting on messages and stuff like that. It's not an event based system. It's kind of a long polling system. But it works like a charm.
Michaela Light 18:26
I saw this very cool. Sorry, Ben, go ahead.
I saw in the code there that you were referring to the application scope. And that's very exciting because I know Lucy introduced the idea of task threads. And when Gert told me about task threads, I thought, Oh, this is going to be exactly what I'm looking for. I'll spin up a task thread, I'll set it to run, you know, a bajillion times, and that'll become my background thread. But then it turns out that that gets persisted to disk. And then when it gets rehydrated it no longer connected to the application. And then I had to do a bunch of dancing about like storing an application context and the server scope, and then the thread would try to reconnect that. So seeing that you have a background process that is managed in a persistent way by the platform is what it sounds like, and is still connected to the applications. That's very exciting
Mark Drew 19:17
with that, okay, cover with Application Scope, because the task runner could start before your application scope has started.
Gert Franz 19:24
You need to make sure that it's there and and the thread time task is great if you have an independent task if you need to make sure it runs. I'm sorry, but I would like to give Charlie the time to talk because he was quiet about for half an hour.
Charlie Arehart 19:44
How about that?
Mark Drew 19:48
Who is this imposter?
Charlie Arehart 19:50
Well, actually what if you if you want to go and do that then when we started it was interesting that Ben first talked about his being you know, primarily a developer and Gert being, you know, someone involved in the development and, you know, production, I think he's producer of Lucy, and Mark, you had not joined yet, but I was just going to quip about how, and then I'm like this other representative of the community, in that I don't really do development, I really help people administer and troubleshoot and tune, you know, their applications and servers, and primarily on ColdFusion, just because that's where I get most of my clients, and, and also on Lucy, and I just thought that was interesting, because that's a different, you know, part of our audience is also people like that. And the comment was really in the context of as we contemplate what's intended in the future, and also recently added things. You know, what would excite people? And it's just interesting, because those three audiences, you know, well, well, the developers, of course, have have different interests. Like they're, they may be thrilled that CFML has fat arrows and functional programming, and both Lucien CF have those. But you know, Administrator types, it'd be like, What are you talking about, and then the administrator types would be excited that, you know, either of the engines is either, much, much smaller. And by the way, I know Lucy six is going to be much, much smaller, but cf 2021 did that already. It's only like 140 Meg, and you can add packages to it. And this is what also struck me as listening to all that conversation, there isn't much of it was about Lucy and part of our audiences, Lucy only, and they really only want to hear about what's coming in new and Lucy, and part of audiences CFO only. And they would be like, well, that all sounded cool. But I'm not gonna be able to do that until Adobe chooses to put it in there. And so I'm often in this side of pointing out what CF has added, because Lucy folks might typically not care. And now Gert might care because he's trying to decide what should we add, and what should we not bother to add. And then the community of people are in there in the, you know, in the various communities, whether the slack or the dev.luci.org, and they may be pushing for something that they liked, or they'll argue against something they don't like. And this is just fascinating thing to sit here in this community, and watch these various perspectives being represented. And there's been some interesting recent blow ups in both communities. Because different perspectives have very different perceptions of things and talked about wrangling cats. There's a lot of that in this community. And it's a challenge with a with a just a meeting like this, you know, because the folks who might not be interested in topic just have to be patient and let the other discussion happen. Because even though it may not float their boat, it floats the boat of the people that are discussing it. And that's it's I would just think that's, I think,
Michaela Light 22:47
to be fair, there's a lot a lot of cross fertilize, a confusion and Lucy, you know, Lucy comes out with new features, if they're seen as really cool and work well. I've seen Adobe copy features Lucy put out and vice versa. Actually, vice versa. You know, it's good to have friendly competition. I think we used to be like a CFML language committee, stairs committee, but I think that
Unknown Speaker 23:13
after about wrangling cats,
Michaela Light 23:16
yeah, that was a lot of cat wrangling there. Yeah. Informally, I think that happens. Sorry. Sorry, Mark. Go ahead.
Mark Drew 23:24
Sorry, I think one of the things that just going back to the periphery, but that that we learned from that was putting features for different target audiences, like one but one target audience was kind of my DevOps is sis ops, kind of which I don't have here that I'm wearing, which was a well, this has to actually report where does this log to? And how do we log this in any Docker because it's this in a lot of stuff in Docker is very much silent somewhere out there in the forest. And you're not going to go to a specific docker instance, you literally don't care. But you do, you know, do care that that that tree has fallen down in the woods somewhere because he needs to log it, right. So that's one hat. But the other hat is that kind of go outside, I guess at the time when he was working on the other developers like I need to have access to the shared resource to shared resources, data sources on a basic level and, and whatever as a service layer is, that's a developer kind of hat. And then you've got other people that that can learn from all of the say, Okay, well, I've got to your point about Docker image sizes, I was just in a meeting. And we've got a very superlight version of Lucy to do a micro service essentially, a, the minimum amount of code you can do to run an executable, but as a web service, right as a web service, and that's like a 200 meg file. Now we have like a tournament Docker image that is our, you know, Dockerfile. So and that's kind of like such different audiences. And I love having been in this business and as most of the people around this table virtual table that you've put really had to wear that hat at some point. So you might want to add
Michaela Light 25:03
one, I'm gonna throw one other hat for your audience is, which is missing and is often forgotten, which is the CIO level. They're not coding in ColdFusion, necessarily, though some of them I've talked to do, but they do make decisions about what technology the company is going to use. And I think sometimes they get forgotten by Adobe and Lucy in our, you know, when we talk about stuff, what's important to them. And, you know, I'll throw out some things that I've heard, it's important to them reliability of the the engine and the apps, easy to scale secure. And feeling that the thing is modern, which I believe are called Adobe ColdFusion. Lucy, both are modern languages, despite the 25 years old, they've been going through many updates. I can't count the number of releases that Lucy has had, because you don't least micro point update thingies. But you know, the most. I can't let what? Maybe Charlie knows what version we're actually on. I got confused when they switch from version numbers to years later version 18 or something only 21 on the latest. So if you counted were last numbered version of Adobe ColdFusion was 11. Right? So now we've had three since then. So now we're on 1414. And Lucy went through some Railo versions, and then it is your versioning numbering is a bit weird, because you don't like you add lots of new features. If you don't bump up the version number.
Gert Franz 26:30
Well, we go from 34545354. And then six is where we change the interface. You know, the interface the under and we change, for example, basic configuration. So one thing that we might change for Lucy six is that apps token by default is off, right? With CF location. Right, right. And many, many things, we only change those things in major version changes. And we now just have a few things to decide for where we where we decide how we're going to change different behaviors, because some behaviors are getting out of date, right? Like, for example, using application CFM is not the default anymore, right. And even if you're having application CFM NCFC. Search for when you're going up the chain from a deep directory, looking for these, you always have at least to file request application, CFC or CFM, CFC or CFM until you're up to basic root. And we might change that. And of course, have a compatibility switch, which says put it to how it was before. And if you want to speed it up, just uncheck those boxes. And so those things change only in major versions. And actually Lucy with its older, older companion Rylo turns 20 next year.
Michaela Light 28:02
Wow. Happy birthday.
Gert Franz 28:04
How next year?
Mark Drew 28:06
Yeah, one of the things that didn't occur at this point of point was about CIOs as well as like, whether it's modern, whether it's secure, which are kind of standard stuff, whether it's fast and fast is like relative relative. So by the way, like couple of points, one, we were second fastest language in
Gert Franz 28:25
Whoo. Right. That was Brad woods, Greg woods.
Mark Drew 28:32
And it wasn't hit him during the test. This is an external test, which I'm trying to look up, but I'm sure we can put it in the show notes down below. But the other thing is, and this is from our experience is getting new developers like fresh, fresh, I say fresh developers like unpacked out of university in cellophane, still covering them, but like new developers that come from other languages are able to do and be productive in less than a week. And we've seen this like and it's not like we did some intensive, like boot camp or district kid. We're a remote company, we, you know, we welcome new people on board and they've been productive. And the range of the people that we've had have been the university students all the way to recent graduates all the way to, to experience you know, experienced developers and I don't know what else I've come in, like DevOps engineers are already writing Lucy at distrokid because it makes sense is a program programming that makes sense, in comparison to I'm gonna say JavaScript, and people are going to come and burn me from outside in comparison to stuff like the promise based approach of, of JavaScript, which is very powerful. I completely understand how it works, but it's kind of a paradigm shift. CFML isn't that much of a paradigm shift? Right. You have lovely, tags based language for your views. You have to integrate into HTML. And you got a lovely, functional based language, the syntax or not language syntax that you can use for your business logic and database logic. And we can have arguments about where all of that goes on what your favorite one is. But when you're teaching new people as a CIO saying, I need to ramp up and stuff, I need to increase the amount of people that are running this apart from anything they need to understand our business logic. Then you spend more time teaching them business logic than you do the syntax,
Michaela Light 30:31
you waving to say you want to contribute, Charlie?
Charlie Arehart 30:33
Yeah, just one assumes there was a good break there. I just wanted to point out in case folks didn't see it or hear about it that on the first session of the Deaf week, this week, my talk was cold fusion more modern than most realize. And while obviously being at the govision Dev week, it focused on Adobe ColdFusion. Primarily, much of what I talked about applies also to Lucy. And it was that point very, very point of C, F, and CFML. Both the language and the features have evolved. And I covered both of those in quite a bit of depth. And that was my point was that people who are coming from other languages could find that either they could write things that they're more comfortable with, or they might even find that other CF developers already writing code that they could be more developed comfortable with. But we do have to admit that a lot of times if a developer from another language comes in and, and the app is all written in tags, and doesn't take advantage of anything new and modern, they're gonna find it pretty annoying. But the good news is that if people want to develop in more modern ways, or deploy in more modern ways, they absolutely can. And that's great to see
Michaela Light 31:39
that I'll mention that in the last panel we did, and I'll put the link in the show notes, we had an extensive discussion about resources for learning ColdFusion, you know, among books, and online resources are free. So conferences and training, so check that out. I do want to say, from people I speak to, you know, CIOs and CTOs. They often get frustrated trying to hire ColdFusion developers, and they don't really take on what you're saying, Mark is the truth. And it's not just distro kid that does this autists does this, Tara tech does this, you know, plenty of modern ColdFusion. You shouldn't companies will hire people and then cross train them. They're a great developer in other languages, they do modern programming techniques that use modern tools, and ecosystem. And it's really easy to pick up cold fusion. So I almost think there's a gap that maybe can be filled in the future, you know, maybe a hackathon or a bootcamp or one of those things, language boot camps, where people get intensive training of JavaScript for like, yeah, they like but with JavaScript, it takes months, right that those boot camps last weeks and weeks, I think,
Mark Drew 32:54
but you've seen this, like over a period of time, I remember working in Soho, part of London, and then the web development craze, you know, there's never going to take off, press me, but then buy bitcoin from me in 2003. That's what I'm saying. But the whole point was that CIOs, I'm talking specifically to what you're talking about. Mikayla, we're very much with whatever trend was in whatever computer weekly was happening at the time. And, and this is why companies like Microsoft, I'm gonna get my tinfoil hat out in a minute. We're spending a lot of money in getting into publications, like Microsoft. So people went, oh, we need ASP dotnet developers, and I know a lot, a lot of contractors who are polyglots, because they knew this was a trend. So you can do your ASP, you can do your dotnet. You can do your PHP, I know some of them, right and one of them. And there's nothing here's a smile. It was just like, well, I'll take whatever contracts going. And you could see whatever the the seasonality of it. Now, without getting my there are too many variables and CIOs that I've met. That depends what the fashionable thing is, at the moment. Cloud First being like, fairly popular right now a few years back was micro services was alright. And now going back to mono repos, because heralding all of these micro services, when we broke everything down into tiny bit, could get a little bit. I mean, and the truth is, we all know that like, different applications are different beasts and some some The truth is sometimes somewhere in the middle, but by CEOs what I find them very scatty in the sense of their decisions over a long period of time is based on what is it which conferences being sponsored by which, you know, a software
Michaela Light 34:58
may be less formal Hold on that mark. I mean, I won't mention the names here. But sometimes the CEOs wife or husband reads the newspaper and it says Java is the hot thing. Right? And that, like everything has to be dropped, get rid of ColdFusion everything, switch to Java, because that's what needs to be done. And that's seriously how technical decisions sometimes happen in organizations. It's not, there isn't like a serious consideration of what would be best for the organization.
Gert Franz 35:28
Yeah, no, I have to say that oh, one of the sad. I'm sorry. And I think that it was what also one of the reasons why it took a long time for Rylo to be accepted. Because we took the other approach. We went to the developers first and try to convince all the developers at conferences, and you know, who trusts a small company from Switzerland with five, six developers? And they
Mark Drew 35:57
go and rob no marketing budget, right? No marketing budget? Is 2008. How does Rylo at the time, a tiny company from Switzerland and I know systems a rich country, but how does it compete with Macromedia slash Adobe at the time, right? Just an advertising budget, right?
Michaela Light 36:17
They'd like to compare it to Microsoft or Oracle, because they really do a lot of push for their language. Yes, Java and dotnet.
Gert Franz 36:26
Exactly. Yeah. And that's exactly it. We tried to, of course, reason with all the CEOs, CIOs, CTOs, and tell them, hey, listen, we're not going to go away. This is our sole project. So we're putting all of our resources into it. And we survived. And we put we have proven that. And it got easier, let's say for the last five, six years, because I know we only have
Michaela Light 36:52
I know we only have 12 minutes left of Ben's brilliance before he has a hard stop, the rest of us can carry on talking if we want to. Do you have any idea what I'm going to direct to you? No, I think the ecosystem is actually as important as the language these days. I wonder if you have any thoughts on I mean, I my personal belief is ColdFusion ecosystem is effing wonderful, with all those tools from the autists guys and peat free tag and the integral guys and Germany and what have you, and plus what the language Engine developers dirt and the folks over Adobe produce. But you have any thoughts on the future of the ecosystem? Mr. Ben?
Well, one thing that's been kind of mind for me lately, as I've been getting much more into the Lucy side of things, and we just talked about modernization of the language, I find myself a little bit torn between two worlds in so much as am I a loosey, CFML developer, or am I a ColdFusion? developer? And what I mean by that is, when I write demo code, for example, or I write a library, do I care that it runs in Adobe ColdFusion as a Lucy developer primarily? And and that becomes an interesting question when you think about modernizing your applications. Because, as an example, one thing that I've been fascinated with but have not taken a step towards is turning on full node support, because I have no support in other languages. And it's been pretty beneficial. But I feel like the moment I turn that on, I basically can't use any third party library that doesn't expect Knowles to work, how they've worked historically. And that's just a small example. But Lucy fur as another example, has a, I think, a much more enjoyable tag support and script, which is that all I have to do is remove the CF. And I can use any tag, and Adobe ColdFusion does the does it by adding parentheses and curly braces, and it's a matter of preference. But again, like if I start to write my code with a very loose specific syntax, I'm no longer writing Adobe compatible code. And do I care? And do I care as a community representative? Do I care as a library author, etc, etc. And I'm, I'm finding, like, I don't know what the right path to modernizing is? Because I, I just don't know how much I care about those various things yet, if that makes sense.
Mark Drew 39:20
I'm gonna want to kick I'm going to answer your question with maybe a postulation. That happened this week. I this is what open source comes in, I would say. It's like if you're doing your like, for example, library writer hat on, right. I hope those are GitHub for that library that you wrote graciously, obviously, right. And if someone comes along and says I wanted to use this, but it doesn't work with with Adobe's like what a create an issue and so I'm gonna appear right? And then we can find a way for it to do this pattern so that we can do like including based on on stuff, I don't want to get into the technicality and when the pro Since because I've had to do that this week, I wrote some stuff for, for library with an AWS library. And do ik doesn't run on ColdFusion. Not really, because I'm not using it, I'm using it for my case. If someone down the line, someone says, Well, this doesn't work on core fusion, I might happily spend like 10 minutes like changing it says, like, common code or whatever. But I'm not going to do it out of the box, right? I'm going to deal with whatever enjoy for my use case. And this is the weirdness about open source is fine, because I do everything very selfishly open source, I contribute selfishly, I got, I wanted this to work for me. And I contributed to your library because I wanted it to work. For me. If I went to your library, and you said, I've got this this Adobe CF guardian and doesn't work on Lucy, well, I would have said, here's a PR to make this code word for lucid. Selfishly, you know, and I think that's, that's where you have to be. Otherwise, you're not the parent of every CF non developer. And you will have someone saying, well, it doesn't run on like ColdFusion, MX 6.1.
Michaela Light 41:09
So I want to echo that to the listeners, because sometimes in the past has been kind of a victim mentality, you know, oh, the language doesn't work the way I want it to. And they just whine about it on forums instead of like doing what Mark says, Make a pull request. And, you know, take some action, do it do the best, you can look, not everyone can write the Lucy engine code. And obviously, there's only about 30 guys in the Adobe team writing their code, or whatever the size of the dev team is. But we all can make requests for improvements, we can all document how a bug is in the language or, you know, we can add to the documentation, like we said in the last panel. There's lots of things everyone listening, this is your this is your your ColdFusion country calling you to help out. Everyone listening could do some contribution to improve ColdFusion in this year.
Gert Franz 42:06
Yes, that is absolutely true. And I totally concur. What you're saying, Mikayla, I just wanted to respond to Ben as well. As soon as you write a letter a library, then it is very important that you're cross compatible, because you don't know who's using your library in the first place. As Mark said it. Yeah, you're just making sure that your runs on your code, but then open it up for pull requests, to be honest, in our private application that we write. We don't care about confusion, compatibility at all. Because you know, we know exactly that we're not going to switch to ColdFusion. So we're taking full advantage of everything that the language has to offer to us. And therefore, it is really only important when you're interfering with others and others code, right? Because there, it is important that the that the compatibility is given. But if we're using query listeners, or male listeners or thread backgrounds, or cached CF HTTP calls, that is something where I don't really care about the compatibility, and maybe you could keep it in the same way.
Charlie Arehart 43:17
I'm gonna toss out a couple of things on this topic. One is that back in June, Gavin PyCon, did a talk on the CF meetup on how to find, install and implement third party libraries and CFML. So he was addressing that very point of how if you're going to either use or contribute to or offer a library, and how to consider those prospects of the possibilities of running on the different engines, he touched on that a bit. One thing I wanted to also get back to before we might lose anybody is that the original point we started with here was discussion of the ecosystem. And I want to make sure everybody hears this. At the dev week yesterday, the Adobe folks did a live demo of their new VS code extension for ColdFusion. And, one, it's just an extension for CFML. So people will be able to use it if they use Lucy. But of course, there are things in it that are tied to CF RDS based things like the debugger, and you know, the data source, live query editor, those things until some way something's provided for to do that RDS integration with Lucy that won't work with Lucy, but the majority of things, people were on the call and making lots of positive comments about what they saw that had been done. And of course, this opens up another can of worms in the VS code extension area, because there's at least a couple comments on the quay. And sorry, I forgot the second one.
Mark Drew 44:48
I think so. Yeah. So there's
Charlie Arehart 44:49
two primary current VS code extensions for CFML. And now along will come Adobe's and by the way, that in the in the dev session that's going to be free. So Oh, and it's fast brain open source? Is it?
Gert Franz 45:03
Hang on? Is it? Oh, let's
Charlie Arehart 45:04
clarify, they said that it's free. But it's not open source because it contains those proprietary things that talk to,
Michaela Light 45:13
um, I don't know if it's technically possible, but I'd suggest to them, they kind of isolate the proprietary stuff in one part and the rest of the codes open source search
Charlie Arehart 45:20
for sure. Because they are easily accessible, making that stinky face, because it's a shame to have that, you know, be the first one because someone's gonna have
Gert Franz 45:29
Yeah, we would, we would gladly contribute to that to make it loosely compatible as well. But I can understand there'll be as well that they would say, Hey, we're not interested in having Lucia compatibility with that one, which I understand. Well,
Michaela Light 45:43
we can ask, let's ask them, you know, they may be totally open to people helping out and improving their code, if they can keep this stuff they have to license from rather people in a separate compartment. I think audio possibly
Mark Drew 45:59
is propriety proprietary technology to Adobe. So that's the one part that I haven't seen the other way, Charlie, so I don't,
Michaela Light 46:10
I am sure it can be, you know, compartmentalize to whatever the correct technical term is that code gets put in a function and that you don't get the function but everything else you can get get to. Anyway, I imagine I know, you have to leave for a mandatory hard stop all hands meeting, where they reveal the new brand of cat food that will be served as you can read. You must be dog food. You have a dog. Yeah. Thank you. So thanks for joining the panel we're going to carry on but do you have a final word you want to say?
Just that I love the confusion community. And I absolutely love writing ColdFusion. And on a on a day to day basis. It doesn't. I don't run into roadblocks it I don't find myself yearning to have features of other languages. And I can only imagine it continuing to get better. But I will leave with that. And thank you guys so much. And have a great day.
All right. Thanks, Ben. And now Ben is gone. I can talk about it behind his back and say that his blog is effing amazing. He writes pretty much every single day about new features in Lucy or Adobe ColdFusion. And how he's tried them out. And he discovered here are the, you know, the boundaries of whatever he's like, he's on a Star Trek five year mission to explore new ColdFusion lands and discover strange creatures that might be living there. I want to talk about Yeah, go ahead.
Mark Drew 47:41
From saying we all have different goals, you know, like Ben does a blog post, I do a PR Gert shouts to me, it's like it's a circle of life.
Michaela Light 47:49
And Charlie does a lot of blogging and posting on LinkedIn.
Charlie Arehart 47:56
As well, he wasn't disparaging yesterday in that, hey, I just shared the link, the video for the session yesterday, is online. And I just shared the YouTube video link in the show notes.
Michaela Light 48:09
I Yeah. And I want to give a shout out to the Adobe folks for getting their videos published within a day because in previous years of them and other conferences took like three or four weeks, and it's like the excitement has died down by them and just pumping out a raw version straightaway is the way to go. I would say I wanted to to ask about machine Lane learning and AI because a lot of other tools have some kind of automated stuff. And I've I know, I've talked to some of the Adobe engineers who've done a lot of machine learning study. And so I've got a guest. They're trying to plug that into the language somehow.
Mark Drew 48:48
It's like, it is fashionable. It's crazy. But it
Michaela Light 48:51
is yeah, every other website, I visit ends in.ai. And it's like, Okay, guys, is it really AI? Or is it good?
Mark Drew 49:00
Or is there a whole bunch of if statements? Do we really know that?
Michaela Light 49:03
Yes.
Mark Drew 49:04
Well, the thing is that, that's the beauty of CFML. I'm just gonna say generally that because we're talking to Java, you can put TensorFlow information there. The problem with ML is not so much the language or the logic that we'd be doing to train them a dataset, but you'd have as one as the storage for that dataset. Because it can be massive, and you have to have like, depending if you've got a gun network, there's like adversarial Gann network that you're saying no, it's right. And yes, is correct, is also the computation power that goes with it. So you can't be running just on general servers. You have to have like stuff with GPUs on it, for it to run in any real, you know, timescale and those are kind of expensive, but I don't see that as a technical limitation for writing machine learning, interfaces or into me Lucy, for example, could probably do a library with fairly easily on writing utensil, there's plenty
Michaela Light 50:05
of existing machine learning libraries for ice. And so, you know, it'd be probably quite easy just to put a wrapper around that and call them. But what I wasn't so much thinking of adding it to the language, I was thinking, how can the language engine, use machine learning to improve the experience by automatically doing stuff, whatever that might be, maybe, you know, improving the security, I have an
Gert Franz 50:28
idea or I have an idea just to install the extension called tab nine. In this tab nine extension knows more about me than I know about myself. So you can, you can connect that tab nine extension for VS code with your repository. And it takes the most common things that you were about to write, and it proposes them to you. And it sometimes does really magical guests, and it knows exactly how my lines going to look like. Because I'm sure in the background, the guys go is gonna write the same bullshit again. So here you go. Let me propose it to him. And he's nine out of 10 times is clicking on it.
Mark Drew 51:08
Microsoft has just done that. But they've targeted like the thing too old to get old GitHub. So it's kind of like, instead of just your repo, it's like everyone's public repos, I think better or worse. Yeah, for better or worse, because then people are going like, wait a minute, that's not in the license. And you go like, well, actually, you did say that you could use it for this. That's why it's called Open Source. Right. And,
Charlie Arehart 51:32
by the way, now that we're right above each other in the video, I've had a lot of people commenting about how much you don't like you've got a mustache, though, and I'm gonna
Mark Drew 51:42
sit this way, just so that you know that completely different. Roads
Charlie Arehart 51:46
are not parallel. And I'm pretty sure you guys both made great points. Because those are the first things I thought of when the question was first raised was that insofar as integrating ml, in your CFML, integrating with Java would be great. And I know that's not where you wanted to go. We'll get back to that in a second. But I just want to throw out that I just had noticed today that at the end of the day, today's last session on the dev week is a talk by Brian buckled. And it's in his case, specifically, it's exploring the AWS Java SDK developer. But it's talked about integrating CFML and Java. So some people don't know that that's possible. And it's actually been possible for a long time. And in fact, a funny little with a barbette. If I were to ask people, when was the first time you could integrate CFML and Java? In fact, you guys are been around long enough, we'll play the barbette right here. When could you first integrate Java from CFML?
Mark Drew 52:43
was going to say, during the Emax era when we moved over to to Java,
Michaela Light 52:48
Java, right. So yes, yes.
Mark Drew 52:52
Because there is actually a CFX tags that you can actually run Java,
Charlie Arehart 52:59
not only C FX tags, you're right. And even cheap. Last one, I believe is when it was added, we could do a CF object or create object to call a Java object. So we've been able to integrate CFML and Java even way back then you just use a Java class path of where the library was, and, and the your Java engine, and it could load it. But you were saying mark, and Koba, yes, and Carver, which finally is gone.
Gert Franz 53:24
I guess it was a DLL DLL, you could call as well, you could do
Charlie Arehart 53:27
deals as well. And then to Gertz point, that was another great one. And that was the second thought I had was that we who might look for things about CFML coding being improved. One of the benefits is that yes, there's things in VS code, or even more broadly, GitHub. And that's where I think we, as CF people can take some comfort that even if the engine makers don't specifically do something to support us, there are these touch points that not only we could leverage now, but more importantly, what's really good will bubbled to the surface, because lots of ideas are thrown against the wall to see what sticks. And the ones that are really good will eventually be clear and obvious. And that's when sometimes you see either Adobe or Lucy, leverage that thing, because they feel like yes, there's been enough clear evidence and win. But back to your original point about the engines themselves. I'll let God speak to Lucy, I'll just throw out I'm not aware of anything in the in the CF space. Although I will throw out that in 2021 2018. When Adobe added that performance monitoring toolkit to either in 2018 or 2021. They added 2018 called connector tuning. All right, it came out in 2018. But I think it might have been in 2021 though, okay, what they call connector tuning. So they were implementing some additional intelligence I think it was even with 2018 Because if you guys have seen that connector, heartbeat URL, the connector call and that causes trouble for some people, some times, but that thing is sending metrics about the connector from either Apache or IIS to CF, which sends it to the PMT, which uses that to do. I don't know, if we want to call it machine learning, like you said, Mark, you know, it's glorified, conditional checking, but it makes decisions based on that. And that's just a sign of where at least there's a step in the direction. And certainly much more could be done. And I think Mikhail is getting at that point is what could the engines do? so dramatic? I'm sure
Michaela Light 55:27
these young gentleman down here have something to say. But I sent out a quick vision for this is that we reduce developer stress, when I've done a survey on health challenges people have stress is the number one thing and so many developers are stressed out. And anything we can do in the ecosystem on the environment to like help developers get their code working easier through whether it's through machine learning or other, you know, predictive stuff in the IDE. And I just have this vision that the technology, whatever, whatever level, it says, whether it's machine learning, or clever, if you know, clever, whatever you want to call it, it kind of looks at the code and it says, Okay, this, these lines, these lines are, the engine knows that this stuff could be performing slowly, or it can see through running the code that hey, there are dodgy. That's a technical term dodgy dodgy sections of the code. And you should be looking at this section of the code, guys, because it's maybe error prone or it's slow, or it's insecure. And we know that kind of information. But why can't it be injected back into the IDE, and then they kind of color highlight or have some other thing that comes up and says you need to improve your security.
Mark Drew 56:40
As someone that's written this stuff. We've literally when I worked for Rylo, I literally that there's a couple of layers happening here. One Java hotspot compiler anyway, that looks at areas of compiled code, and improves the speed of them for you. So this is like a very low level stuff. It worked for Lucien work for every every Java version. But the other one is, is telemetry about your telemetry, telemetry. vaccin,
Michaela Light 57:16
put the X set mean in regular English.
Mark Drew 57:19
The limit in regular English means logs, but as metrics about your code, so I like it, right? So it's not so much just logs going like you did this, you did this, you did this, there was an error is we had something I cannot remember the name of the project that we had Rylo, which basically said this line of code ran 50,000 times, and it ran at this speed, which meant that you could get statistics on on groups of things. But now that the problem is like if you have a line based approach, these 10 lines might not be too slow in themselves, but the whole function call is very slow. So if you look at the the function call of that line, that
Michaela Light 58:03
Well, I think initially it would be kind of indicated, it's like I suspect these line it would be like a doctor Watson to Sherlock Holmes mentality. The developers are Sherlock Holmes brilliant mind. Dr. Watson asks the stupid questions to help Sherlock kind of find the solution. And if we could just kind of indicate here's the section code you should be looking at. And I know we already have third party linting tools, we have third party performance tools and whatever and they all give them out. But it doesn't integrate back into your where you're looking at the code.
Mark Drew 58:35
This is what we tend to do for Eclipse was a way to say this is my project. Now, you have to integrate three things, right? Somebody who's running live does a specific thing. That's the same version as the code that you're running. So we have project control. We have all the tools here. So you could say, right, exactly. Show me what what the live server looks like.
Michaela Light 58:55
And highlight, maybe there needs to be an API or an interface layer that well, today we have the Adi Oh, you have
Gert Franz 59:03
it looks nice that Lucy has that wait, Lucy has that the there is a talk, I think called Page parts. And Lucy is
Michaela Light 59:14
paid out again, in English
Gert Franz 59:17
page parts, you know. There's a page a page and parts of that page, page parts. And these page parts are compiled into the Lucy debugging. They're coming up the Met as the metrics and the Lucy debugger. And they contain which statement took how long to execute and how many times has been has it been executed? And we just we provide that information. We can provide it I suppose over an API as well. But for us, it wasn't the focus just yet to write an IDE for this or an implementation for the IDE. So we have the information. Maybe we can talk to some of the folks that are written The CFML implementation, or the linting implementation, and have them use this disinformation to colorize. In the IDE, this was your last time,
Michaela Light 1:00:12
I'm going to take your page parts feature, which sounds really cool for performance tuning. And I'm going to ante up code coverage thing, because I know that the fusion reactor guys have like this clunky, I won't say it's clunky, it's actually very clever. But it requires turning on the debug level and fusion reactor, which some of my clients don't like having that turned on all time on production service. But I'd love a way to see in my IDE, this code has never ever been effing run ever in the production, or QA server, you know.
Mark Drew 1:00:49
And there
Gert Franz 1:00:50
are when you run your test suite, you run your twist test suite, that code has not been tested, been exercised. Yeah, and what the good thing about these page parts is, and there is really something that I think nobody has ever thought of, you can do post debugging, right. So you can do a post step by step debugging, seeing, where did the Go code go through Oh, and here are the if statement went that way. And that way. So that is a nice thing, you know, now you have the debuggers. And the debuggers will stop the code at the server level. And then just you have to go to the next line and to the next line, etcetera. But you have no record.
Mark Drew 1:01:31
When you doing nothing on a live on a server you want to see like this.
Gert Franz 1:01:34
Exactly. So for example, you could record it on a live server, and then have that sent to your local machine. And then you look at that code and see, oh, this is how it executed. There's the issue because actually went to the if statement to go in the
Michaela Light 1:01:47
other Oh, right. So like a replay will be like an instant replay
Gert Franz 1:01:52
replay, it's more or less, you know, with a with a clever tool for vs, you could actually just click the play button, and then it opens up files and just says, Here I am. And I'm doing this and whatever. And here's the output that we generated. Because the page parts not only contain the, the execution time of each individual line, how long it took from byte this to byte that it also contains a separate separate thread, which contains the output generated. And one of the features that we wanted to build. And, you know, given the lack of funding we would never got around it is that you get a list, you go to the View Source part of your page, you click on a specific, let's say, empty character. And then you right click and say, show me where this has been produced. So it goes into the URL ID and shows you the line of code which produced exactly that space. Wow, you're looking at spaces. I mean,
Michaela Light 1:02:56
yeah, I want to suggest a related thing, which is language feature coverage. And maybe you guys do this behind the scenes, and I just don't know, maybe a dog, I think Adobe does do this, which is which functions and which tags, and even which parameters which functions ever get used? And how much you know, because I've got to believe some features get used a million times more than other features. And there's probably features in our language that have never been used, or
Mark Drew 1:03:24
what drivers, right. So the driver for Adobe is a commercial one. So what you do is you add that telemetry, that's exactly what is a start frame, which features of our system is being used, because then we can build new features that we can then sell. Or, you know, I'm not saying this is just a commercial business, it's a commercial business. And I'm not saying that's just a decision, because you'll have product owners and working with a lot of product owners that they'll want to have a lot of information about that, right.
Charlie Arehart 1:03:59
But that notion of either engine, being able to know that sort of stuff would require non oil to track it, but then that they have some way to send it back. And I'll just say so nobody thinks this is going on. There's nothing in gold that currently does that sort of symmetry to tell Adobe, what aspects of CFML are or aren't being used, they would really prevent that through their testing and libraries. And, and I think what you were getting at as much was an individual developer, they would like to know and, and that discussion of code coverage, you know, that's been a holy grail for a long time. And just wanted to share a couple of things in response to that. The feature in fusion reactor that facilitates that. It's not the debugger. It's what they call the CFML line execution code tool. And it's a it's there. It's a checkbox inside of the settings of the plugin anyway, and once you do that, it produces output that is every one that was ever executed in order and that can be used for code coverage. I believe test box integrates it, and girt. If you guys did you guys never did anything that leveraged it, right? You're talking about the page parts is the way you were thinking of doing it. And that isn't yet either available. So no current it does what Mikayla was proposing.
Gert Franz 1:05:17
Exactly. So the thing is this, we have all the information, we could provide the information. And yeah, we just need a feed back into VS code, you know, and I would love to talk to somebody who does Vyas code plugins. And then we can just provide that
Mark Drew 1:05:36
code for that kind of stuff is that you have compared to CF Eclipse, I have a little Eclipse, I have a little knowledge on this is that cf COVID doesn't allow you to create many panels that are completely custom. I mean, you can you can see, get lands, but it's not part of it is saying like, this is the language contributions you can do. These are the window panels, you can do these. And they're generally trees of some sort of data. Right? So you could do it in the sense that you have to rewrite how everything is shown. And highlight and don't co colorizing by the editor is not as easy. You'd have to put like these other problem areas or create your own editor in a weird way. Because it doesn't allow you to to say this line has to be read.
Charlie Arehart 1:06:25
Well, I'll say if you see the VS code extension Adobe showed, and if you start working with it with their debugger, they do have the multiple panels and they do literally as you're stepping through the code. It's showing as it goes and other parts of the window are updating to track the variables that that right. I'm not saying that that's necessarily equivalent to what you're bringing up. But just to say that they hadn't noticed that dilemma as well.
Mark Drew 1:06:51
Well, yeah, that well, that's a slightly different dilemma. It was built into VS code, there is a debugging function that will allow you to just say, hey, you've debug, you stopped at this line on this, this thing, and these are the tokens that are this line. So you can
Michaela Light 1:07:06
I think firstly, this needs to be an API or an interface layer to VS code and other editors so that all languages and all tools can hook into it. And that's the wheel every time. And secondly, my personal vision for this is this kind of like an overlay of view, if I want to view the performance of the code, I, you know, I click a feature or button or whatever, and it overlays, here's the hotspots. If I want to view security, I can click a secondary, if I want to view code coverage. Another thing if I want to view idiot code written here warning, you know, from the predictive machine learning stuff every night, I can put that on.
Charlie Arehart 1:07:44
And that's all purely generic would be a valued anybody in any language. So that's the kind of thing that's actually exactly it's code will
Michaela Light 1:07:51
VS code is mostly open source, right? They've got some proprietary stuff that you can't get to the Microsoft, there's even an open source version of VS code that doesn't have any of the telemetry or other bullshit stuff that Microsoft plugs into it. I said, Well, it'll show stuff on Bing or whatever. But you're gonna have a pure open source version of vs. Code is called vs. codium. Or failure.
Charlie Arehart 1:08:12
Right? And I was getting it was that ecosystem, whether it's any vendor or people contributing, that we think that's where we can hope that in the future, the idea you have somebody else either will have it, or does have it already has it. And then they'll identify a way to provide API,
Michaela Light 1:08:30
right for us to API language. And then let me add some steroids. This idea, you know, we're going five years out love technology. I personally am not a great fan of virtual reality, but a lot of people are and why couldn't the code editor have a virtual reality thing where you can kind of zoom in and zoom out and kind of give a personality to bits of the code and as little you know, you don't
Gert Franz 1:08:54
make it
Michaela Light 1:08:55
need to horror the horror. You need to drop
Gert Franz 1:09:00
I need to actually drop
Michaela Light 1:09:02
me. Thank you. Thank you. Know, we appreciate you. We will wrap up without you. We appreciate all your Lucy contributions and your fabulous sweet.
Gert Franz 1:09:14
Thank you. Take it,
Michaela Light 1:09:16
sir. All right.
Charlie Arehart 1:09:18
That's probably good. Because people are listening and
Michaela Light 1:09:21
yeah, we should wrap we've been going for quite a long time. But why don't we
Mark Drew 1:09:25
wrap prepared. You have to turn again.
Michaela Light 1:09:28
You wraps comes out of the brain in
Mark Drew 1:09:33
like, I'm not around
Michaela Light 1:09:34
it was we'll put some music on for you mark. get you into the mood and then you can you know,
Mark Drew 1:09:41
well we've got power do. We got Charlie and me?
Michaela Light 1:09:45
Yes, exactly. Yeah, you've got Dr. Evil on one side and whatever Charlie's nickname is on the doctor good. Doctor good. Yeah. Dr. Feelgood Uh, I think we could probably, let's just talk briefly about CFML engine updates. And because I, you know, I know affects a lot of people in DevOps, because they're trying to apply things. And there's been some hiccups in Adobe ColdFusion, that it was hard to apply the updates because they UX got broken, and they fixed it. But you could only get the fixed version by applying the prior ones or the broken
Charlie Arehart 1:10:25
UX. Well, that was back in 2018 2018.
Michaela Light 1:10:30
Yes, and no, I still have clients running 2018. John, do you I'm sure.
Mark Drew 1:10:34
I mean, what I would say like the big change this thing called a 12, factor, application, right, is a two factor dotnet. And one of the one of the things is codify your system in conflict files, right? So however you build your server, it should be in conflict files, whether it's using command boxes, what's deploying them command box is a game changer for staff or whatever it is, like Vagrant, or Ansible, or any kind of thing that builds your server. codify that. Because what you what you need to do is to testing right, so you want to see that the update doesn't break anything. You're not going to do that on live servers. I mean, I know people do. But you're not going to you shouldn't be doing that. So you should have a branch that has like, this is our upgrade to this version of Lucy, or this version of ColdFusion 2022. You know, whichever version minor version 2021. Sorry, totally, I'm about out of the loop with that with Adobe version. But do you know what I mean? It's like, it's not just 2021, it's going to be Adobe 20 21.5 or 1.5, or whatever patch it is. And that should be codified. And if you're looking at me funny going like, What do you mean, codify this, like, there should be a father says, to run this code, you have to have this version of your engine. And when you deploy that, it reads that and it automatically deploys that.
Charlie Arehart 1:12:04
So I'll throw out that insofar as that particular point, just to be clear, in case people didn't know, there's Docker container images, whether use Docker or other container runtimes. There's container images for Lucy from Lucy from Adobe for CF. And then from mortise. They have what they call command box images for either Lucy or CF. And each of them are different. They work in different ways from each other. And I'll be doing a talk actually, at the end of the boxes pre conference, about a month, early September, or late. Late August, I'll be doing a talk on comparing the differences between those three classes of images. But I just want to say that would be one way some people could achieve what Mark's asking about. And I'm sure he knew that I'm just saying for the sake of listeners. So for example, with the CF images, they have an image for each CF version. And each update, when they come out with a new update, they create a new image. So the image is pre baked already has the update in it. So you don't have to do that. So that goes back to the Kalos point, but also to the concept of configuring the instance, administration settings via config I didn't get in earlier to say this, but cf 2021 has already added that built in just like Gert said that Lucy six is going to add it so that instead of having to rely on CF config, because not everybody is going to have CF config, cf 2021 had added what they call CF setup. And that allows you to either export or import JSON based config of anything in CF admin, everything. I say again, no more XML files, no more XML. I mean, let's be clear. It's still there. But you have that choice. If you want to create JSON, base config. And then to your point mark, one can then automate a deployment or automate testing, and totally script at all. But we should also say back to the original point about updating is that updating can be done via scripting. It doesn't have to be done through a UI. It can all be done through a Java command. And the installation, even if you're not using Docker images, the installation of CF can be silently configured totally via script. So updates can be done by a script. So people who want to do such automation can. The interesting challenge again, I find is that sometimes in our circles, there's such a wide variety of people. And some people are like they never ever think of or care to automate things. So they want a UI. And in fact, when cf 21 came out, they made a big noise about hey, there's now a zip based installer, you don't have to run an installer anymore. You just unzip it and you're running CF just like Lucy Express provided for CF 2021 provided for but other people were like, where's the installer? You know, so there's always these two audiences that have to be catered to And I'm just saying that CFC ability, and I mentioned this in my modern CF more modern, and you think si has had the ability to do scripted, automated installs in various ways for many years, but a lot of people don't know it, because they don't do it. And the ones who do that a lot, have often moved either to other platforms because they wanted it and they didn't think it was there, or they've moved to Lucy, and they don't care about what Adobe does anymore. So they don't know that Adobe has added these things that are there. So it's all getting better. And over time word spreads. And we're all getting better and better and better places as time passes.
Michaela Light 1:15:36
On. Excellent. Yes. Why don't we wrap up then with the why it's still wise to use ColdFusion? Or CFML?
Mark Drew 1:15:48
Once was, I mean, why wouldn't you have you read the documentation on languages Jesus, the I've read the documentation on many other languages, like, you know, I think seven was intuitive. It's got nice clean separation, you can be as messy or as tidy as you want. You're not being dictated by by anyone, or how you should do it, you have the freedom, and both the support to do wonderful things.
Charlie Arehart 1:16:15
And as we've talked today, it's evolved in many, many, many ways. So that sometimes the arguments against it, and why it seems unwise, they're often unfounded, or they're no longer accurate. But we again, have to acknowledge that some people are just going to be in a position where to them, it doesn't make sense. If they've done a fair evaluation, and either neither Adobe in anything they've done, nor Lucy and anything they've done if for some reason, it doesn't suit their situation, then it's understandable, they move on. But I would just always call for people to give a fair consideration to both. And I mean, both I'm not talking about this CF versus Lucy, I'm saying whatever you're on, before you give up on make sure you've considered it fairly, because I see so many discussions in the community where people who are currently using a thing will say can't do it. And it turns out, they just hadn't tried it. They were basing their knowledge on a year or two ago, or what they heard from somebody who they thought was doing what was true, and it's not. So that's why I'm always on a bit of a tirade about making sure people know
Gert Franz 1:17:19
what's current.
Michaela Light 1:17:20
Appreciate your tirades on ColdFusion is modern Charlie, I wrote a long article on is cold fusion dying, and happy to link in any extra things that you have that you've written.
Charlie Arehart 1:17:35
When I give you props, when you were bringing up the CIO discussion, we got sidetracked, I didn't get to, but you've been of all of us, you've been doing a great job of that in your resources, whether it's the CFI book, or the videos that you do the podcast, log entries. So yeah, thank you for that.
Michaela Light 1:17:53
Well, the reason I do that is because I have to be alone, you have to leave the room leaving was only two left. Thank you, Mark,
Charlie Arehart 1:18:00
we'll wrap up with this last point you were making,
Michaela Light 1:18:02
okay. Yeah, sure. What, you know, obviously, the ColdFusion developers write the code, and ColdFusion DevOps people, you know, get it deployed, right. But at the end of the day, if the CIO level doesn't give a green light to using the technology, no one's going to be coding in it. So, you know, they are a very important audience for keeping the language live, as are in a more remote level, the CEO level, because, you know, they also need to be happy with the technology that companies using so I think is important, you know, some of the conversations to be directed towards that level.
Charlie Arehart 1:18:42
Absolutely. Again, great for bringing it up. And thanks for what you're doing in that regard. And with that, Ash, it's good to so
Michaela Light 1:18:49
yes, we're all all complete. Thanks for staying on. So long, Charlie. Appreciate everything and enjoy the rest of DEV week. Let's see you guys. Meeting the people