Read the show notes and download the full episode here
Michaela Light 0:02
Welcome back to the show. I'm here with Peter Amiri. If I'm saying your name right, I think that is perfect. All right. And where are we talking all about CF, we'll see if wheels which is a great open source framework for ColdFusion development. And you may not have known Safeway has been around for years. We'll tell you how old it is later in the episode. But it's got a lot of new features got a lot of new energy, Peter is new to the he's the extra wheel in the wheels development team. We'll talk about his role in a bit. But you may have noticed if you follow CF wheels with their blog and other discussion forums, there's been an enormous amount of activity in the last six months after a two year kind of quiet period. So a lot of excitement in the wheels world. Welcome, Peter.
Peter Amiri 0:50
Thank you. Thanks for having me.
Michaela Light 0:53
Yeah, and in case you don't know, Peter has been doing it and development stuff for over 30 years. He's currently the CTO, Pei industries, and works in manufacturing and distribution of truck parts. Wow. And you've been using ColdFusion. Since version 1.5, which is like back in the dark ages of CFML.
Peter Amiri 1:18
When there was this, you know, when I purchased it, it was delivered on three, three and a half inch diskettes. So that's
Michaela Light 1:24
how it was. Plus, it came with a T shirt from O'Reilly, if
Peter Amiri 1:28
I remember exactly.
Michaela Light 1:32
And he used to run the Orange County Chapter of the ColdFusion user group in Southern California, back in the 90s or so. And he was also part of MySpace when they were using ColdFusion or police their site. So what used to be the biggest ColdFusion site in the world at the time, he had 200 servers or something like that. And he's been involved in CF wheels since the early days back around in the mid aughts. And now he's come back to the project. So glad you're back, Peter. Thank you. Thank you. Maybe we should start for people listening who have no clue what CF wheels is, what do you say for?
Peter Amiri 2:14
Sure. So CF wheels is another ColdFusion framework. And it was originally modeled after Ruby on Rails. So if you remember back in the early 2000s, when Ruby on Rails came out, it was a complete mind change on how applications could be built. And that's why I got a huge following. And there was a lot of effort on the cold fusion side to see if we could, you know, take that momentum that rails had and bring that framework over to the cold fusion side of the house. And, you know, cold fusion has advanced since those early days, thankfully, but what we what we were able to do initially was, you know, get a 1.0 to get a beta project off the door, that had a lot of the similarities of what the Rails community had. And then, you know,
Michaela Light 3:15
what does the what does the Rails community have? Why is that such a popular web development framework? Which,
Peter Amiri 3:23
well, I think when it came out the notion of, you know, Ruby on Rails, cold fusion, cold box, and, you know, Django, these are called Model View Controller frameworks, it's a methodology to break up your code. If we all think back of our spaghetti spaghetti code days of cold fusion, you know, you'd have a page you'd have your query at the top, your form at the bottom, your form submitted to the top, there is a if then block around the code at the top. And that's how we build pages, you know, and you have includes of other pages and stuff like that. And, and that got, you know, a lot of applications built, got a lot of us consultants paid. And a lot of us pay to fix other consultants work those early days, and what the frameworks the reason you need a framework, or the reason one might opt to use a framework is to give some structure to your code, and some end rails as well as wheels. It's, you know, convention over configuration. Some of the earlier frameworks for ColdFusion had a lot of XML configuration you had to go through. And this was a novel idea that oh, I don't need to have an XML file where I do all my configuration I just have a particular directory structure and if I put code in this views directory, it will automatically be served to the end user, I don't have to worry about how that gets done. So so that's kind of what the model view controller style of frameworks brought that it allowed the developer to kind of take a step back and not have to worry about all the crud that's involved in building a web application. And just worry about the presentational layer, the the business logic and, and how to glue these things together.
Michaela Light 5:32
And when you say crowd you're talking about I wasn't acronym, Stan, for you weren't talking about
Peter Amiri 5:38
mess. Yeah, don't mess. But crud, obviously, you know, the create, read, update, delete. Thank you for
Michaela Light 5:47
reminding me. Basically, what what 50% of coding often involves is writing pages to edit and delete and create records. And it also another thing and see if we also that's kind of built in with some ORM stuff that we can mention later. Sure. But what you meant there is your avoids having messy code.
Peter Amiri 6:10
Yeah. And the boilerplate is how other people refer to it, you know, when if you don't have a framework to give you structure. Every time you start a new application, you have to build that structure, you have to build, you know, how am I going to style my page? How am I going to, you know, the call the database? What's the structure of this page, calling that page and those types of mundane things? The frameworks kind of take away from you and you don't have to worry about that.
Michaela Light 6:44
You can no you are you talking about scaffolding where you can produce the default app very quickly as you can.
Peter Amiri 6:51
And that's one of the features that that wheels have, you can scaffold a application and then you can take that code and run with it or, you know, to keep it as is for if it's just a back end admin type of page.
Michaela Light 7:05
Okay, so if someone listening is saying, Well, that sounds interesting, but why should I even look at CF wheels? Why should they be trying it out?
Peter Amiri 7:15
So the from from the very early days, the way I looked at CF wheels is a lot of where we have two class of developers in the in the ColdFusion camp. One class of developers are the true professional developers that are maybe computer science trained. And they are following modern object oriented programming patterns, the Gang of Four design patterns book and what have you, then we have another class of developers that object oriented programming may be foreign to them, they're more akin to using procedural coding, they're more akin to using that spaghetti coding that that I mentioned. And CF wheels allows a very easy on ramp to using a object oriented programming language, which ColdFusion now is using a model view controller a separation of concerns, pattern, but not having to be an expert in object oriented design. And, and that's one of the things that I think, kind of gave rails a step up when it first came about, it's, it's, you know, not having to, obviously, a lot of the long term developers in the Rails community now embrace, you know, op patterns. But I think these, these frameworks make it easy for people to get in and start developing things and being having something functional. And you know, if it's a ecommerce site, having something that you can start selling things on and make a living off of, without becoming a computer sciences along the way.
Michaela Light 9:12
Yeah, so it's more focused on getting fast results, you know, get being able to get your app up quickly without so much code. Exactly. And it has the benefits of the MVC approach where things are organized without forcing you to learn Oh, and all the other things that sometimes these frameworks seem to involve. So if someone was totally had no idea what CF wheels was, and they just went to the CF wheels, website, which I want to say cf wheels.org. See if we also was there earlier today researching all the cool things you'd done with the other guys there? How long do you think it would take for someone to have their you know, their feet Where to be productive.
Peter Amiri 10:03
So I think I have a video on the front page, which is like a six second looping video that just basically shows if you've got command box installed, which is a, you know, CLI application module for cold fusion, you can, within a couple of commands, you can have a fully functional CF meals application up and running, like a Hello World application, or the congratulations page can be up and running in, you know, five seconds to, to, to be able to build, you know, so another one of the the, I think, cool features of wheels is that you don't have to use the entire framework. So if it would be overkill, but if you wanted to put up a four page, you know, static webpage, yeah, you could use wheels, all you'd have to do is, you know, install the wheels framework, in the views folder, create four files and, and make links between those four files together. That's it. So someone coming from a web application background will be able to wrap their head around that and get up and running, and then ease their way into using more of the framework as they feel comfortable, whether that's using the controllers, whether that's using the routing mechanism, whether that's using, you know, the, the form helpers, or what have you. So, so it allows someone to come in and kind of get their feet wet without having to become an expert, or take a class or spend six months learning the framework just to get a, you know, simple app out the door.
Michaela Light 12:02
Well, that's good to hear. So folks listening, you know, CF wheels is free, it's open source, you can spin it up in less than five seconds, if you've already got command box command box only takes like five minutes to get installed. Yeah, you know, there's no installer, you just stick the executable in your path, and they know you're running. So anyone who isn't using command box these days with their ColdFusion is missing out on a lot of extra functionality and help from a free tool. Now, you, you mentioned, people who have come into wheels from procedural code, or even spaghetti code. And then also people coming to it maybe from professional CSS style, object orientated coding, because obviously, if you're into object orientated MVC, CF wheels makes a lot of sense. What about people who may be using another framework, perhaps one of those frameworks that are a little abandoned, like fuse box or mark to model glue, and maybe you got a legacy program, it was written that way, and you're thinking, Well, you know, it's safe wheels an option for redoing this program, modernizing it. So I'm using a framework was maintained instead of the framework was no longer maintained,
Peter Amiri 13:19
I think your your mileage will vary. But there are, when you look at, obviously, if you look at fuse box, when he I use fuse box in the day, as well, um, a lot of that had, you know, you had your actions that you would call and you had a certain way, you you create your URLs, so you're passing the action that you're going to call and everything, and we can take those, those, you know, fuses and actions, and they translate to controllers and actions and wheels. So, so I think there are ways to take existing code that's been perhaps written in a framework that's been abandoned, and extract the pieces, you know, all the gooey, UI stuff can be extracted and, and broad over. And, and this goes back to like, easing your way in, you know, you can, you can bring in an application and just just extract the the pieces and put it in the right place, so to speak, in a hierarchy and get the application up and running. And then is your way into, oh, what else does wheels have that I could potentially use? What's this? You know? ORM that it's that's built in? Do I want to use this? Oh, yeah, it makes things a little bit easier. So then let me start converting some of these queries to Rm calls, you know, so, so it eases your way into using a framework whereas, you know, you may have to start from scratch if you If you did it otherwise.
Michaela Light 15:02
Yeah, I mean, if you've got the your code already separated out between bits of the business logic in the model and the controller that decides what goes where and the views that are basically the screens or reports the app has then on a lot of these, well, I'd say all of the MVC frameworks kind of deal with that. And a similar, yep, you know, they separate things out. And the way, the analogy I use to people who don't use frameworks is it's like, you know how some people they have when people used to have desks offices had papers, right, I think some of us still have those things. Some people filing system for their desk for their for their paperwork was it all piled up on the desk, and they knew where every piece of paper was. But when someone else needed find a piece of paper, they would have to go through every piece of paper on the desk and probably make a mess of it. A framework is sort of like a filing cabinet. And you've got different drawers in the filing cabinet for the model, or the business logic and what the controller of what goes, what gets called from where and the views, what gets displayed. And you know, the different frameworks may have different names and different ways of organizing the framework, but for the filing cabinet, but the basic idea of separating things out is similar. So translating from a legacy of confusion framework set of wheels, is pretty straightforward. From an efficiency point of view, it should be Yep. Now this assumes that the person filed their papers in an organized way. And the views were put in the view drawer. Because I've come across fuse box apps, when we do legacy. We do a lot of work modernizing legacy apps. And sometimes people follow the organization. Other times they kind of slip SQL queries or business logic into their views. Or vice versa, they were outputting HTML out of the model code, and didn't really fully separate things out. So you may,
Peter Amiri 17:02
exactly I mean, one, that's a perfect opportunity to, to refactor some code and perhaps fix some of the, the logic in how the original application was created. But do it as cleanly as possible, you know, you don't have to undertake the entire thing is your way into
Michaela Light 17:26
it. First, first thing is to get the app up and running, then you can clean things up. I mean, it was like, it's like, it's very similar to moving to a new filing cabinet, right? It's got new modern features and what have you. But first thing is to move all the papers over, then you can see oh, this was Miss filed or, you know, this needs cutting into two pieces, or whatever the thing is, so yeah, very exciting. Now, you mentioned that there's been a bit of a change in who's working at CF wheels. Is it because I talked previously with Tom King and David Spaceman? His last name? bellandur? malinger? Yes, previously on podcast, and I'll put that episode in the show notes to people interested in that. And I think it was a few other people working in wheels behind the scenes. You mentioned to Adam before
Peter Amiri 18:14
Yeah. So. So what has changed is basically the people that were involved in the project, love writing code, like most developers, and they are still willing and available to give their time to the project. But they didn't have the time to, to, you know, manage the project and, you know, keep keep the momentum going on the project, if so to speak. And when the call came out, that, you know, they're looking for, for some additional help, and, and, and things kind of really lined up because one of my pet projects was the CLI. I was, I had gotten involved in early March with Tom to take what he had created as far as a very alpha version of the CLI. And try
Michaela Light 19:22
just that. Just to interrupt for people who don't know what a CLI is, what is a CLI so it's the
Peter Amiri 19:27
command line interface. It's when you can go into coldbox and issue a command and that command does something for you. So what what we what coldbox allows us to do is you can open up called box and say You mean come on box? Yeah, I'm sorry. I'm sorry. command box. I know they have so many folks. So you can open up command box you can say wheels, space, just generate space app and give it a name. And it will install and instantiate a CF wheels app for you in the directory. So, so that that command line interface the all the commands that you can run inside of command box was a project that Tom had started a few years back and and never finished. And it never, he didn't have time, you know, to spend on it. So I had gotten involved in doing that. And, and it was I had, you know, several years ago, actually, I had the the notion of writing a CF wheels book. And I had contacted Michael Hardell, who is an author in the rails camp. And he has written several books in on Ruby on Rails, and he's got one that is the web application development or the Rails Tutorial book. And it gets great reviews. It's been translated into many languages. And through that translation process, I had at one point, like three, four years ago, contacted him and said, Hey, Michael, do you mind me using your book as a basis to write a CF wheels book, which is, you know, a framework for ColdFusion, modeled on Ruby on Rails? And he said, No, no, no problems, go for it. But when you open up any rails book, one of the first examples is go into the command line, issue, this command, and then the application starts and then do this, and this, you know, to database migration. And this starts and, and those are tools we didn't have, on the ColdFusion. Side in 2005, when, when wheels was being created, you know, it wasn't until orders and they've done a wonderful job for the coefficient community brought some of these modern tools to our environment. So we can have a workflow that is similar to other applications, so other other environments. So that's kind of the mindset. So every time I would think of this, I would say, Okay, I need to have this command in the CLI completed. So I would spend some time doing that. And it got to this point that every time I want to write something, I would have, you know, tangent on tangent, on tangent, to fix these things that I wanted to have in place, I could do that. And, you know, we were, we had gotten into this cycle, Tom and I were to make a change, I would submit a PR, who would accept that change, then he would have to create a new version of the CLI upload that to forge box. And we kept going like this. And finally, I think he got tired of me submitting the PRS to him, and he made me a committer on the CLI repository. And that's kind of how it all snowballed that, you know, I became a committer on the CLI repository that got me involved in that I was I was pushing out CLI changes. And then I heard through the grapevine that Tom and David and the rest of the team are thinking of stepping back, and we're using CF wheels in my day job on a project and I want to see the project, you know, continue and prosper. So I said, you know, I wouldn't mind rejoining the core team. And they're, like, great. So that's kind of how it came about. It wasn't anything that I was seeking. But it's one of those things that,
you know, this is this is open source software, you don't like some how something is done, or you think you can, you know, add value, you step up, and now's the time where I could see doing that for the community. And then I've stepped up and taken over the reins and but I have the benefit of having Tom and David and Adam and pear, you know, in the discussions and having them still contribute to the project, which is great.
Michaela Light 24:30
It's excellent. I want to congratulate you for stepping up to help out here because this is something I've been speaking and writing about for over five years with the CF live movement. That you know, sometimes ColdFusion developers complain that oh, well why doesn't CF wheels do this? Why doesn't codebooks do that? Or why isn't ColdFusion better promoted? I just saying this to everyone listening. Everyone has to step up a little bit. Okay. understand not everyone has You know, enormous amounts of time or whatever. But we can all do a little bit, we could all tweet one thing about a cold call cold fusion thing we discovered we could all, you know, do a pull request on a project to help with the documentation or,
Peter Amiri 25:17
and what you just said that helped me with the documentation. And that goes in line with some of the changes that I've been able to implement. You know, helping with documentation is an easy on ramp to helping a project you know,
Michaela Light 25:31
and that could just mean you know, improving the language,
Peter Amiri 25:34
improving language improving grammar and fixing spelling's
Michaela Light 25:38
are adding an example adding sample code.
Peter Amiri 25:41
Yeah, exactly. So, so it all goes a long way. And, and if we want to see the platform that we use and love, continue to prosper, we need to step up.
Michaela Light 25:56
We'll be getting into Dr. Spock's prosper neck. Now, we talked about some of the, you know, Ruby on Rails type features that are in CF wheels, I guess maybe I missed this, but CF wheels are sort of a play on words of Ruby on Rails, right? Because Rails is a framework that sails trains have rails and cars have wheels, so it's,
Peter Amiri 26:23
so it was supposed to be ColdFusion on wheels, to be like Ruby on Rails. But then, you know, at the time, you know, 2005 ish, when this was envisioned ColdFusion, the language and the product or one in the same, then we got, you know, Rylo and bluedragon. And now Lucy, as open source alternatives, you know, so now, the CFX, kind of, you know, it refers to the language more than than the product. But that's kind of where it all came from this cold fusion on wheels, to mimic the Ruby on Rails.
Michaela Light 27:06
Makes a lot of sense. So let's just talk a little bit about some of the cool things that are already in CF wheels. And then we'll come back and look at a potential roadmap for exciting things coming down the road, or in real. So tell us about what what the major of cool things are in in CF wheels.
Peter Amiri 27:28
So the CF wheels, gives you a routing engine. And what a routing engine basically means is, it gives you the ability to take the URL, which is the you know the address of any particular action, or page of your application, and translate that to a controller and an action to translate that to an action you want to get instantiated within your application. So the routing engine is the one of the core features. And it's got what's called the RESTful routing engine. So you have the the HTTP verbs, get put, delete, push, and post, patch, there you go. So So it allows you to utilize the entirety of the verbs. So So routing is one of them. So just to step
Michaela Light 28:40
back, let's make it a little more practical because it got a little theoretical computer science. And it's very cool. So basically, if you've got your app, and someone hits the submit button, you don't have to write a whole bunch of code. There's a there's a kind of routing engine or routing table that says, hey, this submit gets to do this post submit action to insert the data or whatever the action is.
Peter Amiri 29:08
Yeah. So that's one part of it the way if you're looking at it from the router side, you can go into your router configuration file, and you can create a resource. So a resource might be a blog post, you know. So when you define one single line, that creates the seven routes that you need to do your CRUD application cried in this case being the create, update, read and delete. So it allows you to it gives you a a, a best practices way of creating your URLs such that they're staying under, in the industry, you know, so, so one single function call added to your routing, configuration, you know, you get all of that added. So then your your, how you call your forms, how you call your index pages are all of those specific URLs or restful patterns are created for you out of the box, and you didn't have to do anything to do that is just one function call, that creates a resource for you. So, so those are the one of the things that we always, you know, fall back on and see if we also is the framework is there to make the developer's life easier. So the developer can was a few function calls or a few lines of code, have the framework do a bunch of things for them. And that's, you know, that's why we use ColdFusion. To begin with, you know, you compare sending an email out of ColdFusion, versus sending an email out of PHP, you know, 15 lines of code versus one function call or one tag call, and cold fusion, you know, so those, those that same metaphor of making the developer's life easier, is is how I look at CF wheels and the, you know, the benefit it brings to the developer.
Michaela Light 31:28
Cool. So less code to write. And yeah, more clever, and your standard ways to use it. What other cool things are already built into CF wheels.
Peter Amiri 31:40
So the the other part you mentioned is the ORM. So our Object Relational Mapper, kind of precedes the ORM, that's built into ColdFusion. And that lives on top of hibernate. And I think Ortus has a couple of box projects around that actually, actually, those aren't, those don't end. But with box that I think it's the queue is quick, quick, there you go. So, so there are one or RM allows you to do is you can create your, if you think of your your data model as an object, like going back to our post that I mentioned, you have a post, you know, find all it brings back all the records for you in and you didn't have to write the SQL code to do that. One method is one benefit of having an ORM is the fact that it makes the developer's life a little bit easier, you don't have to write the low level SQL code. And the secondary benefit that it gives you is that if you do change, you know, your data layer, you don't have to rewrite all those queries. Now. Granted, most applications don't change their database too often. But if you are writing a SaaS product, or if you're writing a box application, and you're allowing your end users to use their database of choice, you know, whether it be SQL Server or MySQL or Postgres, you wouldn't want to have three sets of code in your application, depending on what the end user decided to use you, you'd hopefully be able to create your application in a single code base, and have the framework, you know, with its adapters and everything, model that and, and allow it to speak to a Postgres database just as easily as it could speak to a SQL database, or SQL Server database. So so that's, I think, one of the benefits of arm it, it's a two, two sided benefit, it's, it makes the developers life easier. Again, there's that, you know, going on that tangent, as well as allows you to perhaps, you know, have a single codebase that that manipulates or hits multiple databases and an easier way.
Michaela Light 34:23
That's so great, that does that now, what about if you if you change the database to see if we help with migrating at all?
Peter Amiri 34:34
We yes or no? So if you if you embrace the, the database migrations pattern that that we have built in, then yes. But if you hand code your SQL changes, then you'd have to hand code them on the other side. So and let me back up and kind of Explain what what I just said. So there is a mechanism where we call database migrations, what does that really mean? Well, it's a way to define encode the changes you want to see happen in your database. So if you want to create a table in your database, you would define that in code that gets checked into your source repository. And can can be defined as a time in place, what your database should look like, as as a time in place with the rest of your code. So that gets checked in. And then when, if you do this religiously, and you keep your hands off of your database, and define everything in an A, in database migrations, you could instantiate a brand new database by just running your database migrations against a new database. Wow. So So yes, if you do buy into the Kool Aid, you know, if you drink the Kool Aid, then then everything's great. If you want to, you know, and in some environments, this may not work in some environments, in a major enterprise environment where you have, you know, DBAs, that have their fiefdom of the databases, and the developers are in a different place, and you kind of throw things over the wall to the DBA. And the DBA, throws a message back, saying that, you know, it's done, you're not going to be able to have much benefit out of database migrations, either through CF wheels, or any of the other DB migration patterns and the other frameworks out there. But if you are, again, a consultant, try trying to get the most bang for the buck and trying to build applications and, and basically affect change in for your client. This is a great metaphor to, you know, keep your hands off of the database, just keep doing things within database migrations, and then you can recreate that database or or put it on the live environment very quickly, or change environments very quickly.
Michaela Light 37:15
What about documenting your app? Is there anything that CSS helps with that? So
Peter Amiri 37:23
we use a documentation style, I think it's referred to Java Docs is a metaphor. And if you put a particular pattern of comments above your functions within your code, that pattern is recognized and and a documentation is built automatically for you. You can see some of this, if you go to the CF wheels.org site and you go to the API. So I think it's api.cf wheels.org. That's API, that's all the functions within the, the the CF wheels framework. But the beauty is that that's all built automatically. That's all built because of certain java doc comments within the code base. And if you adopt that pattern, and you document your own functions, that way, then you get to see your functions inside of that API, you know, Gui, the same way. And, and the Docs is kind of built into the framework. So just the other day, I was flying back across country, on a plane. And typically, if you're using a framework that relies on you going to a website to look up documentation or, or you know, the API functions, you're out of luck, if you're, you know, 35,000 feet up in the air. But with CF wheels app, as you're developing, you have that local copy of the docs that runs the same code that api.cf wheels.org is running, but it's running it on your local code base. So then you can augment the default documentations with documentation of your own functions, and then your own application, which is a great way to kind of document what what you're doing and why and so forth for you know, for the next developer that comes up behind you, for yourself, that comes back to the code six months later and can't remember why you're doing something. So it really helps out.
Michaela Light 39:41
And then the documentation that is more likely to stay in sync when the docs are coming from comments straight in the code or exam, not a full guarantee. You mentioned that the CF wheels API when I looked at that briefly, I put the URL for that in the show notes but I'm a little confused. Is that the like atomic component minutes to see if wheels that you can call separately if you want to.
Peter Amiri 40:04
Exactly. So the RRM functions defined all if you if you do a search, if you're on that site and do a site search for fine, you'll see there's a find by key, find all find one, these are all different functions that wheel's has built in that you can very quickly figure out, oh, this is what I need. Another function that I use a lot is like the link to or the URL for. So if you imagine building an application, and you have to have, you know, your links from one page to another page. And at some point in your white, wonderful wisdom, you say, You know what, it makes sense for me to refactor this code, pull it out of this controller and make a controller for itself or make another action for itself. All wonderful things, you know, you want to keep looking at your code, refactor and leave the code better than you, you found it, you know, when you came to it, but if you did that, and you hard coded your URLs or your paths to the next thing, you may have a lot of things that you have to rebuild, you know, and, and if you don't have testing, that checks are those and finds them, you may find that you have a lot of broken links in your application. But if you use a function called url for, and that's a function that the link to function calls internally, you know, you can say, call this route. And if that route changes location, it doesn't matter, they call this action. And if that action is now taken out of the controller, it's in and goes to another controller, it doesn't matter, the framework will, will create the path to the end location for you automatically and updated if things change, if you have, you know, the pattern of sometimes referred to SES. So the search engine optimization URLs, where you take the index dot CFM, out of the URL, and you know, you have your domain slash controller slash action type of model, if you ever change those, or are what have you, and you hard coded those those URLs, you'd have to go through your code base and change that. But if you use the built in functions or tools that wheels provides, those automatically get updated. When you change, URL rewriting, from on to off or OFF to ON, it automatically updates all those things for you.
Michaela Light 42:57
Cool. Now, does wheels might force you to do everything the wheels way, or can you do kind of a bit more hybrid development where you know, you can
Peter Amiri 43:08
definitely do hybrid developments. Case in point for the first year or two of me using wheels, I religiously avoided the RM because I couldn't wrap my head around around that at the time. So yeah, you can you can take a particular portion. If you don't, you know, you don't want to use the models or if you don't want to use the rm, you can hard code those things, if you're more comfortable with it, and an easier way into using more and more of the framework as you learn and you you know, you get more experience with a framework.
Michaela Light 43:45
Cool. Now, I noticed on the CF wheels website, there's a section for plugins that are all hosted at Forge box the Fortis you know, open source, Yep, yeah. Add on stuff. So what's a plugin for CF wheels?
Peter Amiri 44:02
A plugin is a mechanism that was built very early on for you to augment what the framework what you want to see in the framework. So so there are plugins for things like the bcrypt plugin is one that comes to mind there's there's specific functions that people would have liked to add to the framework. And actually, like the DB migrations that I was referring to earlier, that started life as a plugin that somebody in the community wrote, and as it matured and matured and matured, then it was brought into the core and added to the core codebase so the plugin method method, methodology allows you to add functionality to the core CF wheels on that you may want to add, it also allows you to overwrite the functionality. If you want to see one of the functions or an area of the framework, do something a little bit different. You can do that through a plugin metaphor as well. So the plugin metaphor was was created preceding command box and forge box.io. So around the 2.0 days of CF wheels, that's when we took the plugins and re architected it to be able to use modules that get installed off of Forge box. And instead of creating, maintaining our own list of plugins that people would have to submit to us, and we kept a website updated with oh, so and so publish this plugin. Now all of that is done on forge box. And there is a category of CF wheels plugins that people can contribute to forge box, and it automatically becomes available to everybody with a single command, you can install those plugins into your CF wheels application. So if you go and do a search for, you know, CF wheels plugins, you'll see 3540 types of plugins show up. These are things that people have written along the years to, you know, make life easier or expose something that CF wheels didn't have, but they need it in their project.
Michaela Light 46:36
Oh, that makes sense. Instead of kind of loading up and bloating the core with a whole bunch of stuff, let people add things in and share them out. Great, the you're using forge box to do that, because that way, you've got the package management, and it helps promote forge box, which is a great free. Exactly, exactly. site for ColdFusion. You know, pack packages. And the other advantage is if the, if the plugin gets updated, you know, it can automatically if you choose to get the new code downloaded for you by doing that. So, yeah. What about you mentioned that the CF wheels community earlier? Tell me a bit about
Peter Amiri 47:17
that? Yeah, so. So obviously, the the framework has been around for a very long time. And, and as most, you know, open source projects, people come in and out of the project and the community. But there's people have been using the framework in their app development, you know, lifestyle or workstyle for many, many years. And so we have some very, you know, long time users of the framework, and the community, the way the community kind of communicated was through a Google Groups back in the day. And, and slowly the Google Groups was, was deprecated, and other tools came about. So we've recently adopted the discussion capabilities of GitHub. So GitHub discussions is where the community communication hub, the forum, the forum has kind of moved to the they went from, you know, the the mailing list type of approach to having a website type of approach. And, and we started that, if for two reasons. One was to try to get the discussions closer to where the code is. And we've seen that the benefit of it where now, with when a discussion is started, people can tag a particular line of the code or a particular the right directory, or what have you within the code base, and, and you can meld back and forth between the code and the discussion. Or, you know, yet and just like any other open source project, you have people that open up issues, and we'd love to see that. But sometimes those issues require more discussions and within the GitHub platform, you can take an issue and turn it into a discussion where it can, it can, you know, have some collaboration, some discussion, some consultation going on on it, and then when there is a better sense for what we want to do, you can turn that back into an issue and open up an issue in the project. So it lends itself to this. And and one of the other things that it gives you is being able to mark an answer as Hey, yeah, this is this particular response answered my, my original question. So when you're looking at the list of questions or discussions in the on the page, you say, Oh, this one's been answered. That's exactly what I was looking for. And at the end of the day, the things become more searchable by by, you know, I like to be agnosticism say, by search engines, but we all know it's Google. So
Michaela Light 50:34
Well, so far, right? Yeah, maybe, maybe one day, there'll be other search engines. There are several initiatives out there. But that's a topic for another day, I think. And I do think it's important that cold fusion discussions are searchable, because a lot of people when they criticize ColdFusion, they say, Well, no one's ever talking about it. Well, that's because all the discussions are in Slack, or in a private Facebook group. And you can't, they're not searchable by Google. So people search for the problem, and they don't find anything. And they think that means no one's discussing it, which is true. But by moving these to GitHub discussions, I think that's a genius move you've made there. And I encourage other ColdFusion, open source projects to use that or something similar. I know the autist folks moved off to I think it said discord, or discuss or something of that nature.
Peter Amiri 51:29
Yeah, they're moving to a forum style. Metaphor as well, right now, I think they're double posting everything, which, which takes a lot of time and effort. But yeah, that's, that's what they're trying to do. And I think it's great to try to, you know, being able to, there's a benefit in Slack, you know, you can you can post a question, to Slack, and get, just in time instantaneous type of responses. If you post appropriately if you know, all these things that you're in, if you're in the right group of friends, then you can get just in time responses. But there's an I would venture to say, you know, a lot of us may come across a problem, and we want to search the history. We want to search. Has anybody else seen this? Has anybody else come across this, as somebody else, you know, has a solution for this. Those are the things that are less, you know, likely to get answered in Slack. Because unless that person that faced that problem in the past, or has a solution for that problem in the past, happens to be on Slack. At the time that you ask it, you're probably not going to get the answer that you were looking for. But if we put it in a metaphor that gets logged and searchable, and archived, then you know, it becomes available to the community at large.
Michaela Light 53:04
Yeah, and if there's someone who helps clean up the discussions, and they point to related discussions, or you know, Community Manager is one thing. I don't think CF wheels has that unless you have that hat as well.
Peter Amiri 53:18
Well, I have many hats at the moment. So we have that capability. Obviously as as the owner of the repo, we we have the reins of that and being able to manage it and and and guide the discussions and what happened. Okay,
Michaela Light 53:37
great. No, I'm not a fan of slack. I understand it provides immediacy also, people make friendships there, there's a bit of banter back and forth. But to me the disadvantages that it's, you know, not searchable through search engines, that the history drops, or after a few months, the history disappears. So people keep asking the same questions over and over because they can't find it. And then the other thing, even though it has, you know, you can have different channels, each issue typically the way slack is used all the issues interleaf with each other, someone's asking about problem A someone else's asked about problem A someone else is answering problem d from yesterday, and it's a total, you know, I won't use the root word there, but it's very hard to follow. And I do I am fully aware that there are discussion threads or whatever they call them in Slack for it's not really a true threaded discussion where it's kind of like a sub sub channel.
Peter Amiri 54:40
Yeah. And, and sometimes
Michaela Light 54:42
people forget to use it. Yeah. So
Peter Amiri 54:44
people, people that use it are great because it kind of does create a threaded discussion or you know, it's a side discussion is better way to say it, but then it becomes invalid. Bill to you if you're just writing in, you know, so that's those are. Those are why I think, you know, we opted to go there and, and you know,
Michaela Light 55:11
yeah, great move. Now, if I could get my Gandalf magic wand out over the community, it would be let's migrate from slack to some other discussion, thing thing that provides those solutions that you've got with GitHub, whether it's using the GitHub discussions or something similar. It just has so many advantages. So anyway, I'm not sure who to talk about with that, because it's like a community thing. And it requires momentum to get people to change people. Most human beings don't like change.
Peter Amiri 55:47
Exactly. Yeah. So let's go ahead. No, good.
Michaela Light 55:51
Well, let's talk about that you're using another git feature. So GitHub has lots of cool features for open source. Another one is get books, which I know autists have used for some of their manuals, and you're using this for a CF wheels book, is that right?
Peter Amiri 56:04
Yeah. So so when I took over the project, one of the things I wanted to do was make it make it easier for people to, you know, submit, or submit changes, or help out the project. And like we said earlier, sometimes one of those early on ramps for people to get involved in open source project is to help on the documentation side. And, and the other part of this, as putting on my maintainer hat is get when you get PRs for code changes from people. And those code changes affect the docs, you want to get those things in the same PR, you don't want to tell you're, you know, open source is it's hard to pull PRs out of people to begin with. So you don't want to tell someone who's spent the time and effort to put in a PR, a change for the project, and then say, Oh, by the way, can you go to this other platform, create an account, login, find the page of the documentation that this refers to, and make a change in there, too. And submit that for me, you know, that just never happens. So by moving the docs or the guides, as we call them over to the same repository, and and then, you know, moving into GitHub was a no brainer. And using get books to format the pages, and everything was a no brainer, move again, within the same repository, it was another level of thinking that had to go through because what I wanted is the ability for the submitter, or the other PR to be able to submit changes to the docks and changes to the code and the same PR. And, and we've seen that happen, since we've gone over, we've seen first time committers that are fixing, you know, misspellings or broken links on the docs, which is great. And I've seen commits a PRs with attached guides changes within the same PR, which, which is exactly what we want it to see.
Michaela Light 58:35
That's great. People can do those both together and be and this book is like an online book, or is it? Yeah, yeah. So a PDF or what? How does that work?
Peter Amiri 58:45
Yeah, exactly. So if you go to guides.cf wheels.org, that's basically been built off of the, the the guides that are within the repository. And on every page of the guide, there is a change me on Git GitHub button. So you can press a button, it opens you up to that particular page, I can make whatever changes you want submitted as a PR right there. Or there is a button to download a section a page or the entire book. And if you download the entire book, I think it's like 800 pages. So Oh, my goodness. Yeah. So so there's the guides have been built up through the years. But if you download it, you know, you're talking about evasion on major volume of material or documentation that's that's available to
Michaela Light 59:43
great and it can you get a print version of the book as well.
Peter Amiri 59:48
We don't have that yet. I know. I've reached out to two orders because they there is actually a a coldbox module that takes a get get book extract and creates a, a printed book from it. But it uses an older version of gitbook. So the newer version has a different format. So I can't use it for hours. And I've looked into it. But you know, at the end of the day, if if all you want to do is get a PDF document, so you can put it in your, you know, your iPad or your e reader and have it with you debts available. It may not be as nicely formatted as a, you know, a typeset. Book would, but but they've told me I've you know, I've reached out to get book folks, and they've said, you know, we're working on it, we're aware of it. We know it's a feature that was in the last version, we don't have it in this version, eventually we'll get there. So I'll wait for that one. As long as that's the priority for me. At this point?
Michaela Light 1:01:05
No, it makes sense. Do you want to tell us some some of that you've done a lot of pie, you kindly shared a list of all the things that have been done in CF wheels since March, when I guess you kind of became the front? I don't know what what title Do you have, you're the evangelist for CF wheels.
Peter Amiri 1:01:23
And the evangelist. And if you want to use the open source, naming convention, you know, I'm the maintainer of the project, I'm the person that has the keys to the repo that can invite other people to have access to the repo or I can improve the PRS and maintain it and everything. So, you know, I'm, I'm right now the front guy, as well as, you know, getting getting evangelism of the project, doing interviews like this to make more people aware of the project. And, and what have you and, and some of the things that I've been able to do. You know, one of the things was, we talked about the CLI, the CF wheel CLI for command box, that was a work that was already in progress, I was able to finish that and bring it out. And, you know, getting the very first version of what I had my mind around out, and then later on, kind of getting it to the point is, hey, this thing's mature enough to be called 1.0, we can take the beta label off of it, that was done. Getting some example apps, so one of the hardest things with wheels was how do you share a an application? Because you don't want the application that you're sharing to have the core files of the of the framework in it. And and that that whole notion of, oh, if I, if I do this, then I have to check everything into my repo. Well, you know, I like to see a more modern approach, which is, you know, having dependencies. So you have your repo, which is your code, and then it's dependent on CF wheels, 2.5, let's say and, and, and it when you first install it with command box, it will download CF wheels, 2.5 from Forge box for you. And you didn't have to check that into your repo. So So I came up with a structure for how the templating should work, how we can separate the code, the core code from your actual application that allowed us to publish things to forge box. And then we went through our whole back catalogue of versions of CF wheels and republish them. So someone could theoretically, you know, create a CF wheels 1.0 app right now, because there's a module, you know, checked into forge box, that is the CF wheels, 1.0 module, you know, so, so we did all of that. Some of these other things. So that was like embracing the whole forge box packaging metaphor.
When I took over the project, there was, like I mentioned a year and a half to two years worth of development work. That was in the GitHub repository that hadn't been released. So I wanted to release that as the next version, which was a 2.3. But before releasing that I wanted to update the whole CI pipeline. So the automated testing that would happen that end the packaging on public The sharing of a release to forge box that all is automated now. So I spent some time building that whole pipeline testing that whole pipeline. Then with the 2.3. Release, I took the one and a half, two years worth of work that had already been done, and release that. And we released it as a release candidate, because I wasn't sure whether my pipeline is gonna break or not. So we released that 2.3, which was all that backlog. And then we have sense release 2.4, which was, you know, the next quarter of changes and bug fixes and things that, you know, the community is submitting, and it's not all me. So that was done, then, you know, moving the guides to get hub, and get book moving the API. So the API is a separate application, that API that you see the guides is, is a separate application, the dub dub dub the landing page of the site as a separate application. None of these were actual projects or repositories in our GitHub, some moving all of those to be more more transparent, as well as allow people, Hey, if you see a typo on the landing page, yeah, submit a PR, and GitHub for the dub dub dub
Michaela Light 1:06:27
presets. The whole, the whole CF wheel site is, first of all written in CF wheels. In other words, you eat your own dog food, exactly. And secondly, it's all open source. So if people see something they want to improve, in that they can do a pull request, and it will someone else there will check it out. And if it's good, you will approve it, and the facts will get made. That's great. And I also provide sample apps for people right? Like, see how you, you architected those things.
Peter Amiri 1:06:54
And one of the other major things we're able to accomplish is basically providing a mechanism where people can sponsor the project, and provide funds for the project. So we, we joined the open source collective, which, you know, some of the other members, Vue. JS is on there, the Lucy sociation is on there. And, you know, host of other open source projects. So what that allowed us to do is basically get some funding. And we have a handful of people that are providing funds to the project now. So we have a purse of funds that we've accumulated over the course of the last several months. And that allowed us to create what I call a bug bounty program. So some of the bugs that are still in the repo that are, you know, they're, they're still considered bugs, because, you know, they may be an edge case that one person has run across, but it's a still a bug, but we haven't had the time or the energy to eradicate them or solve them. I put a bounty out there. So if people are looking for a way to make a few dollars, you know, there are bugs in the repo that are flagged as bounties. And we've gotten a couple of takers on that, which is great, you know, so, so it's unless you get,
Michaela Light 1:08:30
you'll get a terminal fame and fortune. A bounty bug?
Peter Amiri 1:08:35
Exactly, exactly. So these are, you know, some of the things that we've been able to do since the project, you know, since I came on board, and, and, and, you know, I'm probably not going to be the one that's going to commit a lot of code to the project. But I can provide structure, I can provide management, I can provide evangelism, and try to get more people involved in the project. You know, if you, if you and I think you and Gavin were recently talking on another episode where, you know, and it, it shines true. When Ruby on Rails came out, there weren't that many Ruby developers out there. People became Ruby developers in order to use Rails. And that's the way I view our framework. If we have a good enough framework, people will want to use the language it's written in, in order to use the framework. And, and, you know, we all know you know, we were using a 30 year old language, it's not the sexiest kid on the block. And, and if we don't have a mechanism or if we don't have a reason to pull new people into this community, you know, eventually everyone's going to look like me losing their hair and everything is white. No, and we have a lot of old timers in the ColdFusion community because of that, that, you know, those of us that started with the language, in his early years, when you couldn't even call it a language. I mean, I think it was cold fusion 2.0, where we got the variables, you know, if you didn't even have variables before 2.0, we were able to, you know, create a variable and set some elements equal to that variable. You know, we've come a long way, from from those early days, but, but those of us that like cold fusion, and are still in it, you know, we're doing dealing a lot. And we need to figure out how to entice people to come in and use this language, not because of the language, you know, there, if we approach this from a language perspective, there's a lot better languages and more modern languages and things that have been designed in the past 20 years that will trump ColdFusion.
Michaela Light 1:11:07
You know, ColdFusion has been kept up to date. And yeah, yeah, every release of blue sea or Adobe ColdFusion, they look around and see what will be features that ColdFusion developers need, or maybe other languages have.
Peter Amiri 1:11:21
Exactly. So and that's a testament to the maintainers of the engines. And it's a testament to the community that that is able to take advantage of and kind of demand that the engines bring these features for us. So
Michaela Light 1:11:41
yeah, you know, I think one of the, for me, one of the good things about both Adobe and Lucy is they're, you know, they don't just add in every feature that they can think of, you know, you get a bloated kind of Microsoft Word type thing, where there's so many features, it's hard to use the features you actually want to use, you know, generally they try and think what's an intelligent way? Does it make sense to add this to the core language? And you probably have the same issue. Let's see if we have Should we add this to the core framework? Or should we make it a plugin? Exactly. So I think fusion has done a good job of how can we make it simple to use like the CF male tag you mentioned earlier, which has been around for decades now. But it's a great example of making up. You know, the honest sending email, as you said, if you write it in other languages, you're talking maybe 10, or 15 lines of code on a third party library. It's not straightforward. So confusion often makes things straightforward. And I think, see if we also on top of ColdFusion makes it even more straightforward. Let's talk about the future of CF wheels. Are there any things that you I know you said, you're you're drafting a roadmap with you together with the CF wheels community? Because it's not like you're Moses coming down from the mountain with your 10 commandments of what's going to be in CF wheels? But can you share? You know, some ideas? You've heard that you think, yeah, that would be cool to add into CF wheels? version three?
Peter Amiri 1:13:07
Yeah, so So two of the things that we're looking at, very intently. One is this notion that and, and a lot of it really goes back to our lineage, when, when we modelled CF wheels over on Ruby on Rails. Rails was a monolithic type of directory structure that got installed, and then you plug your code into various locations, and there was your app. With rails 3.0. I mean, they're, they just released seven. So I know, we're four points behind, but with Rails 3.0, they took a lot of the monolithic structure out and made each of those things, their own modules in Rails speak at third called gems. So when you install or instantiate a Rails app, now, it goes through it and installs, you know, 40 or 50 gems, which are needed to build this application. That's one of the things I have in mind for what the next major release might be is that we take that monolithic approach and try to slim it down into individual packages, that would be you know, hosted on forge forge box, that when you instantiate or create an app, it downloads all those packages for you, and then, you know, installs them for you. So if we did that, then perhaps some of these packages could use other packages. So this kind of leads into the discussion of another sore spot in the framework is testing and the de facto standard tool in the code fusion community now is called Box test box. But test box wasn't there in 2005, when we were building, this box wasn't there in 2007, when 1.0 was officially released. So so we, we created a testing metaphor, based on another testing framework at the time, which is no longer supported and has long gone. So we're looking at, okay, what would it take to strip out deprecate the testing metaphor that we have right now, and use test box as the testing metaphor? So that's another one of those, you know, this makes sense for 2022. And, and how others in the coefficient community are testing the applications now. So that's, that's another one of those things, and then the mental stretch of doing this, okay. So if we're going to do this, if we're going to turn a lot of things into individual modules, and instantiate them are installed them, and the framework kind of does this, then we get into this, you know, dependently, in dependency injection, or di type of framework? Well, why are box is the de facto standard on that for the coefficient community. So it doesn't make sense to use wire box versus the, you know, in the home, built stuff. So, so kind of taking a step back and seeing where does CF wheels differentiate itself? And where can we use other open source projects in the community? Where then, you know, the core team that is involved in CF wheels doesn't have to maintain everything? You know, it could theoretically make an argument for getting rid of the RM and using quick, that that may be a possibility in the future, it's not right now. But these are the types of dialogues that we're having internally to see what makes sense, you know, does it make sense to undergo this major re architecture work, when the handful of people that are using it would never use those technologies. But it makes some of these do make sense, you know, testing is a sore subject, there's a whole movement of, you know, separation of your code versus the core code and, and where that lives, whether it lives in the web route, or whether it can be moved outside of the web route, right now, you don't have the freedom to move things around as well as we would like. So that's another one of those things that, that we are looking at. And we have some some code, you know,
some branches in our code base that that implement some of these things. So it's a matter of figuring out, you know, what do we want the next major version to be? And we're having that discussion internally right now, to try and get our head wrapped around what we, where we think the project should go. And then we'll take those discussions, once we have a better frame work of what we're talking about, we'll take them to the community on the discussions board, and try to get input from the community and see, okay, you know, these are the top 10 things that we've thought of which ones do you want to see implemented in 3.0, which ones are further out, maybe they're a 4.0, or 5.0 type of thing. So that's, that's kind of where we are. I kind of spent the first few months of being involved in a project, doing some of those administrative tasks, you know, moving the projects around, moving the repos around, getting the funding set up, setting spokes, the sponsorship, set, elbow, all those types of things that take time and effort, but they're not really adding value to the codebase. Now, we're kind of shifting into that that timeframe where we're having the discussions of what we want the codebase to look like or evolve in the next few versions of the project.
Michaela Light 1:19:24
Now it makes sense to put some structure in and work together with other open source tools. So I think you're doing great things there, Peter. I'll just throw out some other ideas that you may already be doing just to mention. One is Lucy six is about to come out loose. Adobe ColdFusion 2023 is probably going to be announced in Las Vegas in a few weeks. That's my guess is not on the inside. Just based on previous Adobe behavior generally every other year at CF summit in Las Vegas, they announced the new version. So do you do To test, see if we have on all the different versions of
Peter Amiri 1:20:04
fusion. So we're testing against 10 different permutations. So we test against Lucy five against SQL Server, Postgres, MySQL, and h2, which is the built in database that's in lucee, that anybody can use for local development. And then on the Adobe ColdFusion, side, we're right now testing 2016 2018, I haven't had the chance to sit down and write the, the 2020 20. And like you said, and a couple of months, we're probably going to have a new flavor. So I'll probably be doing that. But every single commit to the repo, so whether that's an internal commit on a on a branch, or it's a PR, gets tested against these 10, the matrix and and we see, you know, what, what breaks, what doesn't break? We kind of I think 1300 1400 automated tests are right now, in in that matrix that's happening. So every commit is being tested. If you take five times time span, you know, 15,000 tests, and permutations are happening. Before we say, Yeah, this was a good PR, or good commit or what have you. So So yes, we, we have the framework and the pipeline in place, we need to add a few more permutations to our matrix. But it'd be easy to
Michaela Light 1:21:39
maybe that's, maybe that's something someone listening could help out with
Peter Amiri 1:21:44
wonderful. Yeah, I would, I'd welcome it that the biggest thing is, you know, wrapping my my personal head around, because I don't, I'm a big Lucy. User, I'm not a Adobe ColdFusion flavor user. And I haven't wrapped myself my head around the packaging metaphor that they introduced. So now when you install Adobe ColdFusion, because the entire pipeline works off of Docker containers and everything, so it's no big deal for me to add a another, you know, another four characters to my my config of my CI pipeline, and lo and behold, it will instantiate and install a Adobe ColdFusion 2020 instance for me. But I know that I have to mod I think
Michaela Light 1:22:38
you meant Adobe ColdFusion 2021. There. Yeah. 20 To get the name.
Peter Amiri 1:22:43
Yeah. So so but my, but it, our pipeline knows nothing of package manager. So we have to add the code to instantiate and install all the packages individually on it, as well. So, so that's what's kept me from doing that. But oh, well, but you know, I've been busy.
Michaela Light 1:23:05
Yeah. Do you have one of the things I know Adobe does really well on their QA is they get at applications in the wild, you know, have been written in ColdFusion. And they have, you know, half a million lines of code collected from customers under NDA where they run new versions of ColdFusion against this legacy code. Because not everyone coats things beautifully and perfectly. Yep. And they want their code to run great, even if it's, you know, spaghetti code, or if it's, you know, coldbox code or CF wheels code. So two things I'm thinking of, first of all, have you given a good size CF wheels app to Adobe to write to add to their test suite? And if not, that's something to consider doing? I definitely insanely we Same. Same for the Lucy guys. I don't know if they have that kind of practice or not encouragement to do that if they don't, because you know, code in the wild is different from theoretical academic code you might have. And then the second way is turn that the other way around, and collect CF wheels apps that people have written, that are real world apps that have begun and maybe have ugly bits in them. And just when you come up with a new release of CF wheels, you just run it through all those apps, make sure they still work. Okay.
Peter Amiri 1:24:26
Those are great ideas. I mean, a code escrow type of thing, all under NDA, but giving us the ability to run things and test things on new versions. Yeah, that's and so if any,
Michaela Light 1:24:39
if anyone listening has has a big CF wheels app that they'd like to do that please get we'll hand out Peters contact info Lee wants to share. You know, you could submit that and the benefit anyone any company listening is that your app would get tested first. So when a new version wheels comes out, your app won't be broken? That is the I mean, hopefully no one else's app will be broken either, you know? Exactly, exactly. And then the only other suggestion I have, I don't know if you've played around with fusion reactor for looking at code performance, but that might be something to contemplate optimizing CF wheels a bit, finding out which the slow bits are.
Peter Amiri 1:25:19
Yeah. And, and I know, historically, fusion reactor has been used when 2.0 was being, you know, what's in the oven, so to speak. So the whole the whole plugin work was was tested extensively with fusion reactor. So I now use it on a day to day basis in my own coding practice.
Michaela Light 1:25:47
Excellent. Yeah. And one other thing that fusion reactor together with one of the autists tools lets you do is code coverage. So it might be interesting six, maybe some of that CF wheels code never gets run.
Peter Amiri 1:26:00
Yeah, exactly possible. Yep.
Michaela Light 1:26:03
I know, in most apps, usually, you know, maybe 30 to 50% of the code is never ever run. It could be looking with hidden bugs or security flaws you're not aware of,
Peter Amiri 1:26:17
and putting on my maintainer hat again. Those would be great things to extract out of the core, and turn it into a module plug in, you know, so genius. So we don't, we don't always have to go one way where we load the core, we can look in coach cover agency, you know, you know, this part of the app rarely gets used. And we can extract it out.
Michaela Light 1:26:44
That's a brain idea to slim down. Yeah. So if folks want to find you online, what are the best ways to do that?
Peter Amiri 1:26:55
Probably the for the, for my work as far as CF wheels is concerned. Go to CF wheels.org. We have the discussions. We have the Twitter. It's I think it's called Fusion on wheels. And my personal Twitter, Peter Emiri, or BPM airy. So the the website, see if wheels.org and GitHub are probably the easiest ways, go into the discussions and grab a hold of me. I'm on the slack. CFML slack as well. You can always hit me up there as well. Cool. Well, thanks
Michaela Light 1:27:41
so much for coming on the show Peter excited about what you've been, you've been doing together with the other guys, CF wheels. You know, it looks like this isn't your father's CF wheels. Speaker car slogan, there's a lot of cool stuff in there. And there's a lot of it. I was talking to a client of ours. You know, they have a CF wheels app. And they were a bit concerned. They hadn't been any updates for two years. And now they're all excited again that yes, they can carry on doing the CF wheels. stuff.
Peter Amiri 1:28:17
And that's what I hope will happen, you know, the more momentum and more mindshare that we could get, the more input we can get from people. So, so that's that's my my entire goal. I mean, we, we run our E commerce site on CF wheels, and we do a fair amount of transactions and dollars per year through it. And I like to see that continue. So what led me to step up in the first place?
Michaela Light 1:28:49
Excellent. All right. Well, thanks so much for coming on the show.
Peter Amiri 1:28:52
Thank you. Thanks for having me.
Transcribed by https://otter.ai