navarre.ai

ClarisTalk AI · the FileMaker AI podcast

Vince Menanno – Inspector Pro 10 for FileMaker Pro

September 3, 2026 · 73 min · Matt Navarre and Cris Ippolite

Vince Menanno, the Chief Innovation Officer at https://beezwax.net shows his latest tool to manage technical debt and help developers manage their FileMaker projects. This is the latest version of this application that so many developers rely on for information about their database. Who added this script? Who deleted it? Which objects are unreferenced? How many dependencies does this object have and where are they? Show me graphically!

Apple PodcastsSpotifyYouTubeAll episodes

Transcript

Transcribed by machine (whisper, large model), 11,759 words. Names and product terms are sometimes misheard; the audio is the record.

Welcome to Clara's Talk AI. We have a special guest today, Vincenzo Manano, who is a long-time friend of mine and of the community, and has authored this amazing program quite a while ago called Inspector Pro, which coincidentally has a new version that has come out. So Vincenzo is going to show us that, and I'm dying to see what you got. Welcome, sir. Thank you, Matt. Thank you for having me. Yeah, so let's just dive in real quick. This is going to be version 10, and so I think what I'd like to do is, because there's so much to cover and so many major changes, what I'd like to do is just- Maybe we can even step back, because like a previous podcast we've talked about, the way that a lot of people might remember this is, you know, a thing that runs on one side of one computer, you import your DDR, not save as XML, but anyway, you do it kind of one time, but then you've changed the whole world, right, in previous versions with the whole workspace thing.

Can you describe that part before we get into the new features? Yeah, so with version 8, 9, and now 10, it's on the new foundation. And so what Matt, I guess what you're saying is originally we were parsing the, you know, the DDR, Database Design Report, also XML, but just a different flavor of it. And what we were doing is every time you would run in Spectre, whether you run it locally or host it on the server, it would gobble up the whole DDR. So some of these DDRs can be hundreds of megabytes. I've seen systems that have XML that is gigabytes in size. However, with FileMaker 26- They changed the encoding. So it's UTF-8. So it's going to be much smaller.

So it's much more compact. And so anyway, version 7 and prior to that was doing that, basically. Every time you run it, it would gobble down, you know, the XML. And if you had a large system, it's not unrealistic that it could be 500,000 records across, you know, 25 tables or 30 tables. Whatever. Sure. And you do that 10 times or 100 times, your file size as an inspector is going to dramatically grow. And performance is going to slow down because indexes and searches and all that kind of stuff. So with what we did was when we switched to using save a copy as XML, I'm not going to get into the details of the XML and all this, but basically there is a way to do that.

To tell what has changed since the last time. There are basically timestamps inside the XML for every component, but not every single component. Non-FileMaker, so that happens in the plugin or something outside, yeah? No, no, that is output by the XML of FileMaker. When you save a copy as XML, it's a different structure than the DDR. And each element has what? It's a different folder. But wait, you want to ask a question? Well, I mean, but that doesn't do a diff, right? That exports the whole thing every time, I thought. Yeah, yeah. So what happens is, let's say you have a field you just added, and Matt, you added it. So that field will have your username, your account name, a timestamp of when you added it, and then a UUID.

Yeah, that's crazy. Right there. If I go in and make that change, that field now has my attribution. My account name, my username, and the timestamp of which I made that change. Right, I know you have some magic that does that, which is amazing. It's been a while ago since you explained that to me. So that's a killer feature right there, right? Because there's nothing in FileMaker that if you just, if I export or you export or whatever, that you can see who did what to the schema. And for the record, I have a deleter where field's not an adder, Vince. Yeah, no, I'm the same with you, Matt. I love deleting stuff. So, but this gives you kind of like a, yeah.

Yeah, how does it just quickly, how does it do that before we get into the new features? Is it using super logs or? How does it know who did what? Oh, I think I remember you tag it, right? That is, no, no, that is part of the XML. So, but the problem that people think is, I think people feel that, oh, it's got all the history. No, it just has the current state. So whoever modified it last, if you go look at the XML, like I said, that field, if I modified it, it'll have my account name, my username, the timestamp I modified it, and the UUID is going to be the same. I'm guessing you convinced Claris to have that. Well, let's put it this way. If you've ever listened to Clay talk and he mentions the XML very close by, it will be a mention of Vince asked me for this or whatever.

So, yes, I've been asking for a lot of features. And fixes to the XML. Yeah, yeah, yeah. There's lots of things over the years. Thank you, because it comes in useful in tons of other ways. Yes. So speaking of XML, you can also generate the save a copy as XML using the developer tool. So the command line tool. Yep. So word of caution to those who are delving into agentic programming and using developer tool to generate XML. There's a lot of different ways to generate XML for multiple file solutions. There is an issue with multiple file solutions, and that is, if you generate the XML for a file that has references to another file. Like, let's say you have fields on a layout that come from another file, all those references won't come along for the ride.

So you're going to have a really spotty kind of representation of your system. If you have a single file, Because it's all self-contained, and the XML is going to be pretty much the same as if you were to generate it from the menu. So, yeah. So, yeah. So, like, going back to the evolution, once we embraced switching over to save a copy as XML, we had a dramatic shift in performance. Because if you're looking on my screen, I'm looking. I'm looking at Inspector. I see a list of solutions that I've already analyzed here. And you'll see this one here. We sell Arc, but the file is in the background. But I've got 188 analyses. But the point is that that is almost no different as if it was the first analysis.

Because what's happening is it's storing only the current state. So if you add stuff. It's just going to increase a little tiny bit by the things that you add. But if you remove stuff, it's actually going to get smaller. Because it's going to remove a field that it keeps track of because it's no longer there. It's going to store it in the history. So Inspector will be able to tell you that that field was removed. And who? Yeah, yeah, yeah. Okay. Yeah. It's a little bit harder to say who did it. And I don't want to. Yeah, adding, I guess, is easy to do that. Yeah, that would be really hard to tell who removed something. Yep. Adding and modifying is easy to tell who did it.

And so now we have 188 analyses in this solution. And the footprint is very light. Okay. So that's a major, major difference between pre-7, sorry, pre-8, which is 7, 6, 5, 4, 3, 2, whatever. And then 8, 9, and 10 now. So that's the big difference. So the other thing that I would like to say about this release is we redid the README to help people get up and running with it. Basically, when you're going into Inspector for the first time, there's actually about four accounts. There's the Inspector. There's the Inspector OData account. There's the Migration account. There is the MCP account. And then there's the admin, Inspector Pro admin account. And those are all part of the database file that's hosted?

Yeah. Yeah. So either local or hosted. You could run it locally as well. But when you open it up for the first time, you'll just put in the account name. And then when you hit, don't put in a password. Just put in the account name. Hit enter. And then you'll be prompted to change the password. And I encourage people to set up the accounts for all the different accounts. OData, Migration. Just do it all at once. That way you store your passwords and you have them. And the OData password will come in handy with the integration. How are OData? Well, I want to know, but I won't get to it later. The OData versus MCP, but we'll get to that. Yeah. So that's the first step is basically just set up your passwords.

The next one is to understand how to work with generating your XML and getting Inspector to process it. Now, we have three different, actually, I would say four different types of integrations. And I'll cover all three really quick. So the first one is, like, once you have your analyses, there's a gear icon to the far left. Yep. Of the row. And when you click on that, you have settings that you can modify. For example, this one here has all kind of, like, the name of the solution. If you want to use a Slack webhook to send Slack notifications, et cetera, notify on completion, and actions and notifications, and I'll cover that. Right. There's a lot to cover, and we're not going to have time to cover all the features.

That it has. But I'll just say that the gear is where you go to basically reset your solution or to delete it, and to also set up AI script summaries and semantic searching, Slack webhooks, and the Git integration is only basically set up when you create your solution. You can't edit it once you have it set up. Does that go to a private GitHub or just to a local Git? Curious. No, that goes to a private. That supports GitHub and GitLab, and it goes to, yeah, your own private one. If it's public or private, it depends on. Public would be scary. Yeah. I guess made for some solutions, right? Yeah, yeah. So, for example, the WeSellArts solution that I have highlighted here, the arrow, what we call the integration arrow, gives you three methods to integrate with this solution.

And this, the first one is kind of like. The same old method that people have used for so many years, and they're so used to. What they used to do is basically generate the XML yourself, and then once you have it, then you tell the inspector, oh, I have it, let me run it, and then it will ask you for a directory where that XML is. And then once you point it to there, then inspector will take that XML and move it to the server and then process it. There's another one that is kind of new with. Save a copy as XML. Right from inspector, if you give me the window name, as long as the file is open with full access, inspector will be able to generate that XML locally and then send it to the server and then process it.

Okay. So that's also kind of convenient, especially if you have a file, you're just doing some local work on it, and you have a copy of inspector, it's hosted somewhere, or even if you've got a copy of inspector locally. You can use this feature so that it saves you time so that you don't have to go to the file and save the XML and put it in a folder. This will just generate it for you. All you have to have is the window name of the file you want to generate the XML for, and you have to be logged in with full access. And the third option is the really cool option, and that is I am going to create, let's say, this inventory file. And I'm going to put it on my desktop.

Sorry. I messed that up. Create. I'm going to create this inventory file. Wow. I've never seen one of those TempSPs for a long time. Anyway. Yeah. And let's say I want to add the add-on, and there's an add-on that ships with inspector. Oh, cool. You go to add-ons, and then you say add. Install add-on, and down here is the add-on. Just add it, and now it's part of this solution. If I drag this icon out to the layout, I'll get a button, and this button is basically. Tiny little left here, yeah. Yeah. So this button, all it requires is the server address, the name of the inspector file in case you rename the inspector file, and then the OData password that you set up.

And then you set up inspector. Those three components, and then the solution ID that this file or set of files is a part of. Nice. So that solution ID is an inspector. It's at the far left. It'll be marked. I see. 8, 9, 10, 11. Sure. You can just use small integers. Yeah. So you just put in a number, 8, save it, and now when you're done, you're ready to run this, and then this will run. So the beauty of this is that. If this file is hosted, this will generate the XML directly on the server, and that's like lightning fast. Yeah. And then it will pass it over to inspector to then do the processing. So there's a plug-in on the server. What's installed on the server?

Basically, the inspector file, which self-installs its own plug-in, and it manages the installation and activation. of the plug-in directly on the server, and you can install it on Mac, Windows Server, Linux. So all three of those platforms are working. Cool. So, yeah. So that's the integration stuff. Now, there's one last integration that I haven't covered, and that is basically the integration that, let's say, you want to track the changes. that you're doing, right? So let's say I go into here, and I add, let me make this one a little bit smaller. So I go in, and I create a new script, and I'll call it XYZ, and I'll say show custom dialog. Okay, so save that, and this has already got the add-on integration.

I click the button, notice that it is solution. ID 8. Yep. That's 8 here. And now I can type in added a new script. Nice. It's a really complex script, too. Yeah, yeah, yeah, exactly. One scripts up with no configuration, but anyway. So I can hit, at this point, I don't have to reach for the mouse and run analysis. I can just hit return. So I can type a message. The whole point of this is that we get out of the way as quickly as possible. Right. Okay. And if you look. If you look here, I probably added a few other things before I ran it. So you had a solution, we sell art, which was number 8, and then you just made, did you make a change to we sell art, or did you make a change to the other invoices file?

It just happened quickly. No, no, no. This has only got one file. Okay, okay. It's only this file. And I made some changes. I made some changes to it. And if I want to see, I can see the latest analysis. I can see some things have changed because I added this new script. And this privilege set script had some custom settings. So it picked up that. The script is added. The script step was added. And then the file hash got changed. And the reason why we tracked the hash, you'll come to see a little bit later. It's really cool. Okay, so the thing I wanted to point out is that all happened on the server. Let's say I go into here and I say, let's say, hello, Jupiter.

Okay, and I get rid of cancel. And I save that. And now I, you know, like, it's very tedious to have to click here and type a message. So the other option you can do is just hold the option key down, press the button, and you're done. So the other option you can do is just hold the button, press the button, and you're done. That was three seconds to do that. And this is not a tiny solution, but it's also not a huge one. What's the scale? Oh, no, this is tiny. This is tiny. This is small. It's just a proof of concept originally started by Alec to show off some of the integration capabilities that we had. Right. But this part is what I was leading up to. So if you find it that it's hard.

It's hard to get your developers to say, oh, you know, at every moment where you have a pause, just run it. You know, like, even just come here, just press the option key. Even if you haven't done anything, just press it. No big deal. It'll record an analysis. If nothing's changed, it exits. No big deal. But some people never run it. And so the other option you can do is you can set a script schedule. And so what you do in the script schedule. Is you just call this script right here, whatever this one is. Script schedule server side, you mean? Yeah. Yeah. So you basically the add-on components are inspector process XML. And then inspector generate single XML.

And you basically just call this script here. Process XML in your script schedule in this file with an account that is set. To run either full access. The script is set to full access. So you can call it with any account that you want. Yeah, I see that. And so, and so, yeah, yeah, yeah. And so this, this will like, so if it takes just a few seconds to run, you can literally run it every five minutes. And then no harm done if there's nothing to pick up because it exits as soon as it checks the file, the file hash. That's that checks. Yeah, yeah, yeah. Okay. So, so that's another way to, to kind of see what's going on in your system. So there's like four integration methods, manual, manual upload, window names, the integration API that comes with the add-on.

You wouldn't do this from necessarily from inspector, but that's, that's what you, that's what you do over here. And then a script schedule. Now, the beauty of. Yeah, the beauty of, of having this data and I started experimenting with proof kit. Like, let's see when it came out, like a few months ago, maybe before I went on holidays and I, these two are the outcome of, of that exploration. So I got inspired by the GitHub activity heat map and I built what is kind of like a first. And built into. Yeah. Cloud, cloud code too. Yeah, yeah. Yeah. So, and built into cloud code. Exactly. So what you're looking at is a, is a first in the file maker community for, as far as I know.

This is a file maker activity heat map. And this is tailored directly to file maker solutions. And so this shows me a 26 week period where every column of square cubes is a week. So this is this week. This is last week and so on and so forth. Right. I can see work being done by everyone. I can also drill in and look at when people are adding code, when people are modifying code, when code is being deleted. Okay. And the other beauty of this is. Wow. Yeah. Different colors. Yeah. Loving that. Is there a combo view? I guess it wouldn't. Oh, yeah. I see that all that connects. Yeah. All is, all is the blue squares, green squares with, which have a different hue. Or opacity, or I don't know what they're like called.

Yeah. So that user and by user. Yeah. So I can say, show me everything Alec did. Like Alec didn't add any code except I'll say like five weeks ago. Yeah. But it's a really dark green, right? So like you had one super intense day. Yeah, yeah, yeah. Yeah. He did a lot of changes. Uh, I did some changes, uh, before then and then fairly recently, um, I'd logged in as my son yesterday and, and pretended. I was him and, and made some changes. So you can actually drill into different people and see, uh, you know, how they're working. Now I'll let you kind of rationalize that in whatever way you like. No, no, no. I get it. It's actually funny because, uh, um, the Pithia program that, you know, I've talked about a little bit, I've talked about on the podcast.

Um, uh, one of the things I've been kind of obsessed with, I found a bunch of data online for museums. I downloaded seven or 8 million. Records of all the artworks of 500 museums and, uh, Pithia can create a heat map of all of the works like by artist, by decade, by museum or whatever. Uh, yeah, it's insane. And also like instantaneously fast like that, but this is a million times better because you've got it like broken down by different things. I'm inspired, Vince. I love it. So. Uh, you just went silent. Okay. Yeah. I lost you for a second there. This must just have a huge impact on a lot of, uh, large development shops. We've got multi-developers. Yeah.

Oh yeah. I mean, this is, this is something that, uh, we, we love to use to, to make sure that, um, you know, when we were touching code to make sure that we're making changes and we know the impacts of where those changes might, might, uh, might, might have an impact. Right. So, um, so that's, that's one of the primary uses of it. Uh, it's, you know, so that's, uh, that's, that's, that's the main thing so that you have this idea of, of like things that are going to be affected by your code changes. Like for example, um, if I wanted to delete a field, uh, where's that field referenced, if there's no references to it, then I'm pretty. Confident I could delete it, but what about, uh, if I'm using indirection, so you could also search for.

Yeah, that's the tough thing, right? Indirection or, uh, or it gets, or it's being edited by, um, OData or data API or something like that where it doesn't. Yeah. Yeah. And so for, so for those things, as you develop a solution, you, uh, best, best practice is document those, those, um, the, those, uh, points. Points of indirection. Yeah. So the way to, the way to do that is very simple. Like, let's say you have a script and you call a script, um, by name, uh, you can write a script that, uh, has just a comment and a perform script of the script that you're calling by name. And then what you do is you disable that step where you call the script now, because it's called by ID by reference.

Right. Inspector will see it and pick it up. As a reference Commented out or otherwise. Yeah, that makes sense. Commented out or otherwise. And so now you're, um, you're, you're looking at a, at a, at a system where, um, you have a reference to that script and a comment for why it's, uh, it's being referenced. So this, this screen we're looking at has a lot going on and I'm, uh, Mildly obsessed. So you've got that large chart in the bottom and then you've got versions. That information and then you really, really useful, um, health bars or whatever over on the right by category, custom menus, items, fields, field, access layouts. Can you talk about this?

Yes. So this is the main dashboard where you, uh, if on the, on the upper right corner, there's a global search field. That global search field lets you search across, uh, the options that you have checked below it. So I can search across all schema, all calculations. Or history. Is that the semantic one too? Or no, this is not the semantic search. This is semantic search is only in the scripts and that's a, that's a dedicated area just for searching there. Um, this one here is global search. So let's say if I search schema, it would search for the names of things should be determinative. Anyway, I mean, yeah, for this, this should, this shouldn't be semantic.

This should be determined. If yeah, yeah, yeah. The, this is determinative, uh, meaning like, uh, I have a field, I have a field name, I have a field comment, a table name, a script name, a layout name, all, all that stuff. That's what this, that's what semantic, I mean, that's what global search across schema is. Right. Um, the other option is I could just do a global search across all my calculations because all the, all the calculations in your system end up in one table and inspector. And you can search that table for like, let's say a variable that you've named a certain way or, or whatnot. And, uh, or even if you're just looking for, uh, a particular file maker function, um, you can, you can search it using that option.

However, there's a more efficient way to do that. All the, uh, insert from URLs or all the Fs or all the whatever. Yeah. Yeah, yeah, exactly. Um, and so that's the. That's the global search. Now the rest of the UI, it has, um, it has some, uh, minimum versions. Like, so some, sometimes you have features that show up in the, in the release and we have a table for steps and functions where we keep track of what version each step or function is. And thus you can, uh, when, when we process it, we also track, um, the. The, the, the function that, that was used and we can tell you like, oh, okay, the minimum version for this system is going to be 22 or 20, 26 or whatnot.

And so that makes sense based on the, based on the function it has course. Yeah. And then, uh, and then to the right of that, there's a number of calculations, number of unused items, number of items and number of problems. And in this case I have zero problems and, uh, I could have items. Realistic. I mean, who are we kidding? Well, I mean, that's what, that's what, that's what, when we get ready to ship inspector, we always make sure there are no problems in it. And so you're using, of course, you're analyzing inspector itself, recursive self-improvement and improvement. Yeah. And then, uh, and then a list of things on the right. Uh, it's kind of like, uh, a dashboard, but informative in the sense that you have all the different.

Areas and the, the, the two that are not showing are at the bottom and I can't make this window smaller, unfortunately right now, actually. And, um, yeah. And then the, it's still the database is still all file maker, which gives you a ton of other benefits. How many tables are in this beast? Uh, let me, let me just, uh, pause it for a moment. I guess it doesn't really matter. Right. Because I mean, uh, it's, it's a function. It's definitely a tool. That if there was one table or 500, it would be, if it works the same, you know, you're the one who has to maintain it. Not me. Yeah. Uh, hold on one second. Okay. I'm paused here. Hold on. I have to reset something.

Um, yeah. So, and you have a team of people developing this, right? So it was, it was just, was this all you at some point? It was all me at some point, but then it was Brendan and me, and then it became Alec, uh, Brendan and me and then Brandon and then, uh, Brendan and Brandon. I'm sure that confuses no one. Yeah. And then, uh, uh, who else, uh, Simon, uh, Christopher was involved. Kevin was involved, uh, Mercuria. Yeah. So it's a team of people. Yeah, yeah, yeah. I'll say. Yeah. So let me go back to where I was here. Okay. So I'm just taking in the visuals. It's just so clear, you know, some of the tools out there are super useful, but don't have much of a UI and then other ones are maybe skewed towards the, uh, UI without much utility.

Um, but this is the best. Both too good to be true now. It's okay. So I don't know if it would affect, I don't know if it would affect a recording if I change the size halfway, but I'll leave it that way. I'll leave it this way. Okay. So, uh, let me go back. Where was I? Oh yeah. Uh, we added some custom menus. So now in, uh, inversion, inversion. 10, you, you can arrow through your solutions and it cycles through them. So really quickly. So you can hire upward. You don't have to use the mouse. You just hit return and then it'll open up the, uh, the dashboard for that solution that you selected. Yeah. So, yeah, definitely. One of the things I'd like to do is to see how much I can do without taking my fingers off the keyboard.

Right. Uh, and so you were talking about this dashboard, this dashboard is kind of really cool. It's really cool because it's, it's, uh, interactive. So I can disable, I can disable all the unreferenced items. I can just say, uh, you know, I can disable all the items. I can disable all the calculations. And now what I'm focusing on are the item problems and your calculation problems. There are no calculation problems. There are just item problems. And so these are, um, so that these are situations where, uh, oh yeah, I see what's going on. So you have left to right, you have time. So you can see. You can see like, oh, the hundred and first analysis, you said we're 180 something.

There was a bunch of issues in the past. Um, and then, you know, bugs come in when features get added, of course, and then they get ironed out. Um, yeah, beautiful. And then you can see them by type too, uh, unreferenced items. Interesting. So like I can focus on, so if I disabled the problems, I can look at, uh, the amount of items so I can, I can see if, uh, we're, we're growing the code base. Yeah. A little interesting. Yeah. I mean, mind you, because, uh, this is, there's, there's no change in some places, but there are, yeah. And this is, it's just calculations everywhere. Like, yeah, not just calculated fields, but all the, the, the 37 places where the calculation dialogue, I have no idea how many it is, but it's a lot, these are actual calculations.

So right. Yeah. Anywhere, anywhere they appear. Yeah. Yeah. That's what I'm getting at. And then, uh, this is, uh, so if you look at, uh, the code. You want to, you want to kind of reduce this. This is the unreferenced stuff. This is all the, the stuff that, you know, is there, but it's not doing anything, you know, like, uh, so for example, I have 159 fields, right? I could click that button and it will bring me to the list of fields that are, uh, marked, uh, as unreferenced, the far right column. And so all these fields are not referenced. I could go in and, and just, uh, you know, chip away and, and delete those fields. Now, carefully, I'll go ahead and I'll go ahead and delete your global.

So I'll go ahead and delete a field that, um, I have a field down here called new field. I'm going to do this intentionally, you know, hold the option key down and just hold delete. And now it just, uh, I'm going to skip this. You can do that. I didn't know those keyboard shortcuts in the managed database. I just, yeah, of course there are. Yeah. So if you, if you hold the option. Keep it down, it doesn't warn you and I'll, and I'll just run it. Um, and I'll say everything to save one click, hit return. So now it's going to run. I'll pay attention to this number here. So I just introduced two problems. And that's the reason for that is because I didn't check where the field was referenced.

And so I deleted a field that was referenced. And that was that reference was, uh, in these two script steps. So script step seven, uh, and script step eight. So if I go look at the script in its entirety, all the steps of the script, I'll see that this, this, this script step was, is enabled and this one was disabled, but I deleted the, um, I deleted the field. So I broke, I broke, I broke some components of, of, uh, of this script. So, so you could see field missing. Where do you see the, what the field was? Is that what you're getting to next? Uh, well, you, you, you, you could see, let's say if I searched for, uh, the global search and I said new underscore field, let's, let's do that.

Let's open up the, uh, the dashboard new underscore field. If you remember the name of the, uh, the item and I'll search across history and you'll see that, um, uh, it brings up the, uh, the field it was here. And if I look at the history icon, which is a little button that kind of, uh, does a recounting of, of what happened, the field was added by me, um, like, uh, earlier today. And then the field was deleted. Well, technically I can't really say by me because it picked up, it was deleted because technically when the, when the XML runs, it doesn't have a thing. I can't really say by me because it picked up, it was deleted because technically when the, when the XML runs, it doesn't have a thing.

I can't really say by me because it picked up, it was deleted because technically when the, when the XML runs, it doesn't have a thing. Hey, you know, it just, it just sees that this person ran it. Um, you could defer, you could infer that it was that person that did it, but it's not a guarantee there. Yeah, yeah, yeah, yeah. That's just, you know, there's some limits of what FileMaker can do and that's definitely one of them the same way. And so like, yeah, exactly. Uh, if, if they had a, uh, like, uh, what is it, what would, what would you call it? Well, like on window transaction kind of solves that problem for data, right? You can delete a data to a degree.

If you delete a ton of records, uh, the record deletion will happen and then it will give you the, it'll show the, uh, on window transaction, which you can cancel. So it doesn't, doesn't track that anyway. But yeah, I would, it would be great if there was, uh, features like that at the structure level, something we've been asking for, for a really long time. Oh yeah. I mean, I have all kinds of ideas. I keep funneling them over and maybe. One day there'll be, uh, investments in that area as well. Well, you know, now that we're, now that it's like so much of FileMaker development is going to become agentic and that actually writing and maintaining the code will be done, uh, you know, from, from cloud code or whatever.

Uh, it'll be able to handle that and it'll be able to really intelligently, you know, it'll, um, in terms of powering a tool like this, it'll be even that much more data, more. Yeah. Uh, I, I'm lobbying, I'm on the, in the camp of lobbying for, uh, attribution. So we want attribution to say, uh, so I log into a system and I agentically ask it to, to, you know, build some stuff and the agent will do that building, let's say, but I want the fact that I prompted it and I had AI help me out. So I want to have an ability, like a little bit like anthropic promoting this idea of like watermarking, right? You want to know that AI did this, whether you drove it to do it and, you know, the separate point, right?

I logged in, it's me, I'm prompting it. The AI is implementing it. So I think of it like almost like, uh, when you look at a can of a box of, uh, you know, something that you're buying at a grocery store, you look on the, on the back and it says, you know, 80% this 80%, it would be so cool to look at a system and see that 80% of the code was agentically coded and 20% was human coded. Yeah. Right. So you could, you could, you could make your understanding of that or use that information in different ways, you know? Yep. Uh, even more important going forward. Well, kind of, right. Uh, you, you can't, um, anything when it comes to AI, definitely what I've learned is no prediction you can make is worth anything six months from now or a year from now or whatever.

Um, and any of the limitations that it might have now, it will not have in the future. So, you know, so that shift of, oh, it's 80%. 80% AI now and 20% human today would be potentially a bad thing. Like some of the projects I've worked on, um, like my language decipherment, little side job. I don't know that much about it. Right. So like I'm, I'm prompting it and doing things, but not having a PhD in that field, uh, right now it's a, it's a limitation of that. But in the future, uh, you know, even if I did have a PhD in the field, AI is going to be vastly smarter than I could ever be. Um, and make fewer mistakes than I would make. So that 80% would actually be, oh yeah, this is good because a human only had 20%.

Just like self-driving cars, right? Yeah. They're vastly safer than human drivers by the stats. Um, despite how people feel about it. Facts are facts, right? Uh, anyway. Well, you know, you only have so many eyes. Right. The self-driving car has like six more eyes than you. Do doesn't fall asleep, doesn't fall asleep and it's not distracted. It's not answering text messages, you know, it's focused on the road. It's focused on the task at hand. So, um, you know, it, it remains to be seen, but I, I agree with you. It's, it, it is, uh, it's hard to prove these facts, but in the end, I think it will end up saving lives. Oh yeah. I mean, it already is. Yeah, yeah, yeah, yeah.

So. Uh, a couple more things, if I, if I can, Matt, to squeeze in before wrap up. Um, so there is some cool news. We have another hour events. We have a whole hour. I mean, if you want to take more time, uh, it's always great to chat. We can also, after we look at this, we can talk about any other AI stuff that you're working on, which would be great. Um, but yeah, this, this new version looks amazing at every version that comes out. I've always been impressed by, and I've been following you. I've been, I think. I think I use inspector one. Well, you gotta use this version. This, this is the, this is the latest version and it's got some cool things in it.

Yeah, for sure. I know you guys have been working on it for intensely for quite a while. Yeah. Um, the, I think as, as a team, um, one, one of the other features that we, we built in because, um, we, we find it really important, let's say. Um, let's, let's say you have a script that does a, a very complex integration of some kind, and you don't want anybody messing with that script. So we have, um, we have the ability to set up what is called a notification. So like over here on the main screen, I have a solution and I click the notification button. It brings up the action notifications dialogue, and I can add a notification in. Any area of, uh, of the system.

So with a privilege set or a custom function or a, and then specific to which one or several things. Yeah. Let's say I'm, I'm the architect of the system. I want to know anytime anybody adds a new field, I create that notification and then I notify myself. I turn, I turn on me to get notified, right? Because I'm a member of this solution. And now I go into here and add a new field. Yeah. For every new field added, you get a 1% cut in pay. And for every field you delete, you get a 2% raise, right? Yeah, something like that. I wish it should be like that too many. So many solutions are just like, uh, I mean, I've fallen into it too. Um, that's how they grow by having fields at it.

Okay. So let me, uh, this, this one does here. So the last notification was 11, 17:00 AM. So process, I look beautiful. Yeah. So like, uh, let me hold you on the option key or run it. Uh, unfortunately you're not seeing the notifications. We have OS notifications, but I like counting down the three, two, one seconds to take for it to run the whole thing. That's very satisfying. So here, here is the notification that the, this analysis completed took three seconds. Uh, here's the, uh, the notification. The notification of a watched item. So Vince was notified that fields were created in this table. So I got, I got a Slack notification and an app mention of my name.

So I got notified now that equally can apply to, um, to adding a notification. So that's the general notification. We also have a specific notification. So like, for example, I can go to my scripts and let's say this. Is my dummy API script. If you see it here, it's selected. I go to the top next to the script named label. I can figure my notifications. Yeah. And so I say, this is a much easier way to do it. Right. Rather than doing a search, just as you're working on this one here. Yeah. Yeah. So, yeah. So anybody that modifies this script, I will get, you know, uh, ding, ding, ding. Uh, yeah. So chase, chase them down. Oh, okay. So, so like, okay. I, I installed it.

Now I go to the, I go to here and I make a change to my dummy API script. Let's say I disabled some step and I save it. Okay. And I run it, no commenting, no commenting. So there it is right here. So that's cool. So you didn't actually have to do any action. It took about a second. Then you get a notification. Nice. Yeah. I mean, I mean, yeah. The thing is that the person has to run the integration for the, the inspector to process the XML, right. That has to happen. But, but again, like I was saying at the beginning, you can set up a script schedule that runs every five minutes. It'll pick up the change. Um, and then, uh, we'll, we'll notify you as soon as it picks it up.

So, so that's really, really handy. Um, is there any coincidence of that last screen had the exact colors of the Italian flag? Sorry. I just, I just had to point that out. Yeah. Maybe it's unconscious, you know? Uh, yeah. So, um, I like the same here. Yeah. So there's, there, there's a lot more, um, stuff and we're really grateful that Clarice actually fixed a bug that was in there that was causing a crash for us. And it was a bug with logicator. So logicator is some tool that Mark Scott built at these. Yeah. Yeah. I remember. Yeah. And, um, it mimics the, the finder find requests kind of thing. So it's actually, that was more like a sequely this matches that has this.

Yeah. Yeah. I remember when I was working on search results, it's like, like the polar opposite in terms of how they work. This is a very, for very, very specific, you know, deterministic, uh, precise and saveable searches. Right. Yeah. Yes. Yes. And you guys are still maintaining it. So you can add like other criteria. Like I want to look for the script that contains or starts with, you know, like some string and isn't a file that starts with or contains some string, et cetera. Right. So like, for example, that API script, I could just hit here. I type API, hit return. I'm looking at the. The API scripts. Yeah. Okay. So I'm going to suggest it in logicator. You add it is somewhat like, and in that one step you can actually invoke, uh, you can invoke some semantic finding.

I'll pass that along to Mark. I mean, you wouldn't want to have it be like the all everything, but it would be a cool thing to add. Uh, Oh yeah. Yeah. Yeah. So if you want to turn that on anyway, and I don't know if you can, well, anyway, I don't want to geek out on logicator. But it's, uh, it's definitely cool. And I'm actually coming out with a new AI version of, uh, search results to called mitos. Cool. I'm your name. Mitos, all of them are, yeah, all of them are Greek names. I find out like various different Greek gods and mythical figures and who have cool things, you know, my, my, my daughter was really read into reading some of those books. Uh, I forget what they were called, but that all, all about Greek mythology, but it's, it's kind of weird.

It's kind of like popular, um, popular movies that they turned into movies as well. I forget the name of it, but all the Percy Jackson stuff and Percy Jackson, that's it. That's it. Yeah. I've read all those, even other teen books. Yeah. Uh, yeah. The, the other cool thing is you, you can also tag stuff. So like, uh, for example, this script here, let's say, let's say that you have a large script like this one, 214 steps. And. You've reviewed it and, uh, and you, you know, we should really refactor it. So you add a tag and let's say the tag is not here. You can go up to the top here and say, I want to manage my tags and I want to add a tag called a refactor.

Okay. So I'm going to add that. I'm going to add it as, uh, as, uh, maybe unmarked, uh, show warning. Stop. Yeah. Yeah. I can change the style too. I can, I can make it like, uh, look differently. Right. So I changed the style. It's good. Simple, not overdone, but that'd be useful. Yeah. Yeah. So now if I go to here, I can apply that refactor tag just by clicking on it. And if I want to see my tags, because there's so much information you want to show tags, you just toggle it. Oh, nice. Toggle it to show the tags are high. Yeah. That's really, really good. Kind of like switching back and forth between in the, um, uh, in the managed data. You can see the comments or the, or the field.

Yeah, yeah, exactly. Uh, and then better because you can see everything overlaid. Yeah. And then what you could do is just search for it, um, by typing the tag and now here's the script tag, right? So here's that, here's that tag, right? So you can mark a bunch of strips and, uh, and then have, um, maybe in the, uh, in the future AI, go look at all the scripts. So that I marked with refactor. And so the way I envisioned this tool is kind of, uh, an addition to working in your file. Your file has the schema inspector has the history and changes of it so that it's for, for you, it's important as, as the manager to see the work happening. What are you, are you getting rid of debt?

Are you removing problems or is a team working what's happening at the code base? Right. And, uh, and AI could use both of these systems if it had an MCP to them and you could just tell it like, look at all the scripts marked, uh, for refactor and go look at the scripts and go figure it out like an improved version of the script and draft it up and, and show me how you would, you'd do it differently. So, uh, a lot of cool stuff, a lot of cool stuff. That's, that's definitely cool. So is this, is, is it aimed at like the tech, tech leads, developers? A little bit of project managers. Um, who's like, what, what's the mix of your users? It's, uh, there are managers who are overseeing the work.

There are developers who are doing the work. So this is a mix of both developers and managers. This tool is, is targeted for that. Um, and, uh, yeah, so, so as a developer, uh, I need to know, okay, this script here, it's got seven references. You know, let me see those references so I can see where it's referenced. So we have a dependency explorer. I love this screen. That's a really, really great. Yeah. This is new. So yeah, this goes back. I remember a long time ago, you were, you were all, uh, into a couple of different charting things. Like, was it S2 or something? Yeah. Yeah. Yeah. That was a D3. D3. I knew there was a letter and a number. Yeah. Yeah. And this one is, uh, you know, Kevin worked on this one.

It's really cool. Uh, you can set the different reference levels or dependency levels. And so I can look at this script and I can see that it's referenced. It's referenced by these, these other, uh, places. So that's, it's on a button on a layout. It's in another script. Yeah. And then, uh, this is actually. Yeah. To be able to see it, like to visually see a given thing's complexity. Like this layout is one you don't touch because of what it is, but this other one only has these two references or something. Yeah. That's great to be able to see it that way. And then the dependency levels is nuts. That's really cool. Yeah. Um, to be able to go, we don't go beyond, we don't go beyond three at this point.

I was going to say, I was going to say N levels. No, that wouldn't be a good idea. Uh, not with, not with FileMaker data, you know, if the data, I mean, this is, yeah, I, exactly. I mean, this is our first attempt, so yeah. Yeah. Yeah. You know, uh, oh, by the way, all the data is in FileMaker, right? So, I mean, all the actual, you mentioned there's FileMaker tables for everything. Yeah. I mean, it's so well-structured, uh, it's, it's one, it's, it's my pride and joy in a sense. Like I've been refining this and honing this down and distilling it further and further. Like I'll show you the graph, like this is the graph and inspector. So, uh, it takes a moment.

Uh, so. So, there's the entire graph and inspectors. What graph? 10. Let me count the relationships. 1, 2, 3, 4, 5, 6, like, like 10, 12. Yeah. Maybe. Yeah. Yeah. Like 14. That's an amazing, amazing, beautiful thing. Yeah. Yeah. Core items, extra items. Yeah. That's, this is what it should look like. This is the ideal. Yeah. Yeah. I, I totally agree. It should be well-structured. It takes a lot of work to get to that level. Yeah. Yeah. It takes, uh, it takes, you know, I'll tell you a story. We were on holiday this, this summer, like about a month ago, we were in Sweden and we were at some, some campground near a campground in Sweden. And I see this motorcycle and I look at this motorcycle.

It's a Honda. I forget. I forgot the name of the model, but it's, it's, uh, a 1976 Honda something. Right. And it's like, it just rolled off. The production line. It just like, it's maculate. The Chrome is shiny. There's no chain grease. It's like unbelievable. And I'm sitting in the cafe and the guy, the guy has his motorcycle helmet on. I say, is that your bike? You keep it in such good shape. Yes, I know. He takes very good care of it every day. I bet you, I bet you, as soon as he wrote it at home, I bet you he's there wiping. Any dust that got on it, you know, cleaning it at, it's just like, it was amazing. And so I did. I washed my Piaggio scooter once a year ago.

Yeah. Yeah. Well, yeah, it takes, it takes attention, uh, to, uh, to, you know, to pay attention to those details. Definitely. And, uh, And also, uh, OCD. Yes, exactly. You have to have the correct neurodivergence fence. In order to, in order to make that work. And I think actually the right mix of neurodivergence is what makes a, uh, a developer successful. If you're, if you're a neurotypical, you're actually kind of fighting some things. It's makes life probably much easier in most areas, but, uh, yeah. And I had no idea, like my own little path or whatever, when I was in my twenties and thirties, what, how that was a help and a hindrance. Yeah. I mean, with AI, things are just going to be so interesting.

Uh, my, my favorite thing to do with AI is, is, uh, is, is not, you know, it's a novelty and it's, and it wears off pretty quickly to say, Hey, write, write a script that does this or add this script step to this script. And you, and you, and you're waiting like, okay, you know, a couple of minutes, whatever, and it does it and you say, wow, so cool. Right. But then it's like, wait a minute. I could have done that like in five seconds, you know, why, why am I, you know, being excited about that? Yeah. Yeah. But where I'm really excited is, Hey, I've got like 300 scripts. Can you go through the each, each of these scripts and write me up a report on cyclomatic complexity and, or here, you know, this, this, this solution has, uh, let me look at Eric sent me, uh, from dig, uh, dig FM.

Oh yeah. I saw that. Eric all files. Yeah. Yeah. Eric, all files. And it's got, uh, 2,815 scripts. So I, I did just that. Yeah. But I did just that. Let me show you. So let me show you the, uh, cyclomatic, uh, yeah, like that's, you know, a big internal system. I don't know if that's internal or a consulting thing, um, can, you know, if it's running the company, it can get huge. I'm having like a total flashback of when it took more than 24 hours to do, uh, an inspector run before there was a plugin. Yeah. Yeah. Yeah. Yeah. And then I see you do it and it's three seconds. I'm like, what's the, what's the math of three seconds versus 24 hours. And like what else has changed like that?

You know? Yeah. Just, just to be, just to be transparent, uh, the first solution, like, uh, like for example, Eric's system. He had 30 files. He sent me, uh, that took inspector, uh, to, to gulp down on my machine, like eight minutes, the first analysis. Now, if I would continue developing on it and I made a script change or whatever we're talking about, like, we're talking about seconds, right? Exactly. Right. So, so, but the first analysis is going to take some time to establish, I mean, like back in the day, the first analysis was 24 hours and so was the second, you know? Yeah. Yeah. I know. And that's when the third is 25 hours. And we lived by them at the time we would just set up a little, you know, dedicated machine for it.

And it's also kind of funny, like, you know, 20 years ago, there was still databases that were far complex enough that, you know, that it needed that level of, of, uh, control and understanding and everything. Yep. Uh, so, so yeah, so my first, my first favorite thing is deleting things, right? So that's my first, my second favorite thing is AI and what's, what, what's, what, what it enables. So I turned it loose on, uh, on this system and, uh, basically just as the prelude to the fact that we have an MCP and a dedicated script insight tool. So the way it works is you set up the, uh, the configuration, you add it to cloud code and now you can say using the inspector MCP, uh, look at this file and this solution, look at this script.

And tell me what it does and give me a report of all its variables and dependencies. And by the way, if it has any subscripts, go into those subscripts and give me a full analysis of the whole, uh, basically execution path of the script and tell me if I have any issues that is just mind blowing that you can, you can ask it for that. And it recursively does the work and it's smart enough to know like, Hey, this is, wait a minute. I already analyzed this script. This is recursion. Like this is a self-referencing script, right? So it's totally able to, uh, to discern all that. But, um, so here's the report for the cyclomatic complexity on, on Eric's system and it broke it down into groups, uh, so that I have, um, you know, uh, 47 critical scripts that I should look at and then 651 important scripts and then, uh, it gives me some other stats.

But like, if I drill into here. It tells me what to go look for. So this is the file. This is the script. And then, um, very high cyclomatic complexity and, uh, active code, 641 active steps, 90 are disabled. Um, and so, you know, it, it tells me some of the things that it point it found that are, you know, that this is a really hard script to manage. Uh, so you might want to rewrite it because it's got a lot of ifs and loops. And, uh. Oh, yeah. Yeah. Cause I can look at it and understand it, suggest changes. Some of which are good. Yeah. Yeah. Yeah. Some of which might not be like needed. And maybe even suggest like, here's a newer way to do this particular thing.

I love it when it actually comes up with something that I haven't considered. Uh, and I get to learn a different way to do something. So, so yeah, this is, uh, this is like, I've been, I've been, I've been excited to get this release. Uh, because it, it, uh, it's nice to, uh, you know, you know, ship stuff, you know, not, not just have it sit around, uh, ship stuff, use it and, uh, and, and then also exploring the next future of what, what could happen after this, you know? So, um, I have a crazy idea already of what I want to do. So, so the Pythia tool that I have, I don't have to keep bringing it home, but I, this is exactly the area. Right. Cause if you're connecting this with FileMaker MCP, clear some speed that's slow as a dog, right.

For it to go in and to look at a million records in a table and to query it and slice and dice it, it can, it's not fast. I imagine. Oh, I see. Mm-hmm . But with Pythia. Yeah, but I mean what you're doing. Yeah, go ahead. Yeah. Yeah. Yeah. So what it does is it actually has an automated sync of the data, similar to what you have. It looks at only the, the diff changes of FileMaker data and then keeps it in sync, um, in a tool that has all of these analysis things. Built in. And so it would be a perfect little add on, uh, to inspector pro, uh, it would just be sort of sitting on the side and it would, it would handle this thing you're talking about, I think in a much more automated way.

Oh, I see. Interesting. Let's do an experiment. Yeah. Yeah. Let's set up a time to explore. Yeah. Yeah. Um, and it would be free. Yeah. Cause it's a free tool. Yeah. Yeah. This is a free tool. We, we give it away for free now and, uh, and we invite people to, um, a little bit like you, Matt, where you're saying to people, come and book some time with me. This is if you have a system and, uh, and the, and you're digging around with an inspector and you see all kinds of problems, you know, call us, we can help, um, you know? And so that's, that's what, uh, and, and we're using it extensively, um, you know, on our to document what we're doing. So yeah, it's really, really cool.

Isn't it great? Like all the years we've been doing this, we're at a place in our careers now where we can say, hey, I've got this time and this expertise. Let me give back, you know? Yeah, yeah. And I hope that's appreciated, but it feels good to do for sure. Yeah, absolutely. And I can see that this was, I wouldn't say it was expensive, but it wasn't cheap. And it was worth it for all the years that you charged for it. So yeah, it's amazing that this is free. And so, yeah, obviously a huge thing for Beeswax, yeah? Yeah. I definitely have some loyal fans who keep, you know, hounding me sometimes or just politely encouraging me. Do this. Yeah. And this version addresses also the fact that FileMaker 26 is UTF-8, and version 9 doesn't process the UTF-8 stuff.

So people are waiting to get their hands on version 10 because it has support for both UTF-16. Let's step back on that. Why is UTF-8 better, and what was it encoded as before? UTF-16. And UTF-16 is just bigger. Why would they do that? I don't really know why they did it, but the... the layman's point of view is that it's lighter. So if you have a file that is 300 megabytes UTF-16, it's going to be 100 and something megabytes UTF-8. Yeah, I guess I'm wondering why it was ever UTF-16, I guess is what I'm asking. Yeah, good question. All those other encodings, too. I haven't really nerded out, like ASCII, NC. You know, some of them support extended characters, Japanese.

I saw you had a lot of emojis in there, which... Oh, yeah, like... Are you curious how those work on Windows? Well, yeah, that's a good question. I have to make sure that... Because they'll look different. The stuff will... The stuff will come through, but I was going to show you, but I don't have an analysis loaded in this version. But if you do have emojis in script steps, which I like to do often, so, for example, here you'll see emojis there and there and there. My favorite little... Fun thing about FileMaker. Every single object in FileMaker supports emojis. Yeah. Table names, calculation names, inside calculations. You can say, if happy face equals sad face or does not equal sad face, whatever, they actually can evaluate.

Yeah. Yeah, at every single level. I think it's kind of insane, but it's kind of great. But also, it doesn't work on Windows the same way or at all, maybe. I've never tried... I've never tried to evaluate an emoji happy face to say if emoji happy face is greater than emoji sad face. Yeah, well, or you could do that. Or you can also say, you know, if A equals, you know, whatever, if such a condition is true, then an emoji, otherwise other emoji. Right. It's a little bit like what you see here. Unfortunately, I don't know if I can zoom in, view, zoom in, and you'll see them. They're like really... Frustrated face because it's got 11,000 problems. 643, yeah. That would be terrifying.

And also normal. I definitely remember running this one. Well, I mean, I remember running it on databases that were like perfectly, seemed perfectly fine. They ran okay. And then you look at it and it goes, oh, yeah, you have 11,000 problems. I'm like, ah, which ones? And then, you know, of course, a lot of them are things that are deprecated. And then you can find them. You can clean them because there's always budget to clean up, you know, things that were in the database from six years ago. - Well, I don't know if there's always budget. - There's never budget for it. - But there's always, oh, there's never, yeah. - There's always need for it. But that was one of my dry attempts at dry humor.

- Yeah, exactly. Okay, so I'm a literal person. So yeah, there's never budget. And you know that, what is it? That movie with Wally and the little character that is this little cleaner character that goes around, the little robot that goes around cleaning up the dirt, whatever, I feel like sometimes I feel a little bit like I identify with that character because it's like, oh yeah, this script, you know, it's not referenced anywhere. Market for deletion, you know? And if people don't complain in a week, it's gone. - I looked at, you showed me your driver's license and it said, Vince, technical debt, Monano. - Yeah. - You changed your middle name. - Yeah, there you go.

- Yeah, that's not true. - Yeah. And here's the about screen. So these are like, you were talking about the-- - All the people, yeah, yeah, yeah. - And the people that contributed to it. Originally it started off as me and Brendan to rewrite it for eight and all the underpinnings of all that. And then Alec was contributing, he contributed to the get work that's been added. And then the design work is from Mercuria. The security stuff is a security over review and all that is from Christopher. Simon is helping with the plugin and then the server kind of related issues. And Kevin is also a developer that works with us. - Nice, got all the specialties. - Yeah, yeah, I couldn't have done it, couldn't have done it without them, so.

- Yeah, I mean, when you get to this level and this type of utility, you have features, you know? I mean, gotta have a team. But the brilliant idea also has to come from one person. - Yeah, or, you know, collaboration. - It would have been really hard for a tool that's this focused and specific, I think, to have come from a committee. But once it's there, then a team can maintain and build and extend and all that. That's my two cents. - Yeah. Yeah, I think this is kind of like my tagline. I associate it with this top tag a lot. Always take a chance on better. - Yeah. - And that's been kind of my motto for years and years. Make this tool better, improve it. Always trying to test things.

And Hansa and I are of the same opinion. Like, if you can't measure it, you don't know how you're making it better. And so we're always lobbying. - That's a famous quote from someone. - Yeah. - Yeah, so, yeah, anyway. Yeah, so there you have it. Lots to go ahead and download it and start using it. Let us know if you need help. Happy to help. - As always, thank you for your time, sir. Excellent. - Yes, you're very welcome.