Skip to content
Melo Podcasts Home
CategoriesLanguagesFollowing

Episode notes

This week on JavaScript Jabber, we’re joined (again!) by Val Karpov — the maintainer of Mongoose — to talk about what’s new in Mongoose 9, how async stack traces are changing the debugging game, and why AI is quietly reshaping the way we build developer tools. We dig into stricter TypeScript support, the removal of callback-based middleware, and what it really takes to modernize a massive codebase. Then we shift gears into Mongoose Studio, a schema-aware, AI-enhanced MongoDB GUI that brings streaming query results, map visualizations, and even LLM-powered document generation into your…

Transcript

Read the transcript · about 9,360 words, follows along as you listen

Speaker 1:Hey, folks, welcome back to another episode of JavaScript Jabber. This week, on our panel, we have Steve Edwards.

Speaker 2:Yo yo yo, coming at you from away too warm Portland.

Speaker 1:I'm Charles Maxwood from Top End devs. Well, I'm too far west for that big cold storm. But it's still cold here.

Speaker 2:It's maybe too warm. Man. Our snowpack sucks. Yeah, been able to get any skiing is just awful.

Speaker 1:Yeah, same here. People are worried about water. I live in Utah. If you're not aware, we have a special guest though this week. That is Valeri Karpov. Do you want to introduce yourself. I know we've had you on before, but just remind people who you are.

Speaker 3:Yeah, Hi everyone. My name is Belle. I'm the maintainer of Mongers. I'm popular ODM for no JS and Mongo dB, and I do freelance web development. I'm based in Miami, Florida, which is much colder than expected. I had to turn on the heat for the first time. I'm telling Chuck, first time turning the seats. I moved to Miami about seven years ago. That's brutal.

Speaker 1:Yeah, I feel your pain. Yeah, my son's on a mission for the church. In South Carolina, and yeah, apparently people don't deal well with cold there either, so.

Speaker 3:No, not used to it. I mean, yeah, I have never seen Miami. I haven't seen Miami break into the thirties before since it's been a while.

Speaker 1:Yeah, I was accused of not teaching him how to drive on the ice, which I know isn't true. So anyway, let's dive in. Let's talk about Mongoose. I'm assuming that people have some idea of what it is, and I really want to get more into you know, features, functions, you know, it seems like a lot more adoption of AI. Where does it? Where does mongoos get us from there? But just kind of set the stage to get us going, like what is mongoose And at a high level what does it do for people?

Speaker 3:But a high level, it's like an O R M or O D M and no sql land or for no jas and malgaib so it provides you like the M and MBC or for working with mafugedd B. We recently released Mongoose nine, big breaking release, first major release that we've had in two years. Got a few a few cool new features there, and then we're also working on a mungo centric muggedy b gooy called Magus Studio that would like to take some time to talk about. And then yeah, there's something else that you want to talk about. We also are we've been working on a kind of a plug in with with the data Stacks team.

Speaker 3:I guess now they're IBM that what's mongoose talked to a patche Cassandra via Data Stacks data API. So those are kind of like three topics that I think we can discuss related to Magus that are a little bit of a little bit newer and a little bit less less of the standard mongoose stuff. If you want to talk about kind of high level what mongoose isn't one out, we can talk about that before we can talk about one of the three new things that are going on.

Speaker 1:Yeah, I think like O rms and you know, or in this case ODMs, which I'm assuming D stands for document instead of relation, are probably pretty well understood, and I'm assuming that you provide a lot of the standard features you see from other O rms or or like libraries. So let's let's dive into the new features and if people want to learn more they can go pick up. I think we've had you on before to talk about Mongoose, and so they can probably go find an older episode that gets into the fundamentals of what Mongoose is.

Speaker 3:Yeah. I think I've probably been on JavaScript Chad at least work times in the last twelve years, give or take.

Speaker 2:Yeah, we did views on View twice too. I was just looking that up.

Speaker 3:Yeah, yeah, I might need to do views on View again because Mama's Studio also built a view so that could be a fun Oh is it really? Oh cool?

Speaker 2:Yeah, I'm not doing that podcast anymore, but so we can talk about it here if you want to. This is where we try to squeeze in a little bit of view in job the script here.

Speaker 3:Okay, Yeah, that's something we can talk about too. Yeah. I pretty much all of my software developed in view these days, unless unless I'm working for a client that has a strong front end preference. I cool.

Speaker 2:So what's new and exciting in mongoos will now.

Speaker 3:So Mongsteine, it's less about kind of like flashy features and more about producing long term friction and specifically to type script. I think one of the things one of the major changes that we made was before we had it, so that's functions like find, which is the general way that you execute a query to load some documents. In Mongoose, the typescript types there were very permissive and just let you pass in whatever you wanted. We for Mongus nine, we made that more script and made it so that's okay, we have explicitly strong types or for what parameters you can pass into a query filter. The advantage there is twofold and in one one that helps typeescript catch typos and whatnot. And for developers that don't use type script very much like me, it helps with autocomplete because before the fact that it just gave you the fact that the types where just any object goes into find, that meant that tools like visual Studio code could figure out, like what are the properties that you should autocomplete, So now you actually get nice little auto complete drop downs or for query filters and the other The other big

Speaker 3:thing that we added was was like full a stinc a sink stack traces support in the sense that we used we had so longos was originally very callback heavy. We introduced promises support in twenty fourteen, twenty fifteen, and now in with our last release. Our previous breaking release Monkeys eight we got rid of the user facing callback support in all but one important case, and Alan Mongus nine there's no more user facing callback support. It's all a sink a weight, which means you get ACNC stack traces, which is great.

Speaker 2:Okay, I'm still trying to wrap my head around this. So what do you mean?

Speaker 1:Yeah?

Speaker 2:I understand that. So I'm I'm always big into debugging and being able to get you know, traces, or I'm more of the breakpoint debugger type of person. Uh, whenever possible. So what's an acyinc stack trace as compared to the alternative.

Speaker 3:But if you've worked with stack tracings and JavaScript, you've probably seen things like processed next tick and rejection or list not on timeouts. Those kind of stack traces where you just where the stack trace doesn't show you the actual calling code.

Speaker 2:That could be a problem.

Speaker 3:I've gotten gotten probably a few of those, and the reason for that is is the asik nature of JavaScript. Right when you pass a when you pass a call back into like a set time out function, for instance, you're losing You're losing your call stack when set time out calls the function that the callback function that you passed into set time out. You'll if that function throws an error, you'll see a stack trace that includes Note internals, let say okay, and calling it on timeout, you won't see your code that actually called the set timeout. And this was especially problematic with the callback based code because callback based code, you know, runs a synchronously, right, so you don't see the code that actually called whatever function is getting the callback, and that may debugging Note apps for a very very long time basically made every stack trace and industry.

Speaker 2:Yeah, other words, you're getting everything but what you want, right and getting and you're not.

Speaker 3:Getting your own code. Oh yeah, with a six stack traces, it's pretty sure. Yeah, A six stack traces is like a V eight feature, so it also works in Chrome. But the idea is that if you're calling a sync functions all the way down, even if the actual error is a synchrons, you still get the full stack trace of the actink functions that you call. So let's say you know, you I'm in function I'm in an AC function called A. I call an AC function called B, which calls an ACC function called C, which has a timeout, and then throws an error after five seconds. The stack trace for that error will include ABC, it won't include any I won't to cleave like the known internals for on timeout or whatnot.

Speaker 1:Well that's really handy, Yeah, but there.

Speaker 3:Is you need to You need to make sure you're calling ACYNC functions all the way down. So the instant that, like somewhere in your internals you start calling something that's callback based or call a set time out, you're going to lose the A six stack traits and then you're back to where you started. So the work of there for Mongoose was to get rid of all of our callback based internals pain point there was like the one of the primary ways that you wrote Mangoose middleware was was using callbacks specifically gang like you would say Schema dot pre save. You would get a next callback, kind of similar to Express middleware, where you would call next in order to kick off the next middleware and the chain.

Speaker 3:We had to remove that in order to properly support acing stack traces all way through it.

Speaker 1:Gotcha. So is there anything you have to do specifically to get this to work? Or you just upgrade to Mangouse nine and then you're good to go.

Speaker 3:Yeah, upgrade to Margus nine. Any plugins or middleware that uses that use it next needs to be rewritten. Thankfully, hopefully that's not too many right now. But yeah, but in the age of AI, it's much easier to refactor this sort of thing. Yeah, so I'm a little bit more, a little bit less concerned. Actually, that was pretty much like my first foray into AI code generation a long time ago was was refactoring some of Mogus's callback based code into put into using a Sika weight. This was probably, i want to say, early twenty twenty three. This was like before pers or anything where you could easily select a bunch of code and pass it into pass into open AI. What I did was I I wrote some code to basically parse out some of Maugus's test suites into individual tests and then would pass those tests one by one into open ai is a book API, and tell it, tell it to refactor this into into a synco weight based code. And even back then it did a really good job, got like probably ninety percent of the test suite done, and it took me. It was a like this whole the whole project of refactoring all the tests, like we have thousands of tests, and I

Speaker 3:was working like eight hours a day for several days straight trying to read back through all this, and then I just was like, I'd even tooled for the piss. This is getting insane. So uh yeah, I tried open AI and Opening I did a great job. That made it a one day project as opposed to a multi week project.

Speaker 1:Yep, yeah, I'll have to I have to say that I've used some of those same kinds of features for a number of things, just just to increase my test coverage or hey, you know I need to yeah, rework this, or you know, rethink that, or even add a feature, and yeah it it does a pretty decent job. Usually I have to go in and refine a handful of things and I have to look over the code make sure I didn't do anything stupid. But it's amazing what you can get done with AI these days.

Speaker 3:Yeah, I am the other. A couple of weeks ago, I gave a demo of some new map features we built in Mongoo Studio, and one of the things that I demoed was was the ability to just like, so, I have a one of my clients has a region model, right, It's a region is like a geopolygon forever defining just like a region where they have operations. You draw a polygon in a map that represents Dallas, and this kind represents the boundary of what the company's operations thinks of as Dallas. So creating new regions can be annoying because well, you need to figure out a way to get all the DFAs on points. But I demoed a way where you just lai, like, hey, create a create a region representing Boston. And while it didn't do a perfect job, Mugus Studio's willing to go into Maungus Studio and drag the other urgencies around. But like, yeah, I just like basic models already know off the top of their heads, like where like the approximate lads to longitude of Boston, Massachusetts, or or boise iaho or any pretty much any major city.

Speaker 3:So it makes things, Yeah, a lot of if you do a lot of really amazing things or amazing seeming things with models there just off the shelf, if you let them, and they do give you a good enough job to at least get you started.

Speaker 1:Yeah, if you give them a function that'll let them talk to the internet too. Sometimes if they don't know the answer that they have enough context to go and look it up somewhere, and so that that's the other piece to that that I found is Okay, here's how you here's how you make a call, and it's like, oh, okay, so what is mango studio.

Speaker 3:So MUGAs studio is a gooey for magaritib that's a little bit more higher level than than a traditional database viewer. It's got we're trying to make it one more schema a whare in the sense that in magerty B or maggityb gooies typically don't have a notion of a schema right because doesn't really have schemas by default. But magis who do have a schema, and that lets you fill in things like autocomplete and auto suggest so like auto field names when you're typing in the life or filter input for why. We're also adding a bunch of AI elements in the sense that you can good concrete example, what do you try when you want to create a new document in your database. There's like a nice button you clip to insert in your document, right, and then you get a code input that tells that what you enter in. Okay, I'm going to enter get a creative documents properties, but that can be a little annoying to type out manually. So we also have an AI input there where you say, okay, let's let's ask the AI to generate a document right there without having to go anywhere els And that's kind of how the Boise Idaho

Speaker 3:region example worked, just you know, instead of instead of typing out the entire all the details for the Boise Idaho region, I just have a quick little AI input that already has the context of what the schema definition is for this particular document, as well as what the user is asking, create me a region with for representing plays of Idaho, and then the AI just goes in and generates the generates the output, the user confirms or rejects and can edit it a little bit extra selves looks create. So there's that, and then we're also working on things like MCP server. So if you have a production deployment, well you'll have an MCP server that you can connect Claud too that lets you do have a controlled code sandbox access like you can let Claud have say read only access to your production data or or access to write certain collections but not others. For a little bit more security.

Speaker 1:Yeah, that makes sense, I mean, and we're seeing this more and more right where people are integrating AI into their setup, right, and you know, whether it's taking user input, so the user essentially is chatting with the AI system or at least giving it some kind of prompt or sometimes I've seen folks just basically say the LLM is going to do a good enough job if I ask it to do this job that I don't actually have to write explicit code and cover all the edge cases and make sure that it does the thing that I needed to do. And so both of those scenarios sound really really helpful with something like Mongoose, where you can essentially say all right, you know, yeah, here are the credentials for getting information from my data or you know, here's how you query my data, and then yeah, effectively, then it has much better information to go off of to solve the particular problems that my system or my app is solving.

Speaker 3:Yeah, exactly the longer. In addition to having your STEMA definition, we also have access to things like methods and statics that you define on your on your models, right, So that means that well, Mungas Studio can be aware to some extent of how you write your code and how your application works. But it's a more application centric or developer centric database SCOUI. That's meant that's meant to help developers do their jobs and be less kind of DBA centric, which I find a lot of whether database scoes to be.

Speaker 1:So does it just send a list of available functions to claude when it you know, kind of like MCP, or it doesn't have to be MCP. Sometimes you send a list of functions.

Speaker 3:So we have so for cases like the like the creat input and the chat tab places where we have AI inputs in the UI, there we we call we call out to either like the Gemini a p I and the chat API or prop a KPI, and we pull the context like we have a collect or. We have internal storage that stores just descriptions of the users models, including including the bodies of statics and methods, including STEMA definitions. Okay, so that data gets passed over there for the m CP server. What we do with the server, uh, well there, I think what we passed back is more along the line of like a typescript definition of what models are available.

Speaker 1:Right, and then it just comes back and calls into whatever it needs in order to do what it needs to do.

Speaker 3:Yeah, exactly what the MCP server what we're experimenting with is kind of like a code sandbox effectively for the for the l l M. So we're so like the way that our MP server works is more long the lives of here. The MCP tool is here, execute this code in your sandbox, right, and the AI just kind of gets the context of like this is what's available on the sandbox. So that's what we're experimenting with, trying to figure out how that can work. The other option that we're thinking of is almost like a CLI tool.

Speaker 3:That's something I've been debating on Twitter and to make it back myself as to whether whether I go the m CP route with the code sandbox, whether I just have like a c l I or where the line it's a CLI to do stuff.

Speaker 1:Yep makes sense.

Speaker 2:Yeah, I was just going to say, where has I've been doing some searching where's the Mango U? I keep finding the Mango studio what you call it? Because I keep finding studio three T.

Speaker 3:Many planks for on the website is mongoostudio dot app? Yeah? All one word.

Speaker 2:Yeah, I keep forgetting about these new TLDs we have.

Speaker 1:Yeah, and this is so is this something that I can post on my own? Oh I see in your video example on here that it's it's got to dot versell. Yeah, so it looks like you can. You can play it out to wherever you need.

Speaker 3:Yeah, exactly. We support Brusell Netlify and express right now. So if you have a Verseell deployment, yeah, you don't even need next j ask them to think of it. If you have a versall mangu Studio as a sidecar alongside your interesting application, or you can just run Mungu studio for local usage and you still get mostly all the features. I think a couple of things that are missing or we don't support dashboards for local development. All we do support have like the basic database you were and the chat chat tab is our kind like a chat GPT interface for generating for generating scripts that execute in the momy studio code sandbox, and I think that one.

Speaker 3:The chat tab also gives addresses like one limitation I've seen with MCP which may not be as relevant after last week when they announced MCP apps, but before MCP apps came out like about a week ago, there was no way for MCP to really generate like non trivially. Why so, one of the things that I wanted from the chat tab from the very beginning is the ability to generate scripts or to generate charts and maps from from after language. So the ability to say things like, give me a chart of users created by day for the last two weeks. Being able to do that is what the chattab is good at. But MCP did not really have any meaningful way to do that up until very recent So we're figuring out how to do the MSP app side.

Speaker 1:Cool. Yeah, I'm just looking at this and thinking to myself, I typically use a relational database, but if I were using Mango TIB, I mean, having something like this just it makes it easier because you get to the place where being able to visualize a lot of this stuff, it just it allows you to think about it in a different way rather than being stuck in your CLI or something.

Speaker 3:Yeah. Absolutely, And you'd be surprised how many times like a bug is difficult to spot when you're looking at a traditional kind of like rods and tables data. Basically the gids that you look at a chart, You're like, oh, that's a bug I actually spotted, Like from one of my clients, I spotted a bug that was costing them thousands of dollars just by together a quick chart I look at. I'm like, there's an extreme outlier on this chart. What's going on there? And well, yeah, we've never caught that.

Speaker 3:If I had to look at that one charm and on that chart you just look at, it's like that's squaringly obvious. Thing is wrong there.

Speaker 1:So I was paying you on commission on those bugs, right, six thousands of dollars a month. They have to pay you ten percent.

Speaker 3:Well, if I caused the bug at the first place.

Speaker 2:So when I was working with Mango on Atlas, so I used like a guy called Studio three T. That was just what my company used. How does Mango's studio different from that? Is it just that it's web based versus like a separate app or what's the differences between those two.

Speaker 3:A couple of things. Web based is one big thing for production deployments. In particular, we like to we like to have Mangoo's studio as something that you log into through through UH through either Gmail a lot through Get Help a lot instead of passing around connection strings. So one of the things that we've seen that small medium businesses do is like when a new engineer joins and you want to give them production database access, we just send them like a shared credential or shared connection string and slack and then ask them to hook up put that connection strain in your studio at threep and that can be No, that's a little bit insecure, yeah, Dice, Yeah, yeah.

Speaker 3:What you should do is at least have a share or a separate connection strength for each individual developer, so you can easily onboard off board people rotate it probably once every year at least, but nobody does that because it's it's tedious, it's a thankless job. Just everyone finds it a union and annoyance. No, but he does it. With Mango's studio, we do things a little differently in the sense that you deploy, deploy mongke you studio as a web application, and then people log in by a GitHub or Gmail. So if you onboard or off board someone, you offboard someone, they lose access to their they're no longer part of your GitHub organization, and they lose access to the company email. Then they're automatically removed from Monkey studio as well. So those are two big differences, the production deployments and the well on the web based side of things, Yeah, another big thing is well, uh being mongt centric and knowing about your Monkey's schemas gives you access to things like schema level autocomplete, where again it uh monbu studio knows that your users have a first name property studio three T doesn't necessarily know that it

Speaker 3:can infer it from the shape of existing documents, but it's it's not going to be one accurate that way. Another detail is like, we're trying to make all of your studio a little bit more, a little bit more higher level. I'm a little bit more developer focused in the sense that we want to show data less as rose and columns and as plain text and more as the data that you want, the data that you actually want to see in a useful way. So, for example, for things that look like GeoJSON, we actually have the ability to show the GeoJSON points as mapps. Nice. So if you go into looking a particular at a particular document and it has like a geok song polygon or points, you can actually click to show that on a map.

Speaker 3:A couple of other visualizations that we're adding is for image fields we want to actually visualize or have the option to this as an image and then or for vector data, that's something that would give you worked out pretty cool, and so is showing a projection of the of the vector data or at least making it easier to visualize a bunch of vectors just in your database.

Speaker 2:You are, so, I'm assuming you can also view the data and it's raw format right in your.

Speaker 3:Yeah, the format is the default. But if you but if you want to just quickly look at something a GJ song data point on a map, click a button, don't even have to leave studio, which is nice. Is a frequent pain point for for me. I've been working with geo Data and mal aib for a long long time. Just having that all faked into one database food that's been huge. I no longer have to worry about what I used to have was I had like a script that would take in a would take in latitude longitude points and just give me a Google Maps output that I could copy for account Google Maps that I could copy paste into my grouder to view where this to be where this was, or to view where a point was.

Speaker 3:And then for polygons there there was pretty much nothing I guess I could generate like a Google Maps does have like this static image generators, so that's what I would probably use, was I would just take a polygon and just generate a Google Maps image from a script. But that was an elegant and inconvenience, much easier to just I'm already and day. Basically I click a button to view on the map again, a nice little leaflet map that I can edit drag.

Speaker 2:That was my next question. I was curious to see what library you're using to generate your maps. If you're not using Google Maps anymore.

Speaker 3:It's Sleep. But for for Google Maps, I was talking more about their Google Maps has like this api for generating static map images, which is actually really useful.

Speaker 2:Yeah, if you just want like a screenshot of a map or a one time view as compared to something that you can zoom and pan and that kind of stuff.

Speaker 3:Right, yeah, exactly, or if you wants something that's easier to share in a place like Slack that will support the whole Google Maps experience. Paying the image it's very important.

Speaker 1:So what's coming next for Mongoose or Mongoose Studio.

Speaker 3:For Mongoose, we're probably going to have one more another breaking release this year. We will see about exact timing and scope, but it's going to be our Mongoose ten release if I want to make sure that there's something interesting in there. I just haven't settled on exactly what I want, but one thing I want is more of a switch towards using proxies internally for change tracking as opposed to project of defined property, kind of going more along the lines of how View does change tracking, whether how Magos does change tracking. Now I was gonna say, like views, Yeah, now, View and Mongoose have a lot of similarities internally in terms of the problems that they try to solve. Again, one of the uh one of the core parts of Mongoose is is has changed tracking in the sense that you load a document from the database, you assigned some properties to the document, and then you type save. Mongoose tracks the changes that you made and only sends the changes that you made the database, as opposed to trying to write the whole document.

Speaker 2:So now where is I was going back and listening to simpots from past episodes like twenty twenty twenty twenty one on Views on View where we were talking about Mangos mongoose. So I know Dino's you know, has been around for a while a few more years since then, is uh this mongoose compatible with Dino?

Speaker 3:Yeah, I think we technically still have a helpful support for Dino, and we do. We have been testing on Dino for several years, so I think it's reasonably stable. But I haven't really used Dino very much, to be perfectly frank like, I am not sufficiently confident, and I haven't seen enough enough interest in using mortgage with Dino to than justifys saying like, hey, this is like an officially supported thing. I'm seeing more usage for BUN, so I'm kind of curious to tinker with how Moggy's works on the bond, But I haven't had time to work on that either.

Speaker 2:Now it was, but I'm I've you heard about bun and see a list? Is that more just a run time or is that something you would write apps in like you would Node?

Speaker 3:From what I gather you, yes, you would write and you would write applications and fun I've heard of some interesting app frameworks that are specific to BUN. I think there's Alicia JS something like that. I think that one down there. I think that one is very BUN specific, and I've heard very good reviews about it. I think one thing I liked when I reviewed Alicia Elisia. I'm going to sorry if I'm butchering the pronunciation. One thing I really liked about that Express does not support is Alisia has good support for server sent events, kind of right out of the box. So if you pass it in, it gives the other developer experience that I've always wanted for service sent events, which is you pass in a acink generator function and then whatever your acin generator function yields that that gets admitted as a server event, which is really cool. Love that I actually use that pattern in the Malgi studio back end as well. Yeah. One UI decision that we made probably a couple of months ago in Mugu Studio that has paid huge dividends is, like traditional database viewers, you frequently load query results in pages.

Speaker 3:So you would so if you execute a query, you get twenty results back you get or there's let's how you execute a query and there's forty results you typically get twenty results at a time as a page, but the query, but when you execute the query, you don't get to see the results one at a time. If you wear uh, the the gooey waits until it gets all twenty results and then displays the twenty. With Mogus Studio, we've actually made it so that we use server sent events to stream the results as they come at in so even though you load twenty at a time, you get kind of like, okay, the instant that this document is available, we stream it to the front end, and the front end gets it to you kind of see like more of a smooth loading effect. And then there's infinite scroll back then too, so of course you if you want to scroll and view more data, well you get kind of a smoother experience where you're running one documents one at a time as opposed to kind of like gang Chunks twenty twenty twenty. And it really is important, especially in cases where you have a very slow running query, like if you're filtering logs or something like that, where

Speaker 3:you expects, okay, I may get like one or two log results really quickly, but then it may take twenty seconds to get all the log results, so it's more it's important to kind of get some of the data first or get the results as they come in case with long running queries. Service centerventsive great for that. Ye have you guys been working with with the Dino or bun at all? I have it.

Speaker 2:Most of my back end, I generally focus on PHPU and label just because that's been you know, where I started on the server side. So no, I haven't had much opportunity to work with with Note or mon Ordino itself. Like I said, just Mango in the context of a large letter bill view application.

Speaker 1:Yeah, and I mostly do Ruby on rails on the back end, So.

Speaker 3:Yeah, I guess I'm in the minority as someone that does server side jobscript pretty much exclusively. And like all, I describe myself as like a back end heavy full stack de alter in SnSe that in my team, we typically focus more on the back end and build pieces en upfront ends. Our frontucts are not our shrunk suit, but we do.

Speaker 2:Sound like me. Yeah, when it comes to the JavaScript side of things, I'm really good at you know, if I'm handling data, you know, communicating with the back end and getting data, displaying and data and that kind of stuff. You know, one of the data management type of application A pretty good when it comes to the UI and making it really pretty and design and stuff not so much.

Speaker 3:Yeah, well, these days the AI does a pretty decent job of that. Oh ish. One thing I've seen is that, like you know, the AI tools are still not quite as good as people as like spurts in that space. Right, So you know, if I if I build something, just if I just have clawed one try to one shot something, it's not going to be as good as the tailwe guy built some spoke lay up for me, but it'll be it'll be probably like seventy percent is good and maybe that's good enough. Yeah, exactly.

Speaker 2:I've been trying to play around and find some different tools that would be good at at creating like a you know, some sort of UI template you know, that I could implement on the front end at least looks decent and better than what I would come with on my own.

Speaker 1:Cool. Well, is there anything else that we should dive into here?

Speaker 3:Well, there was one topic that we want to talk about I mentioned earlier, the data API at Cassandra Integration. Oh yeah, that's something that's interesting. Oh, so yeah, we're for probably the last year two we've been we've been working with what Data Stacks, which recently got acquired by IBM to build a plug in that. Let's mongoose talk to the stack of Data API, which is kind of like an HDT layer on top of the Patrick Cassandra. So one of the neat things you can do with mongous now is you can actually or you can actually like just find wright molecuse code dropping a couple of lines of figuration and habit talk to Patrick Cassandra with with some pasttrisks as opposed for features that are supported and whatnot. And then now the neat things you can do like Magus is populate, which is kind of like Malgus's application level level joins gosh. I use that to take data from Manga to be populates some data from Cassandra or vice versa. It's pretty cool thing, I think.

Speaker 2:So for the uninitiated, can you explain what Cassandra is because I didn't know myself until I went and.

Speaker 3:Looked Patrick Cassandra is. It's a no SQL database but quite different from malgady B in the sense that like it still stores data and what kind of looks like Rosen columns, but it is like what's called a y columns store. I think the big selling point for Cassandra is it is it's good for massive right throughput, like the classic. The big example of probably the biggest Cassandra deployment that I could think of off the top of my head is is Apple iCloud. So let's say every time that you take a photo on your iPhone, metadata associated with that photo, like who took it, when they took it, that gets dumped into a two hundred and fifty thousand last I checked, no Cassandra cluster, or at least the last time I read about this. Yeah, Apple iCloud is one big deployments discord messages for a long time. We're we're also in a Patrick Cassandra and pretty much like name, like a major tech company that's not Google, they probably have a Cassandra deployment. Like Cassandra is actually originally written by Facebook. The open source de debated. I think it was like originally written to ah as like the back

Speaker 3:end store for the timeline view, but.

Speaker 2:It sounds like it's more it's not like something to use for small laps. It's more of an enterprise, huge implementation type application, right.

Speaker 3:Yeah, exactly. Now, one of the things they're trying or that they're trying to do is like make the Sandra more accessible using that data API, and Mongoose is part of that as well. There's a lot of content out there on how to use monkeys. The munguse kind of like plugs neatly into into the the sex data API, which kind of exposes like a Mango like layer on top of Sandra.

Speaker 1:Yeah, I've done a little bit with the Cassandra and it's it's kind of an interesting set up with the column near focus and things like that.

Speaker 2:But so it's no SQL because it's not SQL. But it's different than mongo ters or.

Speaker 3:How in the sense that they have, like they have a language called CQL Cassandra Corry language, which is similar to SQ well but heavily simplified.

Speaker 1:And they strictly speaking don't have a rigid schema kind of like what Mango does. But yeah, their performance characteristics are different and they kind of focus in a different way of thinking about your data. So depending on what you're doing, you would pick Cassandra over mongo I'm not sure I'm the right person to explain when you would pick one over the other.

Speaker 3:But yeah, I think historically I'm not sure like how accurate this is right now, but historically them was like, if if you have for read heavy data or data where you're incrementing a counter where like it's crementing data in place, you would probably use manga to be And if you have something where you're just writing something as fast as you can, you would use at Sandra m I'm not sure how accurate that is right now, but that tends to be the way that I think about things, although recently I've also been using Cassandra more or data api more for vector search, because one of the things that I really I think Cassandra did really well recently is they have they've taken vector search and made it a part of the core Cassandra and now that's exposed throughout through data Api as well, Whereas with muggerity b it's still like h vector search is still like an Atlas only thing. Like you if you're running muggity B by itself locally, you don't get ex your search, which is not not a complete deal breaker in the sense that for the most part you're going to be running production deployments and outlets like even I don't run even

Speaker 3:I don't run my o mugity Be closers anymore, but it does kind of. It is a bit of a pain point in terms of local development.

Speaker 2:So basically you can unless you're like hosting it on Atlas or something like that, unless.

Speaker 3:Or or running manga to be locally via the Atlas cl I. However, like running it locally by the Atlas cl I also comes with caveats and restrictions that you don't have if you're you're running you're running one mangity be locally, there's there's caveats there.

Speaker 1:Cool, Well, I've got about ten minutes before I have to jump off. Or are there other things that you guys want to keep talking about or should we do picks?

Speaker 2:But just real quick, the one question I had was you admit now you mentioned at the beginning that you use view whenever you have to whenever you need, you know, job to script front end. So is that just in in the UH, the UI or where else do you use view at least with Mango.

Speaker 3:For front endy wise, either either your service side rendering or single page app Another thing that we use viewfore is email temple, but we'll send emails we are email templates are also in view.

Speaker 2:Oh okay, you just have to use some single file components that format your your email.

Speaker 3:Not single file components, and we typically use were typically used two file components in the sense that we have JavaScript in HTML, so our emails look more along the lines that there's like there's order confirmation dot JS and order confirmation dot HTML. And that defines a component that renders a that renders our order confirmation. So I can we write out we define our uh, we define the layout in an HTML file. Historically, we found that easier.

Speaker 3:I have considered switching to single file components in recent years because I think that as I thought that way, I could do a better job with single files. But we're still sticking the separate JS and htmail files for now and then just to find to find emails in each GM because we found the comput is really good at just beef work things like that, like basic loops computer properties. That makes email rendering much easier.

Speaker 1:Mm hm cool, Well, I'm gonna I'm gonna push us into picks, so, uh, Steve, do you want to start us off with picks?

Speaker 2:Certainly, nothing really pickwise other than the high point of all of repros. That's the dad jokes of the week, So I'll dive right into those real quick. So when I was growing up, one of my favorite memories of my childhood was I used to build sand castles, you know, with my grandmother, and then my mom took the urn away from me, right, I sort of like the joke about where I was at washing cars with my son and he's like, Dad, can we just use a sponge?

Speaker 2:But and then people say, when people say you look so familiar, do I know you? I find that if I say were we in prison together? Really ends the conversation every time. And then finally I was talking to my insurance age and I said, I hit an animal and my car is total on my copboard. He goes, yeah, what'd you hit? And I said a fish? And that joke sort of comes with the car in the water. Maybe it's a little more of a visual joke, but anyway, those are the dad jokes of the week.

Speaker 1:All right, I'm going to jump in here with some pisure really quickly. So I'm going to pick a game I've been playing a lot lately with my buddies. I know I've picked it before, but I'm just gonna pick it again because I didn't have time to look one up. It's called the Gang. Play it in like fifteen to twenty minutes. It's essentially group poker, like cooperative poker. And so what you do is you have chips that are numbered from one to however many players are playing it has up to six, and then you deal everybody out their whole cards or their pocket cards, you know, the two cards you start with in Texas. Hold them, and then everybody grabs a chip and you try and get it in order of who has the best hand down to who has the worst hand, and then you flip the flop and you do it again right, and then you flip the turn, and then you you know, do the same thing, and they flip the river, and after the river on the red chips. Then whoever has the number one chip flips theirs over first. They should have the worst hand. Whoever has the number two should have a better hand, three, four, five, and all the way

Speaker 1:up to six, or if you're only playing with three people, you know, all the way up to three. I was playing it with my kids the other day and yeah. So the only other rule is is you can talk about everybody else's hand, but you can't talk about your own. So at one point, for example, we had flipped the turn card, and so which is the fourth card in texas? Hold him? And it was a ten, and so my son grabbed the number three chip because of whatever the three of us playing, because he in his whole cards he had a ten, and so he had a pair of tens. And so I looked at him and I said, if you matched, just now, you have a pair of tens.

Speaker 1:And then I grabbed the three chip and put it in front of me because I had a pair of jacks from the flop, and so that told him. So I didn't talk about my hand, but I indicated him I know what you have and I have a better hand. And so anyway, so that's kind of the way you do it. If there are more pople you tend to talk through a lot more things. With my buddies, we also like to call out you know, for example, if you have two clubs, then you have a flush, right because there are three clubs cards in the you know, in the in the shared cards. Or if you have a two and then six, then you have a you have a straight right, which is a run of five cards in number order. And so anyway, so it's a lot of fun and like I said, we you know, we just you know, you can play through pretty quick.

Speaker 1:You're trying to get three correct before you get three incorrect, and that's how you win the game. And yeah, like this it takes like twenty minutes. So I'm going to pick that for the game. I've also wanted to really quickly. I was texting. I've started this thing where I start texting people that I haven't talked to in a while. And so one person that I texted, let me find the text because I told him I was going to share some stuff. But I was texting with can Kent Kent Dodds, and I might just have to search it here.

Speaker 2:Wow, talk about name dropping.

Speaker 1:Well he lives out here and so periodically, well you know, hang out or whatever. But yeah, so he said that he's been doing a couple of things, so I'm just going to shout out his websites. He has epic ai dot Pro, so he's been teaching people to do AI stuff. He's also got epic web dot dev, which is kind of his full stack preferred stack, and so I don't know if he's still doing remix, but you know, that used to be a big part of it. And then he had a whole bunch of other stuff that hed pull in. And then he also has epic React dot dev.

Speaker 1:So if you're looking to learn stuff about React, JavaScript or AI, then he's got He's got some resources out there that you go check out. I find that his stuff is reasonably easy to follow along with, and so I don't have any problem shouting that out. So I'm doing that, and yeah, I'm also just going to shout out the idea of, you know, find for people to reach out to every day. I mean, I do it with family members, I do it with people in the tech community. It's kind of fun because sometimes I haven't heard from him in a couple of years, like I had. I don't think I've really talked to Kent in a couple of years, right, and so it was like, oh, hey, and so we're catching up on kids and things like that. Anyway, So yeah, that's kind of what I've been doing. And I picked that up from Jordan Harbinger. I was listening to him do an interview with somebody and he said that he does that, and I was like, there are a lot of people I want to stay connected to that I don't, And so anyway, I'm going to shout that out as well.

Speaker 3:What are you think I reached out to Jordan? I haven't spoken him in a few years.

Speaker 1:Yeah, I haven't either. Last time I talked to him, I had to drop some money.

Speaker 2:So we should get Can on the podcast again.

Speaker 1:We should. I'll ping him and see if he wants to come on. All right, Val, what are your picks?

Speaker 3:Yeah, check out Magus Studio, Mangu studio dot app Alicia J. S Alsos dot com worth worth checking out. Actually it's in the public chat already. But is the L y s I a J S dot Okay? Yeah, yeah, that's yeah. I told you I was going to butcher the pronunciation, so sorry in advance. I tend to like not listen to video. I tend to read things so frequently I read things and I just don't know how sorry about that. So yeah, that that one. I haven't actually played with it yet, but it's got some interesting patterns and I think I'll looking into thinking about especially related to servers events and then yeah, recently, I've been using to do list a lot more. I've kind of gone back and forth on like DIF to do list tools, and I just keep coming back to this one or specifically for like personal tasks. So it's it's a great replacement for just for like having a to do dot t x T or for having sticky notes or something. So I like having kind of like three, like a list of three or four tasks, like these are the important things I need to get done today. And it can be work related, it can be just like if I have

Speaker 3:Valentine's Day gift for my wife, which is still on my on my list right now, so you got reminding me.

Speaker 2:That one read.

Speaker 3:Yeah, just having like a list of things that that I want to be front center, like these are the things I need to get done. To do US is a great way for that because they got, oh they got a great web app, they got a great mobile app, and they have a nice, little simple user interface that encourages you to only have a handful of things on your list. So it's never going to replace like a linear or Gira or something for managing a long backlog task, but it is a good way to just kind of have like a quick sticky notes thing for yourself to keep track of important things.

Speaker 2:So are you still doing the mastering JS at all? I don't think know if I've seen.

Speaker 3:Lee in a while, I have been not working on it as much. Actually, I've been kind of like letting that, laying that run, because the idea like mastering JS was kind of more about like get it like a tech tutorial se O, which is a game that has become very played out in the post AI era. People don't go to Google for code questions as much anymore. To traffic for that website has fallen substantially since the yeah you saw the if you saw the tailwind stuff, it's not that fairly similar in the sunset. Yeah, Like with the traffic to mangus jas dot com and mastering js dot io pretty much peaked exactly in August September twenty twenty two, and then it's been at the client sets, which hasn't affected us that much right now, but we don't really rely on the ad revenue right there, but it's definitely been definitely been something that we've noticed in.

Speaker 2:The thought about Yeah, interesting that Jeffrey Ray is the guy that does Leerraic cass He put out a video here in the past week. We're so talking about that and the impact that AI has had on his site in their courses and stuff like that too. It's an interesting listen.

Speaker 3:Yeah, the the impact of AI on our industry is it's it's gonna be. It's still happening. It's it's huge so far, and it's gonna keep getting bigger, so we I honestly, it's somewhat exciting. It's an exciting but somewhat scary time to be in software engineering because, Aslee, no idea what our industry is going to look like in five years. I agree with DH on that, on that assessment.

Speaker 2:Yeah, someone who's job hunting right now, I can vouch for that. It's pretty brutal out there.

Speaker 1:Yeah, all right, I've got to jump off. I've got a work meeting. But thanks for coming, Val.

Speaker 3:Yeah, thank you for having me, Chuck, It's always great to see you.

Speaker 1:Yeah, you too, And yeah, until next time, folks. Max out

Transcript supplied by the publisher with the episode.

JavaScript Jabber

by Charles M Wood · English · Tech & Science

Stay current on JavaScript, Node, and Front-End development. Learn from experts in programming, careers, and technology every week. Become a supporter of this podcast: https://www.spreaker.com/podcast/javascript-jabber--6102064/support .

More from JavaScript Jabber

  1. E702 · 10 Feb 2026 · 1 hr 20 min

    Node.js Performance, Kubernetes, and Why “Fast” Isn’t Always Fast - JSJ 702

    In this episode of JavaScript Jabber, I sat down with Matteo Collina—chair of the Node.js project and founder of Platformatic—for a deep, no-fluff conversation about Node.js performance in the real world. We dug into what actually happens when you run Node at scale, especially with server-side rendering, Kubernetes, and modern frameworks like Next.js. We also challenged some popular assumptions—like whether newer runtimes automatically mean better performance—and explored how benchmarking, flame graphs, and smarter scheduling can completely change the reliability of production systems. If…

  2. 30 Jan 2026 · 1 hr 13 min

    TanStack Start, AI, and the Future of Frontend Architecture - JSJ 701

    It’s great to be back behind the mic! In this episode of JavaScript Jabber, I’m joined by Dan Shapir and our guest Jack Harrington from Netlify and TanStack for a wide-ranging, high-energy conversation that covers everything from modern frontend architecture to AI tooling—and a few entertaining detours along the way. We dig into what’s new and exciting in the TanStack ecosystem, including TanStack Start and TanStack AI, and explore how these tools rethink the balance between frontend-first development and server-side capabilities. Along the way, we unpack React Server Components, AI SDKs,…

  3. E700 · 8 Jan 2026 · 1 hr 16 min

    What’s New in React 19.2: Compiler, Activity, and the Future of Async React - JSJ 700

    In this episode of JavaScript Jabber, I sat down with Shruti Kapoor, independent content creator and longtime React educator, to dig into what’s actually new — and worth getting excited about — in React 19.2. While it may sound like a “minor” release on paper, this update delivers some genuinely powerful improvements that can change how we build and reason about React apps. We talked through React Compiler finally becoming stable, how the new Activity component can dramatically simplify state management and UX, what View Transitions mean for animations, and why new tooling like Performance…

  4. 24 Dec 2025 · 47 min

    Can You Really Trust AI-Generated Code? - JSJ 699

    AI is writing more of our code than ever before—but should we actually trust it? In this episode of JavaScript Jabber, I sat down with Itamar Friedman from Qodo (formerly Quoto) to dig into one of the biggest questions developers are wrestling with right now: What happens when AI is generating code, reviewing code, and shaping how we ship software? We explore where AI fits into modern code review, whether developers should be worried about job security, and how human responsibility still plays a critical role—even in an AI-powered workflow. From guardrails and quality standards to the future…

  5. E698 · 10 Dec 2025 · 1 hr 5 min

    The Real State of Tech Hiring: AI, Ghosting, and the Developer Drought - JSJ 698

    In this episode of JavaScript Jabber, Steve Edwards and I kick things off by catching up on life — from winter weather and marathon training to health journeys, CrossFit, and some behind-the-scenes personal stories that shaped how we think about wellness and longevity. After warming up, we shift our focus to the state of the tech job market, something both of us have been watching closely and experiencing firsthand. We dive into the challenges developers are facing today — especially juniors — and compare our hiring and job-hunting experiences, the impact of AI on resumes and screening, the…

  6. 23 Nov 2025 · 1 hr 4 min

    Why Astro Is Winning Developers Over with Sagi Carmel - JSJ 697

    In this episode, I sit down with developer and speaker Sagi Carmel to dive deep into Astro, why it’s gaining so much traction, and how it compares to frameworks like Next.js, Nuxt, Remix, and SvelteKit. We explore what makes Astro uniquely powerful — from its server-first approach and island architecture to its simplicity, speed, and ability to integrate with any front-end framework you want. Sagi also walks me through real-world use cases, including how he built Israel’s official Census website with Astro, why scoped CSS and server components simplify the development experience, and how…

  7. E696 · 14 Nov 2025 · 1 hr 15 min

    The Truth About AI in Everyday JavaScript Development - JSJ 696

    It feels great to finally be back on the mic after a stretch of travel, work, and general chaos, and in this episode we’re diving into a topic that’s been coming up more and more in everyday developer conversations: how to actually use AI in your JavaScript development workflow. This isn’t about adding AI features to your app — it’s about using LLMs and AI-powered tools as part of your day-to-day coding practice. We talk through the tools we each rely on, how they’ve changed the way we write code, where they fall short, and where they can save hours of work. We also dig into the real…

  8. 1 Nov 2025 · 1 hr

    Guarding the JavaScript Supply Chain: Preventing NPM Attacks with Feross Aboukhadijeh - JSJ 695

    Hey everyone—it’s Steve Edwards here, and in this episode of JavaScript Jabber, I’m joined by returning guest Feross Aboukhadijeh, founder of Socket.dev, for a deep dive into the dark and fascinating world of open source supply chain security. From phishing campaigns targeting top NPM maintainers to the now-infamous Chalk library compromise, we unpack the latest wave of JavaScript package attacks and what developers can learn from them. Feross explains how some hackers are even using AI tools like Claude and Gemini as part of their payloads—and how defenders like Socket are fighting back…

  9. E694 · 24 Oct 2025 · 1 hr 14 min

    Making Monorepos Breakproof with Anton Stoychev - JSJ 694

    In this solo-hosted episode, I (Steve Edwards) dive deep into the world of modern monorepos with special guest Anton Stoychev from Yotpo. Anton shares his journey from the early days of PHP and IE6 nightmares to his current work in front-end infrastructure, performance optimization, and developer tooling. We talk about the challenges of managing dependencies, upgrading tools without breaking your codebase, and the evolution of developer experience across teams and companies. Anton also introduces Breakproof, Yotpo’s open-source monorepo template designed to make dependency management and…

  10. 9 Oct 2025 · 44 min

    Spec-Driven Development and the Future of AI IDEs with AWS’s Kiro - JSJ 693

    In this episode of JavaScript Jabber, I sit down with AWS’s Clare Liguori and Erik Hanchett to talk about Kiro, a brand-new AI-powered IDE that’s reimagining the way developers build software. We dive into how Kiro takes “AI-assisted coding” to a new level through spec-driven development — a process that focuses on defining requirements and collaborating with AI to break projects into clear, manageable tasks. We unpack what sets Kiro apart from tools like Cursor and Copilot, explore its supervised vs. autopilot coding modes, and even talk about how it handles UI design, planning, and complex…

Every episode of JavaScript Jabber →

Take it with you

The Melo app keeps playing with the screen off, works in the car and on your watch, wakes you to your station, and browses the whole catalogue offline. Free, no ads, no account.

Get it on Google Play