ClarisTalk AI · the FileMaker AI podcast
Bonus Episode: Matt joins FileMaker DevCast, talks JSON
Matt joins the Portage Bay Staff for their FileMaker DevCast podcast to talk about JSON. It was a fun discussion, and their staff are all advanced JSON users, and have religion. Links: DevCast https://youtu.be/_h8D-nuweE4?si=_8gbhTF1vQrCpAaU See Cris Community Live: Jumpstart AI in Claris FileMaker: A step-by-step workshop on OCT 24: https://appleinc.webex.com/appleinc/j.php?MTID=mffff1fbb23023de8
Apple PodcastsSpotifyYouTubeAll episodes
Transcript
Transcribed by machine (whisper, large model), 10,851 words. Names and product terms are sometimes misheard; the audio is the record.
Welcome to Claris Talk AI. This is Matt Navar. This is a special episode. I was a guest on the FileMaker DevCast with the Portage Bay staff, and this is that recording. So enjoy, and we'll be back with the normal episode with Chris very soon. So it's time for the DevCast. Welcome, everyone. I'm Dan Smiley, your host and citizen developer, and we're super excited today to have Matt Navar coming to us from the island of Crete in the lovely Mediterranean. Good morning. Good afternoon. Good evening, is what it is, right? Good evening. How are you? I'm excellent. How many time zones are you guys all in today? I'm in Pacific, so I'm plus eight. Pacific for me. Yeah, same for me.
I'm the only one in the Midwest. Yeah, I'm in minus three Eastern European time. So what do you guys want to nerd out about today? So today, the topic is JSON. What can we do with JSON? What is cool about JSON? Why do we care about JSON? We've got a bunch of JSON running in some of my projects, don't we, Jacob? Aren't we parsing Jacob in the AIS app? Yeah, we're parsing JSON in your app. Yeah, yeah. So all of these guys work on my apps. What I do is I build them and then I break them and then I pay them to fix them. That's how that works. And they're all quite tolerant of me at this point. Every FileMaker developer owes their living to people like you. Yes, exactly right.
Who use FileMaker and then start a business and then the business gets really successful and then they become more interested in running the business than developing the FileMaker. So they bring in experts to do the FileMaker stuff. That's time and time again how FileMaker has grown. So, Matt, tell us a little about yourself. How did you come to be a FileMaker developer and what kind of projects are you currently engaged in? Well, I'm one of the guys that goes back to version one. So I've actually been a database developer since 1983. I know I look good for my age since before FileMaker even came out. Which, by the way, was April 1st, 1985. Trivia. So yeah, I started back then.
Of course, FileMaker wasn't, you know, it was just a kind of a toy. Well, all of the products were nothing compared to what they are now. And then kind of stuck with it. So it's been kind of a consistent thing throughout my whole career. I've started, I was a developer, like a consultant for a long time. I worked as an in-house developer. Yeah. And released, actually released a product for Catholic church music on CD back in the '90s, I guess. Then I started pre-1 software and we developed a vertical for newspapers and magazine advertising and then sold that. And then I started AppWorks and as a consulting company, I got up to about 10 employees and I sold that and moved to Greece.
And now I'm starting Navarre Training, which is just me. Yeah. I'm in a really good position of being able to do kind of whatever I want to do with FileMaker and that's teach. I actually teach classes on JSON because I love it. JSON is like as close as thing as I have to a religion. I feel passionately about it. You know, I think, you know, the people like me who go back a long time with FileMaker, that doesn't matter. What matters is the thing you've done most recently. And so I really, I'm having so much fun keeping up on stuff. Dan, like you and I were talking a minute ago. Chat ain't open in ChatGPT. Yeah. Every day, right? Every day. Using it, learning. I use it for so many things unrelated to FileMaker and also tons of learning in FileMaker.
Yeah, I have several different custom GPTs that I use for different tasks. You know, the kind that you can upload a document and give it instructions and whatnot. Yeah, no, I love it. I've used it for FileMaker, script writing. What I found really fascinating, you know, is the fact that, you know, there's a lot of stuff that you can do with FileMaker. Yeah, no, I love it. I've used it for FileMaker, script writing. What I found really fascinating about it is that, you know, there's so many different things you can do with FileMaker. Yeah, no, I love it. I've used it for FileMaker, script writing. What I found really fascinating was in some of the databases I've inherited where I wasn't the original developer and I'm looking at these scripts going, "What in the heck did he do here?"
And I just dropped the whole thing in a chat GPT and said, "Explain this to me." And it will sit there and almost write a paragraph per line of script. This is intended to do this. It's referencing this. It's like, "Wow, that is so cool." Yeah, debugging, explaining, understanding. Yeah, it's perfect. I wanted to do a fun fact. I wanted to do a fun fact. I wanted to do a fun fact. I wanted to do a function or a script to do great circle calculations, and I had it right, wrote the script for the Haversine formula, and with a couple of tweaks, it worked just great. So that's beyond citizen developer territory. I did one of those, too, to calculate the distance as the crow flies between two points, yeah.
But even bigger, greater circle, that's what you're talking about, like air. You know, the reason that airplanes fly over the North Pole, because it's actually shorter than going over the Atlantic, that kind of stuff. We use it in oil spill response. The Coast Guard regulations calculate the amount of time it'll take for a piece of equipment to travel from one point to the other using a great circle calculation and then applying a speed of 35 miles an hour. So they don't care about turn by turn. They say, "This is close enough." And so as we're calculating out the regulatory requirements of how long it'll take to get certain amounts of equipment from one place to the other, we use the great circle.
But we wrote a script that did that, and then Zandon wrote the script that did the -- using Craft Kitchen, wrote the script that did the turn by turn, and we parsed JSON out of that, so that was super exciting. Does it do it -- is it by flying you're trying to calculate? No, it's driving -- it's driving, but the regulation came out in 1990 before there were turn by turn directions, and the regulation still exists so that this calculation -- they just assume that if -- you know, if you do ask the crow flies and then say that you're limited to 35 miles an hour travel speed, that's good enough for our -- Unless there's a mountain range in between point A and point B.
And point B, yeah, or an ocean. So -- All right, cool. So we're going to talk about JSON. Let me introduce the team to you. We'll run around the -- everybody who's listened knows these folks, but we'll start with Zandon. Good morning, Zandon. How are you? And how are we going to talk about JSON with you today? Morning, guys. Well, you know, I use JSON all the freaking time because I love it, and so I probably have a couple of fill-ins for how to work with. I'm pretty good with large data sets in JSON, so, yeah. And Jacob, good morning. Morning. I'm out here in California enjoying it. JSON-wise, I probably have a cool little tool that you may have seen in VS Code that lets you convert JSON to set JSON pretty easily.
So if you haven't seen it before, it's pretty neat. That'd be awesome. Look forward to that. And, Joe, how are you? Where are you coming to us from? Hey, I'm good. Omaha, Nebraska. As always, we're starting to hit the beginning of fall. We're starting to get a lot of carotenoids up in the leaves, nice and orange and yellows. And in about two weeks, we'll start some nice oranges and reds. This is my favorite time of the year. Yeah, I'm out here in Yakima. We moved out here six months ago, and in spite of getting the three colors starting to change, it was still 89 degrees yesterday. Wow. Wow. So we're still warm. 55 in the morning, though. Russell, how are you doing?
I'm doing good. Yeah, I was actually, speaking of the 89s, I was just in Texas last week for a wedding in San Antonio, and it was like the mid-high 90s for almost the whole time, crazy muggy. But I'm back in Shoreline, Washington, just a little outside of Seattle, so back to the nice, cool weather, a little bit of rain, getting the fall colors as well. But yeah, with JSON, like Zanon said, it's kind of very highly ingrained in our toolset for many different things, like parameter passing and communications between different processes and things like better forms that we, you know, me and Jacob, quite use a little bit here and there for some clients, that's pretty much, completely packaged in JSON when you build your web pages.
So it's quite a useful tool for everyone here. So yeah, happy to discuss. I think any communication with any internet technology is all JSON, Claris Connect, of course, but also just all the, everything out on the internet for API integration, once JSON formatted data. Yeah. It's old, too. It came out a long time ago, like a couple of years after XML, which was like 1932 or something, not that old. Like 80s, 90s, a lot longer than you think. I like Mike's quote, but he, he isn't on the call today, but Mike's quote about it's the Rosetta Stone between environments, which was a pretty good summation, right? Yeah, yeah, yeah. Be a good title for this podcast.
Is it, didn't they use JSON when they were breaking the Enigma code? I think they did. Not quite that old. It would have been helpful. Let's start with our guest instructor. Matt, what is JSON? We're all talking about how much we love it and how critical it is, but what is it and why do we care? JavaScript Object Notation. You can take that right in and out because it doesn't really matter for anything, but that's the name. It's a, it's basically a text format. It's a structured format of text. So basically all the punctuation is, allows you to have nested information. So it's not just flat. You can actually have a JSON text. Object that represents a FileMaker database with related fields.
All the information about a company, all the employees who work there, all the other information about them, all the invoices, et cetera. It can be in one text thing and it can, and it's native to FileMaker. So the flexibility and the simplicity, simplicity and the readability of it make it just a super useful tool. So how old is it then? You said it was. Reaching back, and it's not, it's not JavaScript, I mean, it's got JavaScript in the title, but it's not JavaScript. No, well, it's not, it's, it's kind of related to that because it goes back so, so long. Yeah, 1990s, Official Standard RFC, yeah, Doug, Douglas Crawford, Crockford invented it in the early 2000s.
Yeah, anyway, so it's been around 20ish years. Give or take, but it wasn't really the rage back then, right? It was a little bit more obscure. It seems like it's really come into, well, certainly come into FileMaker users lives a lot in the last five years or so. Have any of you guys been using it more than five years? Yeah, I think definitely. I mean, it was, it seemed like everybody else was using it and FileMaker didn't have any way unless you're using custom functions. So, yep. It's, you know, it was just every, everything was breaking out tool sets to be able to interact with JSON from different IDEs if you're writing other programs and software.
It's, it's so, such a basic and yet useful tool, or not tool, but useful data storage for being able to tell quickly what something is and reference it without having to get all complicated. Yeah, like XML is, for example. Yeah, but XML, yeah, exactly. Like XML being the difficulty with XML. XML and it's complicated, sort of, even though it's simple, right, it's, it's got that complicated sort of tagging process and it's hard to sort of look at and visualize. Whereas JSON is just, you know, it's just like you read paragraphs within dictation, super easy. What would you say the fundamental differences are between XML and JSON? Because I don't know if I could explain them except for ease of, ease of use.
Yeah, ease of use. Yeah, readability. Yeah. Yeah, XML has it, JSON doesn't. I don't know of any, I, I think it's like if you hit all the tagging in XML, it'd be very similar, but I'm not for positive because I haven't worked with XML for a while other than just, you know, when I have to, when I'm forced to. Yeah, XML has a nice advantage that you can format for data types, and so your output can be, you know, Word files or Excel files or other types of data formatting embedded into the XML. Yeah, XML has a nice advantage that you can format for data types, and so your output can be, you know, Word files or other types of data formatting embedded into the XML.
Yeah, XML has a nice advantage that you can format for data types, and so your output can be, you know, Word files or other types of data formatting embedded into the XML. So as long as you can transfer, you know, convert it out, you've got a lot of options as far as how you want to present that data. But it's overly complicated. Yeah, I'm going to say a little thing on ChatGPT, it talks about like namespaces and mixed content attributes and XSLT transformation. So there definitely are some features that it has that JSON doesn't have, but anyway. All the more ways to get lost, XSLTs are... They're useful, and then at the same time, they add a layer of complexity that makes them difficult to access too, so.
I think JSON is just easier to teach in general in comparison to XML. You know, newer developers, I mean, we pick it up much faster. And since it's native, since it became native to FileMaker in, I think, '18, the features that FileMaker has, JSON Get Element, JSON Set Element, two absolutely key ones, are so easy to use and so powerful that you... Basically, if you're a FileMaker developer at this point, you cannot afford not to get really good at using JSON. It's no longer really an option, even for just regular FileMaker use, in my opinion. I have opinions, I even have like a... I started a new podcast series or a new video series called the FileMaker Opinion Page.
You can find it on navar.training or on... I'll make a couple of plugs here, not too many. Absolutely, no, plug away. Yeah, one of the other things, like, you know, where I am in the industry, how long I've been in, I get to sort of start sharing opinions now and not really care if people... But also, I really want to have the disagreement, I want to have that conversation. But yeah, I certainly have a strong opinion about that. It's something that you cannot avoid if you... Are watching this, listening, and you don't have much knowledge, go out and find a way, find someone to help you with it. Take one of my free classes, you know, find a way. The classes are free?
Well, I offer free classes that are 45 minutes on a bunch of different topics. And then a week or two later on the same topic, I do a two-hour integrated class that's not free, where we dive in and actually have people share their screen. And then I do a two-hour integrated class that's not free, where we dive in and actually have people share their screen. And then I do a two-hour integrated class that's not free, where we dive in and actually have people share their screen. And then I do a two-hour integrated class that's not free, where we dive in and actually have people share their screen. And then I do a two-hour integrated class that's not free, where we dive in and actually have people share their screen.
So like, if you haven't used JSON, you could come to the paid class and then actually learn how to use it in your system. Give you a bunch of sample code, look at it in your scripts. So, and in that class, I don't even share my screen. There's no, it's just all interactive people with students. Super fun. That's how I love to teach. 'Cause I just bought the O'Reilly book on it and started reading it, and that's as far as I've gotten, 'cause then I was overtaken by events. But after watching Xandon integrate the Google Maps API with turn-by-turn directions, like, I gotta get this, I gotta figure this out, 'cause it was super cool. Yeah. So, so that's the best way.
You think the best way to learn it, for somebody to learn it, is to, you know, find an online video. I mean, I'll tell you, most of my FileMaker core learning came from watching Chris Ippolite's courses on Lynda.com. I watched them all, over and over and over again. And now, I turn to ChatGPT for my coding assistance. As do I, and as does Chris. So yeah, the other plug is, he and I have a podcast called Claris Talk AI. This, hopefully, we'll be releasing this recording in the stream of that podcast as well. We'll post. So using ChatGPT is an excellent way to learn it. So it's, ChatGPT is okay at FileMaker, but there's not as rich of information out on the internet about it.
There's a ton about JSON, there's a ton about execute SQL, there's a ton about JavaScript, so all these other things, it's just almost perfect at. And since one of them is JSON, it's a really, really good way to learn. Anybody have a use case, a project? Where they found that JSON was, like, the default, the de facto? All of them. Yeah, all of them. And even then, like, and, you know, as I talked about working with large data sets, once you start using some in browser, you know, using the web viewer, Java, JavaScript items to display it, then it's so much faster in working with extremely large data sets. For lists, for showing the information, for graphing a whole nine yards, and even using other JavaScript functions, which, you know, are going to rely on native, you know, on JSON, they, you, it's so much faster, so you're no longer having to traverse through records in FileMaker, you just have to have some way to cache them, I think, is the.
Right. So what, what do you define as a very large data set? Well, you know, everybody wants to toss in, you know. Thousands and thousands of map waypoints, right, or places into their maps, and have the pins show up all over the, all over the map. And so you quickly, you know, after, if you have to go through and cycle through that, you know, just a few hundred records, thousands of records takes a little bit longer, but once you start hitting, like, millions of characters, the process of loading per record, it just isn't feasible. can handle it super fast and it just sends it over as one one chunk of of data so so there's some really efficient ways to work with it once you have it in json um the difficult part there is managing how to insert and uh update the json uh because you are going to be storing information in it as a cache versus for filemaker you're accessing the data live from each record or so like you start getting costs right cost there's a lot of costs involved every one of those uh those uh insert from url calls is there's a cost from google for that and you you can quite quickly hit that
whatever it is 200 a month free cap and then it starts to get kind of pricey so we you know and that's what's going on with the uh world track web uh call right now that's five thousand seven hundred and eighty two records and as you send five thousand uh seven hundred and eighty two insert from url requests one it takes a lot of time but every one of those is a separate api call yeah well you can just make one and get the whole thing well can we make that's my that sounds like we're not doing it right zandon well see the way that the way that google maps would do if you just go to the website is it dynamically loads it as you see it in the window right so if you're looking at a window of your of you know yakima you see the 47 pins that are in that area if you zoom out then you'd see more but then if you zoom into another area and you go down to portland or eugene or whatever then you would see those pins and actually you could do this with filemaker because one of the one of the things i love most about json the json set element command specifically is that you can append existing json um so if you have a bunch of stuff already in there you can use to just add stuff or change stuff and nothing else in filemaker kind of works that way
um and so that's definitely one thing i love about it also there's a json delete element command that you can take you can delete like some chunk of it or yeah those are the super powerful things i i know you guys love those too oh definitely those are key to being able to update a large cache um and and to to clarify um excuse me what dan's dan's talking about is um he's you're talking about a lot of different things that you can add to a lot of different things so you can add a lot of different things to a lot of different things you can add to a lot of different things and you can add things to a lot of different things and you can add things to a lot of different things and you can add things to a lot of different things and you can add things to a lot of different things and you can add things to a lot of different things and you can add things to a lot of different things and you can add things to a lot of different things and you can add things to a lot of different things and you can add things to a lot of different things and you can add things to a lot of different things and you can add things to a lot of different things and you can add things to a lot of different things and you can add things to a lot of different things and you can add things to a lot of different each time. So there's a little bit of a constraint there. If you could cache it, then it's a completely different function, right? So there's two different apps there. So the one that Jacob worked on, which is the automatic identification system, where we're pulling data from a live stream of NEMA sentences and then converting those to JSON so that we can pull the data that's coming in off the stream into FileMaker. So that's one thing. And it already
has the longitude and latitudes and all that kind of stuff in it. But the one we have, we've got 270 separate locations around the United States where oil spill response equipment is stored. And that equipment might have to be dispatched to any number of locations oil terminals. So we have the data for where the equipment's coming from, but it could virtually go anywhere. And so that would be difficult to cache. Yeah, got to do a query. But then you guys would use better forms, right? The other things you would well know is, because it's also JSON native, is it's extremely efficient at getting, uh, at being sent a bunch of JSON with a very simple request. Um, so, and have as having a script and FileMaker that has the logic to, to make as few requests as possible to get that data. Um, so, uh, I don't know, maybe just using your example, it would say, oh, okay, well, I'm only getting something from this location. So only look at the inventory in that location. It's only going to these five locations. So only take a look at the subset of records that
are going from that to those five locations, and then do a single API call request to that set. Um, and then package that up and display it, however you're going to do that. Yeah. Yeah. How are you doing it? Yeah. You could filter down the JSON. Definitely. I mean, if you're using better forms, I mean, as long as you had a filter by location, I mean, there's even functions that we have. They're not functions that exist natively to FileMaker, but, uh, I think Geist has one that's JSON filter. And you can filter out by specific, um, you know, properties or keys, Yeah. So there's, I think there's kind of some couple levels, right? There's like high school level, Jason. And then there's, you know, postgraduate Jason. Like if you, if you have millions of records, uh, one of the, I did a podcast, um, episode a while ago, um, um, with a guy in England who has a furniture database and he can, he can have an entire kitchen of every single nut and bolt and screw and cabinet and everything. A gigantic three-inch 3d representation of tens of thousands of things in Jason. That's then displayed in 3d where you can grab it and rotate it. Uh, all the data comes from FileMaker. So that's, you know,
that's the higher end stuff. And I think when you get to, you guys can correct me if you could really, really large record sets, you know, like a million, uh, a million objects in a JSON, it's not going to perform well on FileMaker using the native commands. You're going to have to use some other tools. Yeah. Yeah. And that's where I was going to go with the, um, large data set sets, right? When you've got, when you got some large cache of Jason information, um, millions of records, tens of millions of characters, you have to, because of the constraints of FileMaker, you have to get a little creative. And so storing those into, um, breaking it up into chunks so that you can store it in repeating fields, uh, cause you can't exceed the actual character limit of the fields. And then once you have them in there, being, being able to, you know, reference the information and then update the cache. But once you have it there, like all of some, a lot of the, the JavaScript, um, libraries work really efficiently with large data sets like that. Like data tables is great for displaying tens of millions of records and being able to search on it really fast. And, and, and at the same time you can, you know, push it into a Google map really efficiently without, without much effort. Um,
so, so having those tools and knowing how to do that is sort of a big stumbling point. And it all has to do with caching. And if you can cache it, great. If you can't, and that's where we come into API call issues, right? With, uh, with Google, if you can't cache those results or you can't rely on those cache and you have to pull those each time, that's where you end up with those incremental costs, you know, 0.004 cents per call to, uh, to Google to do whatever it wants, whether it's a, whatever API call you're doing. And then, you know, you, but you multiply those by 5,000 and then, you know, it's like a few dollars and then you do that 20 times and, you know, you're like, oh, wow, we're spending a lot of money on that. Is there any way to do it more efficiently? But, but yeah, if you can cache it, that's, that's golden. And then being able to control that through cache in FileMaker is, is the next part, right? Cause if you have tens of millions of objects in array of JSON, you need to be able to, if you update a record in FileMaker, you want to be able to update that and they don't have any clear, easy ways to manage a cache. So you kind of have to come up with your own where you find the ID and of whatever object it is, you remove it, you add in another one and it gets appended to the end. And that way, you know, you sort of
have to do this, this cache manipulation process, uh, to keep that cache as close to accurate as possible. And, and then those closer to the actual, uh, sources as, as possible. If you do them, if you're hosting it on a Fikr, you're running them, saw stuff or running them in an after hour sort of function, but yeah, it's fun. Um, things to consider definitely for sure. Hey, Jacob, I think we were talking about a tool that you use to extend. Talk to me. Yeah. Yeah. Um, so I guess I could, I could share this. This is a, just a BS code feature you haven't seen. So BS code is my, my go-to ID. Um, let me see, make sure I share the right screen here. Are you guys seeing visual studio code? Okay. So this is just a dummy, um, JSON structure. I literally just told, uh, chat GBT to create me something, right? Um, that's what you're seeing here, but the extension is actually, um, an extension for BS code and it's called file maker BS code. And it's called file maker BS code. Um, and oddly enough, this, this extension is, uh, pretty simple. Uh, it gives you
kind of an example of what's possible with this one. Uh, kind of the cool feature though, is it has a run ability, which is JSON to JSON set expression. And it'll literally take any JSON structure you have. So like we're looking at this as like massive and complex, and I don't want to I mean, you know, we, we can, but, uh, we can, we can attempt to have this run it for us. Right. So in this case, I believe, let me just select all of this. I'm going to go to my command palette and just type in the function that wants me to run. And we can see that now I have a JSON set element. Um, and it's the, you know, the BS code extension has broken it down explicitly, right?
Uh, I mean, this is, we probably wouldn't write it this way. We'd probably iterate, right. Yeah. Yeah. Yeah. Or yeah. But as a starting point, like if you had this, yeah, that's cool. And it's nice. Pretty useful. This is, it does a bunch of other stuff too, but, uh, since we're talking about JSON, like this is very nice. And if I just need something on the fly and I know what object I'm working with, um, or I'm creating that object, it's perfect to do that. Just generate it even for like testing. Yeah, for sure. And you got all the array in there with the counters. Um, okay. Okay. I have, uh, so something I've been doing and I'm dying to know if you guys do this as well. Lately, I've been putting a field just called JSON and pretty much every table of systems I'm developing. Um, and I use it to store any data that, uh, I, that doesn't need to be searched essentially.
So if it's anything that you need to store and write to the record have on a list, but you don't need to search on it or sort on it, then you don't have to go creating a field for it. This is especially cool. If you have like some part of your database, that's only like for some period of time, you need to track 20 other variables for something. And you don't want to make a table and you don't want to make 20 fields. You can just use this one field to store whatever structure you want. And without having to make any other field, you never have to touch the graph. To do stuff. Have you guys used something like that? Uh, similar techniques as far as, you know, one of my favorite things to use is the list of, and then building JSON, uh, just, just to store JSON data.
But I, I'm very curious to see on how you're, how you're doing that. I don't know if I can pull something out while we're talking. Oh, that's okay. You know, I'm just, I'm just hearing about it. I'm yeah. That's yeah. So you're, what you're saying is you're, you're just storing non-indexed data in a field. And is that field indexed? Uh, it doesn't need to be, cause you're not really, you could search on it. So for example, let's say you have, um, you have an address field, right? Uh, address a state zip. Traditionally, we have all had those as separate fields in the database, but you don't really ever go searching on the address. Like in the use case that you have, that's not a field that you search on.
It's not a field that you sort on, not, not any part of it. If you had a single JSON field, then you could use, you could use a single JSON field. And then you could use, you could use a single JSON field. And then you could use, you could use a single JSON field. And then you could use a single JSON field. And then you could use a single JSON field. And then you could use a single JSON field. Globals are some other way to get the data into it. You could display it with button bars, calculations or a layout calculations or whatever on the layout. And then later on, if you say, oh, we want to add country, or we want to add, you know, another line of the address or some other aspect to it. Um, you wouldn't have to go to the structure. You would just say, oh, from now on, I'm going to add one other global field to the ladder. We're going to add this one other thing.
And it doesn't matter that none of the other records have it. Um, uh, I just find that super flexible. So I'm, I'm kind of cutting down on the number of fields I make in all the tables I make these days. Oh, I see what you're saying. Oh, that's interesting. So basically it's classifying FileMaker fields in two groups, right? The only field storing is, is the JSON and they're just entering in values into like a global space that that's what's happening for the storage of the place. So like for, for checkbox fields or for things that you don't actually have to have inner, um, uh, like a dialogue box or something to enter into, you could store any number of toggles into one Jason field, and then you can just have a button bar that looks to see if the Jason, if that particular thing is on or off and then display the state on or off. And if you click it, it just switches the state. Um, I love that.
Yeah. Yeah, that's pretty awesome, Matt. That's awesome. Those are some, some really cool techniques and ideas. Yeah. Um, I thought that one was recently kind of like light bulb one for me anyway. I just, I was sure that lots of other people did something like it though. Yeah. You used similar like bucket, like a bucket that you just store stuff in, um, non-indexable, um, the summary list view also makes that if you are doing, instead of doing concatenations of fields, um, if you are writing it in there and then you need to make an adjustment. Using the summary list to be able to collect that data, um, is also super helpful for FileMaker on, on fields of that type.
Do you mean like the list of function summary, like a summary part in the layout? Um, you'd add a field in that's, uh, that's got a summary and it's summary list, and then it, you select which fields it's going to list from the table. Ah, yes. Yep. Got it. Got it. Got it. Okay. Yeah. That, that's interesting. I hadn't actually tried that one, but that really makes sense if I think about it. Yeah. Got it. Got it. Okay. Yeah. That's interesting. I hadn't actually tried that one, but that really makes sense if I think about it. I'm actually, and I was thinking about that the other day, Zand, and, and using the make array, uh, uh, function to, so you build out your list and then just use the new, uh, make array from list, uh, to build out, you know, your, your, your, your variable essentially of the JSON, um, or putting it into a field, uh, but it might make it a little bit easier, but I don't know.
Here's another one I'll throw out and I'm curious for your feedback. Uh, I teach classes on dashboards. I'm a huge fan of it. Uh, my definition of a dashboard is basically kind of the landing screen you come to that is, that has meaningful, actionable, and visual. If it's not all three, it's not a dashboard. Okay. Opinion. Um, and so when a user lands on that page, uh, uh, depending upon what they're, what they do, it would do some sort of a query and it would go say, okay, well, if these are the 10 followups you have to make, this is what I'm going to do. This is the number of orders this week. This is blah, blah, blah. You can just basically show that data. So I have a, uh, like a piece of script or something that go gets all the information and sticks it into a JSON global field. Another thing that I do is I have one JSON global field. Um, uh, that's extremely easy to get to, uh, from anywhere in the database. And then that can store all of this information like dashboard type data. And then the layout shows that what I love about it is it's not flashy. So if someone else goes into the database, it doesn't, you know, flash. It's extremely fast to display, uh, and flexible to develop. You can have that same field work completely different for different types of users. And then a hundred percent of your complexity is in the script where it should be right. Scripting and layouts are the only places complexity should exist in file maker, not in calculated fields, not in, uh, complex graph structures. Anyway, more opinions. Yeah, no, it's interesting. Uh, so when you mentioned that
you can access like a global field from easily anywhere. Are you, are you one of the ways I've found that I've been doing that now was with the XU data API. Um, uh, and then you can make a call to anywhere, you know, uh, in the solution, as long as you've got a layout with that field on it, you can push and pull to that, to that field without having that, you know, with that, uh, the permission turned on. Um, so are you, is that a way that you found a push and pull data, uh, you know, in this format, uh, in to a solution out of a solution, you know, wherever you want? Yeah, I don't, I don't, for the stuff I've been playing with recently, I haven't really used the data API function to do that. I kind of just get stuff as I go. So in other words, it would like when the user logs on, um, it would go get their particular information using the security level that they already have. So, you know, go look at customers, go look at whatever, and just go do a bunch of, uh, um, you know, go to layout, enter, find mode, set field, perform, find, grab, uh, the data, you know, however way you grab that loop through it or whatever, or use the list of function. I love that one. Um, uh, or, and, or you can actually use, you can, with a list of those records, you can actually look at the Jason fields and all of those records and make it even easier to get all of its data. Um, uh, so, you know, kind of stacking these things on top of each other, but then basically having all that stuff in the global, because you can write to the global
and get to the global from any layout in the database. A valid relationship, right? When you're referencing it as a global, just not to go off in the weeds too much. Um, are you talking about a global field, a global variable and how, how are you? So you're doing as a global field and you talked about P sauce. How are you referencing that? If you do P sauce to set that global variable field, how are you pulling that back at client? For access? Am I missing something there? So what I do is, um, uh, everything I do is when development, well, I'm in Europe, right? My, the server that's closest to me, the AWS data center that's closest to me is in Germany, which is a thousand kilometers away or something.
Um, so when I do work for clients all around the world, I latency is a thing, right? So, um, so I use a P sauce and a wait for the result. And so I send the Jason to the, to the script to say, here's what I want you to do. And then the script runs. and then sends me back using exit script with result with a JSON blob that has all the stuff I want. So that's how I do that. And you know, it probably would be more efficient to do it with a data API call, but I don't know, I'm really a core FileMaker guy. So having, if anything that I can solve by using regular FileMaker script steps, it's certainly easier to teach it that way. It's, I think it's just kind of easier to maintain unless there's a really good reason to do it a different way.
'Cause I mean, you could do all this with the execute SQL too, right? - Right. - Yeah. - But it's slower. It's always slower. - SQL especially. - Yeah. - It's always a balance between cost and efficiency. - Yeah. - And even if you had a data API call, that data API might actually still need to run a script. - Yeah, true. - To get the data, to get whatever set you have. So perform script on servers is great. And then I love it 'cause you can also have a little toggle, right? I'm debugging this. I put it in local mode and then for speed, I put it in server side mode and then I can easily test to see if it's working or why it's not working. - Yeah. We, you know, what's funny is we actually did one for a client that kind of, this is more in that esoteric realm, where we needed to take a large data blob of JSON and pull it over to mobile.
And to try and do it one record at a time or anything like that was just, was not functional. But even then we hit the character limit for storing it as variables and then being able to find what you needed to out of that once you had a variable. So we had to get really creative where we created a large chunk of text that just got set in one chunk. So it was as fast as possible. Latency was not, you know, just one big chunk. And then at the, at the end point, we would cycle through that and quickly build thousands of global variables that are indexed based on that, on that text chunk. So then it, and it could do that really fast. It could build those. And then once they were there, then they were accessible at the, at the, you know, at the mobile device or client level, right, efficiently.
But that was a huge hurdle, like to try and get for, with latency, it was huge. It was a huge problem to try and get a large data set, to the end client, packaging it and then unpackaging it. But then we hit the other limit where you run into a problem with globals, they can only store so much text. So we had to get really creative and create hundreds and hundreds and hundreds of globals to store each individual object. - Like a global variable? Cause a global field should be able to store. - Yeah, global, there, well, we, yeah, global field. We put them in a global, a global field, and then we pulled them apart into global variables. But the global variables have a character limit.
So, yeah. - Yes, they do. - But you can create thousands and thousands of global variables without, you know, fairly quickly. So, and that's way faster than trying to reverse through a large JSON object. So some, some key things, again, a little down in the weeds. So hopefully it's not. - Yeah, yeah, yeah. I'm chat APT-ing in the background. So a global field in FileMaker can still store two gigs of text, the same as a stored field. So that's going to blow way past the limit of what you can do with a global variable. But your, your solution sounds great and you could very easily just bust that out. And, and I think that global variables or any kind of a variable is still as faster than a global field to do functions on.
Yes, I haven't actually tested it at high pressure levels. - Well, so if you put it all in a field, not a, even if it's a global, well, normally it wouldn't be a global, if you put it into a field, non-indexed, of course, you have your character limit of that field of what it can store it. And you can use repetitions to store larger character volume. - Yeah, I didn't hear that. - Okay. - I'm sorry. - No, that's a completely, yeah, that's a completely separate, that's a completely separate one. But once you start hitting those field limits of a field, the character limits, then you have to get like very creative and start to do repetition so you can increase the character limit.
- Yeah, or more records or something. - Or more records or something. But yeah, in this instance, it was just, we needed it as variables. It needed to be really temporary, really fluid, and having it in a, in a field, just wasn't, wasn't efficient. And trying to send it as just one blob was-- - So for sure you actually have had more than two gigs of text. - Oh yeah, yeah. - That's a hell of a lot of text. - Yeah, it's, it sounds like it. But when you're talking about, you know, it sounds like it, but it really depends on what the data is. Yeah, and it's easy to add it up. Yeah. And it doesn't take-- - I haven't worked with that much text in a long time, so. - Yeah, we were, I was pushing hundreds of millions of characters to see what our upper limits were for data tables.
And data tables still, like, very responsive. You know, of course you couldn't, it's incomprehensible to try and have FileMaker manage anywhere near that, that number of records. But, but data tables could still, like, you could still search on it. Like, it took a moment for it to all load into, into the web viewer's cache. But once you had it there, you could quickly query on it. And so that was the, that's the limiter, right? Of what, what your upper boundary is. - Yeah, like a RAM-based database at that point, yeah. - Yeah. So lots of fun. And so the same thing with, with mobile. Like, if you package it all up into one chunk, send it to the device or the client, and then unpackage it into variables at that point, you can still work with large data sets without having the cost of the latency back and forth.
You do have, it is cached data, right? You're, you're not-- - Right. Well, this is the whole, the whole value proposition. - Yeah. - With better forms too, isn't it? Right, you have, you have, you know, your, your separation of functions. You have the, the UI handle all of that stuff and have all that stuff local and be able to parse it and slice it and dice it and sort it, no matter how much data is in the, the, the blob. If you've got, you know, your, your two gigs of text or more or whatever. I don't, I'm glad that I don't have to work with sets that big and solve problems that big. - Yeah. - I like my, I like the size problems in front of me right now. - Wow.
Well, I think we've gone through the agenda for the most part for this. Does somebody have a recap on JSON they want to toss out? - Well, I do have one quick question just on some of that. Does anybody have any favorite tools kind of they use for debugging and testing or even just building, building JSON, filtering it out? Make sure your data is correct before you're actually using it in a production environment. I'm curious. One of my favorites is JSON formatter, but that's a pretty common one. Just 'cause I could pull the data out, look at it in JSON formatter, filter it, make sure data is in the right place before I'm actually, you know, using in a real use scenario.
But is there any others that kind of pop out? - I mean, I use, it's so handy. It's right there. I use the data viewer quite often to kind of test my JSON and how I'm indexing things. - I've had a couple headaches with using the data viewer, just especially in larger data sets. And I like to do them separately if I'm in FileMaker. I don't want to have to rely on FileMaker to give me my expected result. I want to use another tool to give me my expected result. - Right. - To validate. But yeah, there's a lot of, especially, you know, I use JSON so much for parameter passing. I'm only checking that in the data viewer. - Right. And I'm sure Jason would, or Jacob would talk about the, the visual, which is huge for that.
And ChatGPT also would be great. It doesn't store stuff, but it's good for validating. - Oh yeah. I don't even think about using ChatGPT to validate my JSON. - Great for sample data sets too. - Yeah. Oh yeah, for sure. - I think that's one of the really fun parts about this is once you get them in JSON objects, we're no longer in the FileMaker realm, but you can use the web view, and you can see what's happening. - Yeah. So if you were to display it, and so now you can use all of those wonderful, cool features of, you know, there's all sorts of tools for AI to build you an interface based on a JSON data structure and give you interaction with that. And you can almost do it on the fly.
You could tell your LLM, you know, make me a quick questionnaire based on this data structure where I can click this button and this button to toggle this and this. The UI is created and you can interact with that JSON. - Yeah. And it's getting pretty reliable now with the recent updates, whether you're using Clod or ChatGPT, but yeah. - Yep. - One step closer to no UI, where we don't have to actually build UI anymore. We just let the LLM build it for us on the fly. - Yeah. Matt had mentioned like, you know, dashboard building, you know, utilizing JSON. Some of our clients or our projects we, you know, when we build like our button bar nav system, you know, it's like, you know, all of a sudden you're like, "Oh, I don't know how to do this."
It's oftentimes we're storing in like an admin table, kind of what our tab name should be and where the layout should go to. And then all the button bars are defined using JSON and parsing it out based on, you know, the index of like the number in the nav button bar sequence, and then using, you know, scripts to kind of go to layout based on the JSON, what it returned. And so, yeah, just kind of harking back to that, using JSON and the dashboards. - I think Xandon where you're going though is like to not have a dashboard with any FileMaker or anything. You basically just have that code be generated on the fly and show you the data in FileMaker or whatever on the fly.
- Yeah. - So that you don't have to do any of the predicting. Chris and I have talked about that quite a bit too. - Oh, really? I gotta check out you guys' podcast. That sounds super good. - We have a lot of fun. - Yeah, we've watched a couple episodes. - We started the first several episodes are like walking right through the stuff you needed to know about AI. He kind of defines it and I'm the, I, Dan, I have your role in it. - Yeah. - And I'm the, Dan, I have your role in it. - Yeah. - I'm the, Dan, I have your role in that podcast. - Okay. - I'm the dumb guy, the citizen developer and he's the post doctorate giving me all the education so I can ask the dumb questions to make sure the pace doesn't go.
Okay, one super off-topic thing that you have to do. Ask ChatGPT for a list of things that you probably believe that are not true. - Oh, okay. - Like you guys probably think you lose most of your energy through your head or whatever. Yeah, no. I did that just as a, just as an experiment and found that there's a whole bunch of things that I've believed all my life that are not true and it cites the reference in any way. Super fun. - Wow. - That's fun. - To try. What else you got, Dan? - Joe, what else is on your list? - You know, that's, that's most everything. There were a couple, you know, like tidbits of like you making a note about the new commands, you know, and FileMaker, the colon and plus operators.
I think that's something that, I mean, they're super helpful. Other, I don't know how much there is to discuss with them, but we could talk about that. - Those are a little bit more obscured, but they're definitely useful for working with the ways, but then the list to array function, am I trying to remember the name, is crazy useful. - Yeah, make array, make array. - Yeah, make array. Yeah, that's the one, yeah. - Fantastic. - I think I'm going to have to give it a different query. So things, you swallow spiders in your sleep. - Yeah. - I never thought of that one. That's not. - I never thought of that one either. That one actually came up on my list as well, 'cause I was an urban legend and I probably never got, but.
- Shaving makes your hair grow back thicker. I know, I never gave that any, I never gave that any thought. - Some of them you can skip past. You got, those are two of them that were on my list as well. So this is interesting. - Yeah. - That's interesting. - Goldfish have a three-second memory. Now I believe that, I joke around that all the time. It's like, ooh, look, castle. Ooh, look, castle. Okay, so I did believe that. - They can actually remember for like weeks or months. - Okay. Lightning never strikes twice in the same place. Yes, I've heard that. Humans use only 10% of their brains. Now I've heard that forever. - Not true. Some of them I knew, 'cause I'm a science nerd, but.
- Yeah. - All right, well, this might be good. I might have to narrow in. Things I thought I knew about outer space, but are not true. I think, get a little more narrow. - I look at fun. - I've started giving ChatGPT a lot of context when I ask it things. Like for instance, we're going to sit down and write a new section for an after action report for an oil spill. The audience of this after action report is going to be both the public, but also elected officials. And one of the messages that we intend to get across to elected officials is the need for additional funding in this area. Let's begin. I'm going to give you the following 10 documents and now write me an outline.
I mean, real context. - You can also put all of that into an API call in FileMaker, right? So like when, as you're using it, a lot of that can be there to get much better results. - Yeah. I find that if I give it, you know, a lot of context, you know, who this project is intended for, you know, what the objectives are before I ever give it a document. And then I just start throwing documents and I wish it could take more than 10 at a time. - Well, that's why I was talking about the custom GPT thing. So where you can actually have a whole set of them, like over in your pane on the left, you can actually create any number of them. And each one of them has its own context and its own set of documents and its own set of sample questions.
- I have done that to some extent. I've got one called regulatory advisor and I've given it all those. You know, oil spill references. And I've got one called script master pro for FileMaker, but I don't really use them anymore. I found that just go into a new chat text. I just say, hey, we're starting a new project, start a new notebook with its own memory cache and we're going to work on this. And that's the way they... - That's actually the way they use it in cloud as they call it projects. And Google's got one similar, right? Where you can have it reference all volume of stuff. Stuff scored in your Google drive. But using those as features are like starting to become, that's starting to become the basic of what everybody's using.
'Cause nobody wants to type out a large prompt and attach documents. They just want to say, here it is. Here's the reference. I always want it to be looked at from this viewpoint. And you know, you do this magic stuff for me. And so yeah, projects in cloud allow for that. Chat GPTs allow for that. But those are still like evolving so quickly. I can't wait to see what like we get to have in the next year as all of these top models come up with better tools to interact with ways of manipulating all this AI. - Yeah, yeah. Yeah, the UI for AI, right? How do you get access to it? And stuff like that is a big thing that's changing quickly. And yeah, the models like the token window size from, you know, 3000 to 12,000 to, oh, a million, what we have now, you know, it's just insane.
- Yeah, and have you found that the, so I work on a Mac and I find that the chat GPT app for the Mac is not very good. That it, you know, it stalls, it doesn't give results. And if you then just turn around and use it in the web browser, it works great. So I don't know what the deal, what the app is. - Yeah, I found that a little bit of that. I actually had this, an issue with trying to upload a PDF, it was broken exactly the same way, both on the app and the web browser, so. - Well, we'll see. Are we gonna need, I guess we've devolved into AI, but am I gonna need the iPhone 16 to really take advantage of the next round of AI stuff coming out of Apple? 'Cause I'm very seriously considering buying it.
- I just buy them for the camera. - Yeah, well, there's that. - I have no idea. So it's gonna be really interesting to see how much on-prem or if not on-prem, like on-device AI processing, 'cause that's what Apple's really all about, right? Privacy. - Yeah. - And with a much better processor, like how realistically, how much more can it really do? That, we don't really have any of those features yet, but yeah, it's gonna be interesting. I'm in the same boat as you. I haven't yet got my 16, but I want one. - Yeah, yeah, I want one 'cause I'm running a 12 and it's like the battery's only lasting a half the day. So it's time. Well, this was a great episode. We've devolved into AI as almost every conversation does.
And I've had a great time doing it. You know, thanks to Xandon and Jacob, Joe and Russell, and a special thank you to Matt Navar. Tell us again where we can find your training classes and your podcasts. - Navar.training. It's all there. - I've pulled it up. I have it on there. I have it on the screen. - And I have a couple of YouTube channels. You can just go there and search for navar.training or Matt Navar, I guess. I don't know. Yeah, they're all linked from my website too. - Excellent. Well, thank you everybody. This has been a great episode. I hope the audience enjoys it. Now, you know what's coming. Get back to work. - Not me. - Yeah. - He's off now. - Thank you.
- See you guys.