Hey, everybody, welcome to another episode of JavaScript Jabber. This week on our panel we have Steve Edwards. Oh ajs here, so I can't use the yo yo yo, so I had to say hello from a still cloudy and rainy Portland. But for those of us skiers, we're still getting snow up in the mountains blowing pretty hard. So it's great for late spring skiing. Yeah, it was wet here. And then when I was driving my daughter to school, we saw a couple of vehicles with snow on them that
must have come down out of the canyon or something. We also have aj O'Neil oh, go ahead, I think, I say. Yeah. When you get up above start to where you climb up mountain head towards timberline, it's immediate change and you're still getting blowing snow. Nice, it's crazy. It's great for skiing. I was up yesterday it was awesome. Nice all right. We also have a j O'Neil yo yo yo. Then actually from the fish room, what's the fishroom? Fish room? Yeah? Is that
an aquarium over there? Yes? Yeah, you can't really see it, king, but no, it's pretty small. Yeah, So I've got like ten aquariums in here right now. So during the long hiatus, I got into aquaria. That was my my winter depression hobby. I got to pick for you. I got a great pick for you when we get to picks. Excellent, right. Are you an aquarius? Is that one of the signs? Or am I just making that up? No, it's actually an aquarium. No, I'm kidding. Yes, it's aquarius. A person who's
into aquaria is an aquarius. Wow, things I never needed to I mean, we also have Dan Shapier. Hello from a warm in sunny Tel Aviv, which somehow didn't prevent me from getting this really bad cold for the entire week. You do know that getting a cold has nothing to do with temperature, right, Yeah, that's not true. It changes in the weather. I think like changes make you more susceptible. Yeah, it's it's stressed to
your body. When the temperature swings or when you're cold for a long period of time, your immune system dips, so bacteria and viruses that are all around you that weren't affecting you then suddenly affect you. Also. Also, I became allergic to the earth. By the way, since since last time we spoke, I have allergies now, first time, Yeah, I think so. Yeah, I wake up in the morning. Well, actually it hasn't been so bad. It's like three weeks or so. I wake up
in the morning. My eyes were itchy. It sneeze, sneeze, sneeze, sneeze, sneeze. Oh, it was terrible. Well, it's hitting close to hay fever time, which is what I get. Although here's been so wet that it's keeping everything down. But this is the best time of year that I get hate faver. I get that too. It up that the rain that we get is like the light rain that you get, so
it's just enough to like everything bloom like crazy. Yeah. So I haven't had a cold, but I've had a lot of that what AJ's complaining about for the last few weeks. So I just I live on my zertech. I have it at my desk because I just just take it as soon as I say, yeah, I know what you mean. Anyway, I'm Charles Maxwood from top End Devs. This intro is taking forever, so I'm just gonna skip all the pleasantries go check out JavaScript Geniuses dot com. And we
have a special guest this week, and that is Lazarre Nikolov. Did I get anywhere close? Those are right? Yeah, it's on Nicolo and things are That's what I meant to say. You were close. You got the syllables right, just in the wrong pronunciation. Yeah. Anyway, uh we brought sentry well zar after listening to all that or was that just so entertaining that you're on the edge of your seat now I'm on? All right?
Okay, good? Yeah, all the back and forth, Matt Henderson from Century recommended that we have you on talk about web performance stuff and maybe some of the stuff that Century provides, and so, yeah, do you want to just fill us in on who what else we need to know about you? We had a long discussion about Macedonia before you, yeah jumped in. So yeah, well, thanks Matt for recommending me. Thanks Bud. But yeah, I'm Loasa Nikoleff. I'm a part of the DEFL team here at
Century, and I'm all about web performance. That's my main focus. Very cool. Oh, I'm really I really love web performance. I think it right. Yeah, so so I'm a little curious just as we get into this, you know, and and Dan fills us in periodically, it's like, hey, there's this thing, but but what kinds of things do you focused on at Century as far as making people's web apps more performance or more user friendly or you know whatever it is that you know you're you're working on
these days in the web performance arena. Yeah, so I'm focused on the educational parts, and not necessarily just a Century educational part, but just like in general, you know how to how to develop good developing habits, so your performance is in order. Basically that's all I do. But so you know what, if maybe I do want to direct us first, it's slightly a different direction because we have been speaking about performance a lot on this podcast
of late, but we've not spoken about Century in a while. I mean, we've had some people from Centry, like I think like a year or two ago, but maybe some of our listeners somehow are not familiar with who Century are or what Centry is and what it's spring to the table. So maybe we should actually start a little bit talking about Century before we then go talk specifically about Century and performance. Yeah sounds good, Should I go for
it? Yeah? Awesome? Yeah. So, for those for those of you who don't know, Century is an aer monitoring and APM solution for any of your web apps and mobile apps, and I don't know desktop apps and anything basically, So what it does is it offers I would say that like the best in class AER monitoring. Every time something wrong happens in your app, you get an email, you get a Slack message, you get a
team's message. If you're there, you get a you get Paige if you're on page duty, you get a ticket in Gira, et cetera, et cetera. You just get annoyed basically from all the sides. Uh. And that's just for the AER monitoring. Aside from just telling you you know your apps on fire, you just get a whole bunch of COOLU for information like hardware info, software info, what the user is if you know you have configured tracking users, et cetera. Yeah, all you need in order to
fix the PUNK. So that is the error site. And there's also the performance side, or just in general a PM, because there's more than just performance. You get monitoring for web vitals, networks resources traces, which are becoming like a central part at Century right now. And yeah, it's it's it's a tool that you install in your application, whatever the SDK is. We pretty much have support for all of them, and it lets you know
and when something bad happens, and it keeps your performance in order. That's basically what Century is. So first of all, you use the m a PM. Can you explain what that means? Yeah, it's application performance monitoring. Now if we if Yeah, it's continuously what Sorry, it's basically continuously measuring and reporting metrics such as web VITYLS and what else. Yeah, Like I mentioned resources that your website is pulling in network requests that you know the
app is uh triggering, et cetera. Now if we start with with the legacy stuff. Sorry chuck you what you were starting to say. I was just going to say, you know, when you asked what it measured? I mean, we keep hearing web vitals. We talked a lot about that,
but I've also seen them track other things. Right, so core web vitals is usually used for se O. You can go listen to a handful of episodes we've done, but I've also seen it tracked how long certain function calls take, or on the back end, how much time it's taking to access the database and execute queries and things like that, or how long this request took to a back end or an API or things like that, So it's more than just web vitals, but a lot of the business folks,
that's what they're going to care about. They're going to care about how performance is it and doesn't match the web vitles so that we can show up higher in the list on Google. Although, to be fair, and I keep saying that, I mean, on the one hand, it's a really good thing that Google made performance or coed vitals a ranking signal because it really pushes
the entire industry to improve that aspect of web websites and web applications. But the reality is that the impact on ranking in most cases is not that massive. To be honest, it's often considered to be a tie breaker rather than
a decider. Like the big aspects of ranking are still things like you know, content, content is king, so whether it's relevant content, and also authority, like you know, if you're going to ask something related to a health or medicines, then the CDC or something like that will come up first and for good reasons. Or if you ask something about the news, then CNN will likely appear high in the search results, even though their performance is
historically atrocious because it's more about those aspects. But first of all, it still is important because it can be a tie breaker. But more significantly than that, it actually has significant impact on user experience once they're in the page or in the website. And lots of research has shown that when performances poor, bouncer it is high and conversely that when performance is good, then conversion
is high. So there's definitely a significant motivation to improve that. But again I want to pull us back a little bit because again Century is historically been known for the error tracking and monitoring. I think that's still what most people think about when they think about Century, So I do want to talk a little bit about this before we dive into performance. If we can, per
my understanding these days, Century is kind of full stack. It does both the front end and the back end and provides a holistic view of all this information together. Is that a correct summation. Yeah. Basically, when you have multiple projects in Century and you use centries as the case to connect them,
you automatically get a distributed traits. You can start looking at the front end and then move on to the back end and database and go back whatever your operation flows are configured and again per my understanding, Century is something that I can install effectively for free on premises, or I can use kind of your hostage server, which then I have to pay for. Is that correct? Yeah? Yeah, it's free self hosted. Yeah, so when I self host it, it's free. And I think it's also or at least
partially open source. It's it's like it's source available. M Yeah, so the license is not mit ah, we came up with our own, but that's just for you know, yeah, like protecting other businesses from you know, figybacking on the centrin repackaging it. But it is, Yeah, it's
source available. So if I have like an error in my JavaScript, you know, something that would get written to the console, or an AJAX call that fails for some reason and uncought promise rejection and uncaught exception so on, so forth, all of these things are collected and then exposed to the site owner through the Century Management console effectively. Fine, if I again understand correctly. Yeah, So, like every SDK has a DSN configured, which is
basically a link to where your instance is running. If you're self hosted, you're going to have your own r hotel there, so that basically tells the SDK whatever you capture and you know, measure send it over there. Yeah, so when you're on premise, the data is on your service understood. And one of the things that I recall that I really liked about Century was
the fact that it was smart enough to group errors together. Like one of the problems with a lot of these monitoring solutions is that you could literally drown the sea of errors because, let's face it, you know, so much stuff is getting collected and reported, So you don't want to, you know, have to sift through tons and tons of logs and errors and stuff like
that. You want the system to aggregate the results and then just show you, you know, this is something that's important, this is something that you should look at. So that's one thing that I recall about being really powerful with centry. And another thing that I recalled being really powerful with Centriy is the amount of information that was exposed that could help you. Okay, you know there's and let's say an uncaught a promise to injection. Why like,
what is this promise? What? What's what's the value that it's trying to get. So all this information is also surfaced to you as the website or web application owner. Yeah, totally. I mean you you get all of those information attached to the issue itself to we don't call them crashes or anything. We just call them issues, so like it's it's all there. Yeah.
So how then did you actually pivot into performance? I mean, if you had this focus on errors and collecting errors and reporting errors, where's this sudden focus on performance? Where did it come from? I'm not sure to be honest, because I think that was like a few years before I started in Century, But I think it was natural. We got the we had errors, we had tracing, and with tracing you can identify all the performance
pattlenecks. There's also a profiling which taps into the hole, connects into the whole tracing and performance topics. So I'm not sure, like what is the exact moment that from tedth Centry to start looking into performance, but we just we just know that performance is super important. Would you say tracing what exactly
do you mean? Yeah? I mean we mean like tracing the operation flow for specific operation that can be I don't know, a checkout flow or a log in flow, so as functions execute, and you know API calls get
executed. Tracing is basically putting little bread crumbs along the way and then capturing the whole all the whole path of the operation flow, so you can see what where the operation flow went in in I don't know what micro service, and how long it took for each of the functions or whatever you have defined
or instrumented. So sort of like a stack trace then with variation. Uh yeah, stack trace is like a the snapshot of the of the second that specific moment, but tracing is more of a it's like on a on a on a timeline basis where the operation went. So for example, if we start at the front end, we could have some spans, and spans are how we Spans are the things that we used to define the trace, right, so we we basically create a trace and the SDCA automatically does it for
it. But let's say we just create a trace, We get a trace ID, and then we sprinkle around spans which are connected to the trace, but those define what happens at a specific moment. So instead of just console lock I'm here or console lock we reach this point, you're basically creating spans which also have a starting point and ending point. They have tags, you can put tags in them, et cetera. And those don't just stop at the I don't know front end. You could send the trace heather to the
back end, then continue the trace on the back end. So then when when you want to debug how a certain operation behaved or like what happened, you see one timeline that combines the data from the front end and the back end, or your back end. If your back end is a micro service architecture, then you'll just have the data from all of the micro services there on one timeline. Let's say. So a question about that, is it
kind of like open telemetry traces pretty much? Yeah, And we also have an hotel adapter, so you could use the hotel instrumental instrumental to get the data and then send it to centry as well. There is hotel sorry, hotel, what is that? All right? That's open telemetry? That is okay, Yeah, that's an open source standard. I would say there's also under and implementation. I think yes, both and implementation and tooling around instrumenting
parts of your application. Basically, think about if if you want to like have like a mental image of what is meant by traces as as describe them. It's kind of similar, kind of similar to what you see in the the performance tab of the Chrome dev tools. Like, so it's kind of or like what is often known as a flame chart. You kind of see each of those traces are like one of the levels in the flame chart. So you have like a span that starts and ends when a certain operation takes
place, from the beginning to the end of that logical operation. But within that you have span. So you could think of a function, so you have a span for the execution time of that entire function, but it calls subfunctions and they have their own spans within that span, so you can like go through like the execution. So it's like stack trace over time as it were. Okay, and it's now you collect this for like every session or
like is it sampled or how how does it work? Yeah, there is a plank configuration already put in into the dcation, so you can you can play around with the values. It's basically it's just from zero to one. That's how a century configures it. So if you want ten percent of your sessions to be simple, then you just sapiens your point one and the sampling doesn't adversely impact the performance of the session, like the user doesn't notice it
that it's being sampled in this way. I wouldn't say so, but depending on you. For example, if you're instrumenting everything all the you know, important and non important bits and pieces in your application, then you'll probably see some performance overhead. But as yeah, that's all in your control, basically cool. So we were talking about the fact that you have this tracing mechanism
and from that you kind of moved into also performance monitoring. Yeah. Yeah, because the trees contains everything, right, the trace knows where the application went or the operation went and how long it took, so we can identify performance bottlenecks. But then what we do at Century as well is whenever an error happens, we attach it to the trace. So you can see on that timeline on the flame chart, you can see where an error happens and
how the operation behaved after you know, the error got triggered. Also, I assume how you actually got to that point of the air, because that's often the thing you most want to know exactly. Yeah, the spens will give you the information about what data you know was being handled and basically what
happened leading up to the air. So do you have like something like I I can I literally see things like what you know, like a sort of of like what the user was actually even maybe seeing on the screen or stuff like that when the air happened. Or Yeah, we do. It's it's like a different subproduct. It's called Session replay, uh. And it's just an integration that you need to install in your client facing applications. Right now, it's just web, but we're coming up with support for mobile as well.
So it's like dumb recording. It's not a screen recording, but it's basically records the dumb and sees all the yeahs, basically the recordings along with the whole you know, monagoring and capturing. Oh that's enough, I mean, don't does represent what the user actually sees? Yeah, And you also get the network request. You also get the console log, console air or whatever you're outputting into the browsers console. It's it's like literally you're, uh,
you have access to the person's computer. That one one question I have related to that is a lot of times there's information, be it personally identifiable information or passwords or things like that. I'm assuming that you can configure centry to screen all that out so doesn't show up in the Yeah. Yeah, we're scrubbing that out automatically. Uh. And and that happens in both science. For example, the esedicate itself does some scrubbing so there is no PI
going through the wire. But then also before we start processing the data, Uh, there's a there's a thing called relay which takes in all the data and does additional scrubbing on the server side as well before we put it. And that's for the I think the CELLF hosted one has it, but then also the the SATAS one also supports the scrubbing of the p II, but
it's configurable. For example, if you're if you're tracing, if you implement tracing and you append the you explicitly append p I I in through the context or tags, whatever it is is going to be sent, So you need to think about what it is that you're actually collecting. That's the bottom line. Yeah, like out of the box, if you don't explicitly send data,
it's not going to be sent. But if you're you know, if you're configuring the context of the ace decat to include the locked in user or whatever data you want to you know, attach to the to the context, then it's going to be sent, but out of the box it's nothing gets sent basically, So when you added ROM capabilities and by the way, RUM in the context of performances really use measurements, which means it's data from the
field rather than synthetic data created in simulated environments. Uh. You mentioned that you obviously collect the co ed vitals, which these days are LCP largest content for paint, CLS, commolative layout shift, and the I n P which is in the input interaction to the next paint. Exactly. I've been, like I said, had a head called I'm still recovering. But what other performance data are you collecting that's relevant to identifying performance bottlenecks in the application?
Yeah? So, Uh, there's also database monitoring, so whatever you use, if Centric has a has an integration for your database driver, Uh, there's a built in for postcrists. There's also for Prisma if you're using Prisma. But if now there's a way you can you can manually attached the query and also the result in the spand itself when you're instrumenting. So there's also
database Uh monitoring or like monitoring the queries as well. Yeah, aside from the web files, we also measure all of the resources that your page is pulling in the jas files, CSS files, if they're blocking or not, images as well, how how big they are, like, is there like a way to opportunities for you to optimize them, et cetera. So there's quite quite a quite some data getting pulled into the centriy dashboard for you cool.
One of the biggest challenges with performance monitoring in the field or rum, as I mentioned, is the concept of attribution, which basically means, let's
say I have a bottleneck. My my LCP largest content for paint is high, which means it takes a long time for the primary content to be displayed from the session start, which is fine and good, but I want to understand why it happens and what I should change or even potentially more challenging, the new metric I inp interaction to next paint has to do with how often the main thread is blocked by for examping, for example, long running JavaScript
code. But there might be a lot of different JavaScript code that is running inside the context of my session, could be first party code, it could be third party code for example, various tag managers, pixels and whatnot. So, and I want understand you know, which one is the one that's causing the most harm, the most damage, and that requires some sort of mechanism of attribution. So how do you go about that? Yeah? So, uh, I feel like you have all the tools to fix all these
things. For example, if you're looking into I n P, then maybe uh capturing a profile and looking at a profile of uh, you know, of your running application can actually shed some light on what is happening in the background and why you're you know, your website is experiencing imps at the time of uh, I don't know, interacting with the elements. So it's not profiling on the developer's machine. It's not like opening the Chrome dev tools and
running the profile tap. It's actually collecting profile profiles for for the actual real user sessions exactly. Yeah, it's con fagurable. Yeah you can. You can also pull in profiles and and you know, use them to debug I n P s or or whatever it is. Yeah, so can you give us like a concrete example. I'm sure that you work with various customers of that. So, without naming names. Can you, like give us an example of like an interesting case that you ran into and were able to debug
in this way? I don't work with customers, so I can give you like, yeah, I can give you examples from my demos that I create. Go for it. But yeah, I usually just use a trace trace view because the trace you basically tells me everything I need to know in terms of how the page loads or in terms of how my operations, my custom operation flows are behaving because I define them in my apps. But it basically that's that's how I go about debugging any of the like the top level stuff.
But then as I mentioned, like if I have TB problems, I'll just use the Queries products. And the idea is that it's all here, it's all connected to the same data. And on the sidebar you have all of these tools that we're talking about, and it's all connected to the same trace. And what about integrations with various development environments, Like let's say I'm using I don't know next JS or next or remix or whatever. You know, there are like a million frames or frameworks out there, astro, what
kind of integrations do I get? Are you just looking at it as it's JavaScript and the web, but it's all the same. Or are you or do you have like specific integrations for the different frameworks and metal frameworks. Yeah, we do have specific integrations with all of the different frameworks and a lot of them that are currently out there people that are using or not using. We do that because we want to tap into the framework itself or the library
or the tool, whatever it is. We do that because we want to utilize the functionalities that the tool itself is providing when it comes to either instrumenting or monitoring for errors, et cetera. So a lot of the let's say we're talking about instrumenting, right, we're talking about tracing. A lot of the operations are already going to be instrumented because we tap into the tool itself
and also connecting the clients or the projects. I would say we don't really care about that as well, because when when one project makes an API or a request in any way to a different one, we can also the sd case will automatically create that trace for you. So a lot of the times it's it's enough to just install Centry in all of your projects, set up the sd case, and and you'll get a lot of data already configured and
ready for you. But if you want to get into more details than you do the you do the tracing basically, but where virals it's automatic session replay. You just need to add the integration. Tracing is covered as much as
the framework can cover. But if you have more details, like if you want to trace into a big into a greater detail, then you can all supplements, uh, the the the trait with you additional spens by the way, out of curiosity, do you use like the built in browsers performance dot mark and performance dot measure or do you have like your own wrappers for the spens? In some places we do, but we usually use For example, for Core web vitals, there was this travelscript library and I think it was
from the Google Chrome team. Yeah, we use that under the hood to capture the data. Okay, what are things that you are I don't know if you you can answer that if you're not primarily working with customers, But what are the things that you're seeing as the most common sources of performance issues with people who are using Centry for monitoring. Yeah, well, I've talking
with people. I've noticed that there's a lot of undefined errors. For example, in in JavaScript land, where you know you're trying to access a property of an undefined variable or object, you get the undefined erroortat is pretty much the most common one. And also like failed to fetch fetch errors not happening because of I don't know, the UL doesn't exist or something like that. I've seen it that way too many times. Maybe yeah, but those are
general errors I'm saying. I'm asking what sort of performance related issues are you primarily saying M I don't think I can. There's a lot of N plus one when it comes to like API requests and also dB queries. What else I don't know. I haven't haven't seen. I haven't been exploring too much
of the customer data. I'm saying from an interesting split between two types of issues, Like there's the issues related to let's say largest Contential Paint or RCP, which are about how quickly a website loads, and that's not always interesting for all web applications. I mean, it's interesting if you're building an e commerce website, but if you're building some sort of dashboard or something like that, or you're sitting behind the authentication, then you don't care about it as
much. Basically, RCP is really important when when your page is ranked. If your page is not getting scanned and ranked, then you you often don't really care as much about that, And in these days of service side rendering SSR, it's often not even the SCP may not even be dependent on the performance of database calls. So that's like one category of performance that I'm seeing, which has to do with how well have I configured my CDN? How
well have I configured cashing for my files? Am I using properly optimized images? Am I properly loading my phones and CSS and stuff like that? So
that's like one category of performance issues that I see. And the other, which is one that you kind of mentioned a couple of times, has to do with once that web application is already loaded, how well does it respond to the various operations that I that either user do inside of it, in which case it is often has to do with like when when a certain operation
is performed, how many AJAX calls does it get translated into? How how are these are these called parallel paralyzed or or are they sequential if they hit the database, which they often are. How optimized is that database query for example, like you know, have I properly created the indexes for the SQL query that I'm performing? You know, stuff like that. So these are kind of like the two categories of performance issues that I'm primarily seeing. Does
that kind of match your understanding pretty much? Yeah? Yeah, And then that's how we're also building the product too to help developers with these two types of issues. Okay, So if we're going to talking about the database issues, so you said you've got integrations with the major database providers or database platforms,
will it work like with any back end that I might have. Is the integration at the database layer or does it need to be some sort of know, we support Node, but we don't support GO I don't know. Yeah, we do that through the back end, I would say, But it depends on what is the driver that is being used to access the database. So we're not basically monitoring the database server or instance itself, but how
the client that uses the driver to query the database. From that point of view, so it matters if there is a if there is support for the client itself or the back end framework or technology. That is the first thing, and then the second thing is what driver does the back end use to query the database for data. So that is the second thing. So which back end technologies do you support? Oh? A lot. We have nodes, We have Django and anything Python. We have pH stuff like Larovel,
et cetera. I've used it with rails Rails. Yeah, a lot of the the I would say all the most the famous ones, like the most I would assume probably. Yeah, there's like Java stuff. Yeah, I don't know all of them, but there's like too many. Yeah, just for what it's worth, my company uses centry on a pretty huge letter of
ville and view site. We use it pretty intensely both for we you know, see our both letravel and view errors, JavaScript rors, you know, bundling errors, and you know, any number of different errors from both both ends of the application. So it's very handy. Do you also use it for performance while the during Uh, not so much. I think we have some other tools we use. We use it mostly for the air tracking. We get that, like you mentioned earlier, we where he was talking about
it being annoying. We get the emails and the Slack channel updates and and all that kind of stuff. So I think the key thing from my perspective thinking about you know, making the web faster. What I like about this is there there are a lot of websites that are using centriy. Like Centriy has become, from my perspective, almost a de facto standard for error tracking
and air monitoring on the web today. And if you know, if some of these organizations that are that are using Centry already have some sort of a RUM tool in place, and good for them. But if they don't, then why not just use Centry to get all this performance information and start making your website faster. Yeah, I mean I've seen, uh, I've seen lions that only uses for air monitoring to also you know, implement our performance too, whether they have or don't have, you know, already other tools
in place. So I've seen them move towards centric as well. Yeah, I've seen that on a few other places and with other competitors to Century. You know that either went from hey we do the APM or the application performance monitoring and then they added the error stuff or vice versa. But yeah, effectively, people start using one part of the tool and then when they run into some issue, right, so it'll come up that, hey, our core of vital scores are not where we want them, right because that got
on the radar and they checked it out. Or hey, we've got this page that just takes four ever to load, right, And so then they figure out, oh, we've been putting all this data into this system for a long time, and so now we have it, and so now we're going to go look at it. And so then they start to audit what's going on in their website. And I think that's one thing that's kind of nice. So the tool that I use for most of my websites for error
monitoring does not have an APM component to it. And yeah, there have been a couple of times where I've looked at things and gone, man, I really need something to you know, pull this this piece out. And so yeah, it's really convenient to have them both there. Another thing is a lot of site owners and seos, especially seos, they look at the Google Search Console, and the Google Search Console you do have a core vitals area within it, so they can see like performance issues that they have with
various pages and their pages in their website. The problem with it is is that the Google Search Console has like this twenty eight day smoothing window, so you often see issues like two even three weeks after they've actually started. So you say, hey, you know, I've got a problem, but it's affecting your website for it's been affecting your website for two to three weeks already,
so that's problem number one. And then you make a fix, it then takes another two to three weeks to actually see that the fix actually impacted. So yes, you can't tell Google Search Console that like, I made a change, please review it. But it's still it's still a chore. So that's problem number one. And problem number two is I mentioned before, is this whole issue of attribution, so you can see that in certain in a certain page or group of pages, I don't know, CLS has gotten
worse, but like why what's caused it? You know, you know what, what change have we made over the past three weeks? And there can be so many things. It might be somebody from marketing who just made some
sort of change in the page layout or content. It might be I don't know, issues with and one of you know, an improperly configured CDN or maybe you know you you misconfigured your your web pack or whatever, and you know, creating much larger bundles, or maybe somebody in marketing added another pixel,
And it can be so many things that can have the impact. And and and this whole concept of getting good attribution, of understanding as quickly as possible where the problem is is really key to be being able to resolve it. And that's where a tool like Centry and like the other run providers at these the good ones UH can provide so much value over what Google gives you
out of the box. I was just going to say, because you were listing examples and when you mentioned added a pixel, that's the one that I've seen come up. But the trick is is that a lot of times that doesn't show up in your code because you're using something like Google tag Manager or something, and so right, the change isn't in the code base, the change is in the tool. And so just just be aware of what you're allowing to modify your page that may or may not be the code exactly.
I mean, you know, you see that let's say you've pinpointed the time of the degradation, and then you start doing let's say get bisect, and you find that nothing's changed because it's not in your code. Like you said, it might be that somebody in marketing using Google tag Manager just added another you know pixel that's really killing your performance, but again totally not reflected in
your codebase. I've also seen in cases where a parallel happens, so it's not just from this point on or like from this commit on and you know, the performance gets worse, but like there's like two parallel lines where one of the one group of the users are experiencing okay, are having an okay experience, but then another has not so much okay, and they didn't have anything to do with pixels or or stuff like that. It had to do
with the state of the application. So I've seen like banners that you know, change the lcp' score because they're pretty big at the top, and some users take the time to hit the X button, but some don't. Right, So for some of the users, your run data is going to report the LCP is going to be based on the banner, but for the others, it's not going to be. The element is not going to be the banner itself or the background or whatever it is, but it's going to be
some different part of the page. So there's like also parallels of data and I've seen situations where a lot of organizations do all sorts of A B tests, So they might be testing different let's say head title or header messages, and the head different header messages have a slightly different length, and then due to wrap around and stuff like that, all of a sudden, a different piece of content is the largest contentful piece of content to be painted based on
where you are in the A B test. So all these things can really drive you nuts trying to figure out, Hey, what's actually going on? You know, why is it that all of a sudden, my page shows poor performance even though I don't I didn't think that anything actually changed. And again, attribution is really key in being able to solve these type of types of scenarios. Yeah, and I would say that centrally does handle that in
a really good way. For example, in cases where an A B test is happening, or in case where some of the elements or state of the application can affect the web vitals, you can always you know, add tags to the context, so all of the data that's being measured is going to be tagged, like a banner shown true or false, or that the user
is logged in yes or no, et cetera. So that based on the tag itself, you can filter out specific scenarios of the state of the application, and then you can zoom in in that data and see how the I don't know, web vitals and all the other metrics look like without these cases in mind. So it's not just desktop versus mobile or Chrome versus Edge, it's also do I have this spanner or don't I have this spanner? Am I on this? Am I on the A part of the test or the
B part of the test? And stuff like that. Exactly. Yeah, and you have the you already have the tooling in the in the s decay and in the dashboard in centry to to do all the slices that you need to do. So did the data makes sense? Cool? Yeah, so
you said you haven't gotten into the customer data A ton. I'm kind of curious if there are case studies though, where somebody basically demonstrated or you know, had some kind of major shift in their performance or a major shift in their web vitals or a major shift in Hey, this was our money maker page and it went it got faster, and then we made more money. I'm just I don't know which of those you might be aware of, but
that would be cool to hear about. Yeah, totally. I mean we internally and like you know, we always talk with the customers, and there's sometimes we even do events like workshops where we just gether some you know, better people in Zoom and we talk with the our clients or people who use Centry. I remember I also did one with a person who who used Centry in a React Native application and we talked about their experience, et cetera.
So we sometimes we do publish these kinds of interactions and conversations, either through video format or or on a blog. So there are some stuff like that. Yeah, how do I find those? I'm not sure if there's like one page that lists all of them. But if there isn't, then that's a really good idea and I'm gonna take it up and see if we can build that. But I'm not sure. I'm not sure. Maybe either the
blog or the YouTube. There's probably a playlist on the YouTube channel. Okay, any of the rest you have questions or should we go to picks? I've covered my basis, Lasa, is there anything else that you specifically want to add? I don't think so, yeah, I think we had a really good discussion. I'm tracing and performance and stuff. Cool. I have to say just to conclude that I'm a huge believer in real user measurements.
You're always surprised if you just go by synthetic measurements. You know, it's highly likely that you're not actually testing what your users are really experiencing, so and and so that's number one. And number two is that production will always surprise you. And I've seen things, so just trying to rely on on on synthetic tests and simulated environments, that's that's just not enough. Yeah,
have you seen the have you seen the reports? I think it's a few years old, but there was a report where it got all of the Lighthouse data and got all like the top I don't know how many websites with their scores and then maps them out with their data from the Crux database, and it turns out that like forty three of good light House scores don't even meet the minimum of the web vitals went from the Crux data. That's interesting.
I've often seen the reverse, like pages that actually have good coed vitals but seem not to have good simulated scores. Especially for mobile, because Google really simulates a low end device that's slower in many cases that what users often actually have. But the reverse can also happen. I know that Rick Viscomi from Google I think actually even wrote an article a while back about why these scores can be so different and why you might see such significant discrepancies between the synthetic
tests and the reviewser measurements. So yes, I think that the best option is really to use both. That during the development cycle, you're using the synthetic tools to make sure that you don't degrade before pushing to production, but then you also have tools monitoring your production environment to catch all the things that slip through, because inevitably things will slip through. And said, you know, changes might be as results of things that have nothing to do with the
actual code. They might have to do with pixels, with images. I've seen, for example, cash headers for files misconfigured, so or I've seen situation where somebody accidentally turned off all the compression for all the files at the CDN, so you suddenly are downloading you know, five times as much data than before. So I've seen so many reasons for poor performance that might not
be caught by synthetic tools that only check during bill times. I guess you could say really really stay based on the report that that was the crux of the issue. Right, yeah, I think you made the same joke when what we had Rick Vscopy on the show. Hey, if it works, you know, keepu isn't it? Some people hadn't heard it yet. That's sorry? All good? All right, Well, let's go ahead and move
on to the picks. Before we do that, though, Lazaar, how do people find you on the internet if they have questions or want to chat or whatever. Yeah, I'm I'm trying to keep a consistent user name. But let me just change it real quick so everyone can see it. It's at Nicolo Lasa and this is how it looks like. All right. We'll also put that in the in the comments on our various streaming platforms, and I can type it and in the show notes as well, and that way
people can look you up. All right, Well, let's go ahead do the picks. Steve, do you want to start us off for picks? Going for the high point early again? Okay? I can appreciate that. So before I get to the dad jokes of the week, A j I had mentioned earlier that I thought of a pick you inspired me to pick when we were talking about your aquariums. Back in the eighties, there was this comedian and he was the king of puns. He was, I guess you
could say, one of my idols. His name was Kippa Datta and he has a song called Wet Dream that is all about fish puns. And you know, it starts out how he was driving in downtown Atlanta, Atlantis, and his Barracuda was wasn't working, so he was driving a rented Steingray. Anyway, there's a great line in there where he's trying to pick up some hot fish in a bar and he asked her what's her what's your sign? And she says aquarium and he says, great, let's get tanked. But
anyway, that's a It's an all time classic. If you want to check it out, you can find it. There's actually a video very you can tell it's very early MTV video style on YouTube called wet Dream. So Dad jokes of the week, Oh I just lost them, sorry, And by stand by, did you know? It turns out that if you you can actually hear the blood throw flowing through your veins. You just have to listen very close to mercos veins, very closely. Sorry, I flubbed that one,
along the lines of the fish puns. What do you call a shrimp that is always getting injured? He's accident prawn? Right. And then finally the other day I went to see my doctor about this you should have been dealing with, and he said, well, do you want to hear the good news first of the bad news? I said, good news? Please? He says, we're naming a disease after you. Yeah. You don't
want that? Yeah? Right, Yeah, it's funny. There's in the fire Service say if there's a drill named after you, it's because something really bad happened, which is generally true. All right, a j what are your picks? I think his first his first pick? Is it the unmute button? Where is it? Okay? I found it? Yeah, let's see. I was just looking to find something to pick, because he had no idea that we were going to have picks today. Right, I had no idea, no idea. I was complete. I was taken aback.
Oh gosh, let's see. Well, uh that this is not really a pick as much of a as a thing that happened. Okay, I gotta I got a couple. I I saw the movie Being There, Steve, have you seen that movie? Yes? That is it's such a weird movie. My uh. When I was in college, one of my Spanish professors had recommended she really liked it. And I'm a huge Peter Sellers fan from the uh you know, all the Pink Panther movies, the Inspector, Clusto
stuff that he'd done. But yeah, this Being There is just it's interesting. I I don't know that it's interesting weird. So it's it's it's critically acclaimed, it's on it's on some lists of you know, best movies you gotta watch. Because my wife and I we like, we've watched all of the TV shows and movies that have come out in the last I don't know ten years that are worth watching and there's not very many of them, and
and so and like nothing new comes out. It's all, yeah, it's very met and so he uh. We decided to go backwards to find some older stuff, some stuff that people really felt like had meaning was done well, and we landed on Being There, and the reviews on it were so high. The trailer looks so weird. But the trailer was a very accurate depiction of the movie. It really made no sense it there was no plot.
It was basically depicting someone who is semi autistic slash echoleist who just says a few things here and there and ends up like next to the vice president essentially, but it is I don't know, so I don't know. That's just something that happened, but something that something that's good is. I finished listening to the first book of the Expanse, and I have to say, overall, I do like the book better than the show. There for the first half of the book, I think I like the show better because the
show gives a little bit more it Like with The Hunger Games. You only get a certain perspective in the book, but then in the movie they get to tell you things that are going on in the rest of the universe that you can't see from the main character's perspective. In the book, they do have a couple main characters, But I guess where the second half of the book I liked it better than the show was that it's just much more focused.
The show progressively got worse and worse as they tried to just make the characters more extreme and just introducing more characters and then just having them yell louder and cuss stronger, and and that kind of got old. But the book just stays focused on the few characters that are the important ones that drive the
story and doesn't try to introduce a bunch of others. And I mean, like, the book's got plenty of language and whatnot too, but it's not it's not the same where it's just like, Oh, she's on screen, now cue the effort. Yep, that was her line. Yep, okay, Now we move on to the next character. Oh, his line is angry, got it okay? And we move on to the next character. They in the book, at least for the first book, they develop the characters a lot better. And so I'm I didn't think I was gonna listen
to the whole book series. I don't know if I will, but I am going to pick up the second book at some point. I've got a whole backlog of Audible to do. But and then last thing is again not really a pick per se, but just an experience. So while we were on the show here, I did try to get century self hosted installed, ran into some Docker issues because you know Docker. But I'm I'm glad to see that it's available for self install, and I'm glad to see that the
install script can kind of resume when it hits a hiccup. I'll play with it a bit more and see if I can find like the right version of Docker to host on the right type of VM to actually get it to install, because I would like to see how that works. But the documentation looks pretty decent. I do wish that it had like just the scripts to run
the installers without having to deal with docer. Just say, okay, like you got to use debbian for this, but if you use deb like just tell me what the operating system is the Docker would use, let me install that operating system and let me just like run the scripts without having to deal with docer because docer, man, it's such a pain in the butt, you know. But but I'm glad to see that it's there. And I was trying it out, and the documentation looks good, and I like,
like I said, I like that it's it. It seems to gracefully restart. As you hit one issue, you can solve that and then restart the install again and it'll pick up where it left off, and that's always very nice. So Plus one to the Century self hosted on that and hopefully I'll get it all the way and that's that's the end of my ramblings for today. I just want to chime in on the Expanse stuff also, I'm just going to put it out there. I very much prefer the doctor setups to
the other kinds of setups. But the Expanse in particular, you're going to find through the whole TV series and through the whole book series that your observation mostly holds out for all of the other books. A couple of things that bothered me a little bit is that they so the books. Some of the books are spaced out over years, right, so you have one book and then a bunch of stuff happens, and then the next book starts, and a lot of times there's a novella that fills in the gaps. Some of
the novellas aren't as good. But the other thing is is that those gaps and the things that happen in those gaps are kind of important, and so the way that they try and shoehorn some of the plot points to keep it more or less continuous didn't really work, and so when they ended the TV series, they actually left off last book and you know a bunch of other stuff that I kind of wish they'd done so anyway, but overall, they
did an excellent job on the TV series. Uh. The other thing to keep in mind with the TV series is I think the Sci Fi Channel did the first two three, and then Amazon picked it up, and Amazon picked it up, and when Amazon picked it up, we got better. So there, I know there was one like the first season of the TV series was pretty good, and then he was either the third or the fourth one was pretty good. But that yeah, that's I think it was the second
one. It was just like out of nowhere. It's like they just I don't know if the books that way. I don't know. Does is the book like a completely different, unrelated story for the second book? No, I don't. I don't remember for sure, but no, I don't.
I don't remember it being that So yeah, because they go into this thing about Mars and then the the the humanoid aliens, and and then like that storyline has dropped and it's never picked up back up against I don't know if that, like, if the book has that or if that was just like they were patting the TV show the continuity. I remember the second season being mostly based on the second book. But yeah, the continuity in the books is really really tight. So okay, cool, I'll look forward to the
second one then. Yeah, all right, Dan, what are your picks? Okay, So I have a couple of picks today. My first. Since we've been discussing performance and the impact of perform that performance can have on the success of a website, there's this excellent website for web performance that Google created well web performance and web development called web dot Dev, and they have
a section there web dot dev slash case studies. We'll put the link in the show notes obviously, but it's got a whole like lots of case studies of companies that improve their performance or certain aspects of their performance and the benefits that they've gained as results of these improvements, like actual numbers and actual testimonials
and figures and stuff like that. So if you need to prove to your let's say management while why it's worthwhile investing time, effort, and maybe money into improving the performance of your website or web application, you know, you can go there and you'll find a lot of relevant content. So I think this is a useful resource in the context of what we've been talking about today.
So that would be my first pick. My second pick. I've mentioned that we've been clearing up our library and I found various books that haven't read in a while and was deciding which ones to keep and which ones to let go basically donate, so which ones to reread. And I think I've mentioned before that I'm actually reading a series of books called The Saga of the plosen Exile. It's a series of books from the eighties written by Julian May.
She was a sci fi speculative fiction author. It's kind of an interesting work in the sense that it's kind of midway between science fiction and fantasy in that it's it's supposed to be like science fiction based, but it gives a lot of fantasy vibes. But it's from my perspective, it's an excellent series of books. There are four books in the series. Since it's from the eighties, they're all written, so you don't have to worry about, you know,
an incomplete series of books. It goes from start to finish. It's they're pretty thick, lots and lots of characters, lots of character development and character interactions, and it's just a great series of books, lots of action and adventure. But also she really gives like the flashes out the various characters.
One complaint that I've heard about the books, and I can see where it's where it's coming from, though, I although I don't necessarily agree with it, is that the depictions of the lgbt Q let's call it community or people that are identify as such, especially trans people, is not ideal. It may have to do also when the books were written, but I'm just putting it out there in the case that it might impact the decisions of some people to read it. As I said, I think the books are really
good. But again this is my own personal opinion, so that would be my second pick, and I mentioned them before. It's just that it's a long series of books, so it's taking me a while to read through them, and I, by the way, I can't really I can't deal with audiobooks. I have to actually read the book. I don't know when somebody is reading it out to me. It kind of feels weird to me. I don't know, it's maybe it's just me, but that's the way it
is. So that would be my second pick, my third pick. I'm also very much a history buff or history fan, and especially of ancient history, and given the fact that I live in Israel, also history of the Middle East, which has a lot of history and a lot of ancient history. And I found these series of lectures called The Rise of Ancient Israel with Professor Isail Finkelstein. He's a professor of archaeology in the Tel Aviv University.
He's done some of the most significant archaeological digs in Israel, certainly in recent years. And it's a very long series of conversations that he has with one of his students who's actually made this basically recorded this series. There are twenty one discussions and there are like something like forty something minutes long each and they talk about, you know how, the evolution of the ancient kingdoms of Israel, of you know, King David and before and after. It's really interesting
if you're into that. I do have to caveat this with the fact that he takes the Bible as a serious source of historical information. But when there's a conflict between the story in the Bible and the archaeological findings in the field, he will side with your archaeological findings. H Or put another way, he sees the Bible as not as a historical book so much as a book of you know, a religious book and an ideological book that is based on
historical events. So considering the archeological bracity of the Bible of something I read quite a bit to you on that's sort of well, there's a lot of
there's a lot of historical Veracity's not he's not denying it. But again, when there are conflicts, and there are some conflicts between potentially, but you know, the problem that he likes to state that he says a lot about archaeology is that you can only go but what you but what you buy, what you have found, and that maybe tomorrow you'll find something new that completely changes your point of view. But true, but again, you can only
go on what you found. And while a lack of evidence is not an evidence, how does it go I know exactly what you're saying, yes, but still you know, if there's no evidence for particular events where you expect evidence to be abundant, it does say something or at least it raises some significant questions. Anyway, I highly recommend it. It's it's an excellent conversation. I'll put a link to the entire playlist if you're into that. Very
highly recommended. And my final, so that's really fascinating. Yeah, there goes my week, are right. Yeah, I would be curious, you know, as to what you get from it. It's it's really really informative. And my final, I won't call it pick I'll call it a mansion.
Today is the Holocaust Memorial Day in Israel, and this one's especially hard because we still have one hundred and thirty two hostages being held in Gaza by Hamas, So it's kind of I wouldn't call it a modern day Holocaust, it's not quite up there, but it's it's it makes everything harder, and you know, we don't even know how many of them are still alive, and how many of them have been murdered or tortured to death, and it's and it's you know, and you swing between hope hope and and you know,
feelings of hopelessness and and it's it's really hard. So anyway, those would be the picks and mentions that I wanted to make for today and over to you, Chuck. All right, I'm gonna put out my picks and then we'll let let's R do his. So I always start with board game. In this case, I'm doing a card game. This one's called Hanabi. Hanabi is the Japanese word for fireworks, and the game is pretty simple. You are delta hand of cards. It's usually it's always four cards.
You hold them facing everybody else, so you don't know what cards you have. You can see what everybody else has, but you can't see what what you have. And then what you do is you can either play a card. So if you know what you have, or you think you have a good idea of what you have, then you can play the card. And what you're trying to do is you're trying to get stacks of all the colors to go from one to five, and they're three ones, two of two,
three and four and then one five of each color. And so you can play a card, you can discard a card. So the way we always play is we always let everybody know I'm discarding off of the right hand side of my hand. Right so if people don't want to get rid of it because it's a five, and if you discard a five, you lose
because you can't play it. Then right then people will clue you, hey, this is a and so that's the last one is you can give a clue, and a clue is these cards are white or these cards are yellow, or you could do these cards are two's right, and so anyway, and then you're you have to kind of keep track of what where stuff is in your hand without being able to see it. And so anyway, it's
a super fun cooperative game. I like it better than a lot of the other cooperative games because like when I play cooperative games, there's one in particular that when I play with my wife, it's it's me and her and anyone else who's playing, and she's telling us all what to do, and I just I don't I don't love playing the game where I'm watching somebody else play my game. So anyway, Uh, this one's different because you can't do
that because you are missing information. So yeah, and we usually chit chat while we're doing it. You just have to be careful because if if I'm holding my cards up and I know that I have a particular card. I may have inferred that from the clues I got and the fact that I can
see the other player's hands. And so if you have if you know what a card is, you can't always say, I know that this is the four of White, because you might have inferred that from the fact that they told you it was a white card, and you know from the discard pile and the other hands that right, it can't be anything else. So anyway, super fun game, so you can buy it. It's like ten bucks on Amazon. And then the other picks I have, I have a couple
of them. So one of them is a movie that my wife and I
saw last week or the week before. It's called Escape from Germany. And it's a true story about Latter Day Saint missionaries that were in Germany when the war started, and so you know, as you can imagine, they were somewhat hostile toward Americans, and they were also hostile toward UH missionaries because they were hostile towards certain kinds of religion, and so anyway, it's it's just a series of miracles on how they got all those missionaries out of Germany.
And I really, really enjoyed it. So I'm going to pick that it's done by TC Christensen, who's the guy that did the Other Side of Heaven. And so if you liked that movie or that Brandon movie, then definitely check it out. And then the last pick I have besides telling you to go check out JavaScript geniuses dot com, is if you go to so Brandon Sanderson last year he put up a YouTube video and a Kickstarter and basically said, I was locked in my house during the pandemic, so I did what
I do. I wrote all these books, but I didn't tell anybody about them. And so it's a series of books he's called the Secret Projects. And I listened to the first book on Audible. It's called Tress of the Emerald. See and I'll put an Amazon link on to the Audible books. You can buy it with a credit. But it's this one's part of the cosmir So he has he has a universe that he writes a number of his books in and you can kind of see some of these worlds converging right beginning
to converge because you have crossover with some of the characters. Usually it's minor characters, not major characters, but Anyway, this one is in that vein. The narrator of the book is Hoyd. If you've been following along with Brandon Sanderson's stuff, he wrote the whole thing in Hoyd's voice, and Hoyd is one of the main characters in this book. But it is, it was, it was. It was a fun book, really fun book to listen to. So if you're into audio books, or if you want to
just I guess you can just pick up a copy of it. The Kickstarter he mailed out a book every month along with a bunch of other stuff. But now you can go and you can get the books without being part of the Kickstarter. So a year later, right, So last year, if you back the Kickstarter, you got this book in January, and you got
the next one in February, March, and April. And now the first four books are out because we've gone through April, and so I'm assuming that the fifth book and the Secret Secret Book series is going to come out pretty quick here because we're into May. So anyway, I really really enjoyed that book. So anyway, those are my picks. All right, lazare what are your book? What are your picks? A question? Do the picks need to be non technological, or they can be technical or non technical.
Okay, because I only got technical. It's all good. I'm always in the new stuff and I'm starting to get into AI, so I'm gonna start picking some of that stuff too. Oh cool. Yeah, yeah, So I didn't know that I needed to prepare picks, but something on top of my mind, I'm gonna mention century. Of course, check it out. The free tier is generous enough for you to get started, and it's it's
it's generous, so you should check it out. But when it comes to picks, I got one interesting and that is a project by Joanne Leon. I'm sorry if I'm butchering your name, but it's basically and I'll drop the links here so you can check it out. It's basically a collection of web performance snippets that you can installed, not installed, but I move into your web browsers so you can, you know, check out what is the LCP
element or whatever it is that that the snippet provides. There's also I m P. There's also the whole loading category, but it's basically at death time before you commit what you have, if you want to check out how the performance looks like on your machine. You can check out all these beautiful snippets. So these are at death time. One more new thing that I came across and and and anri Elvetica told me about this is the rum archive.
Uh it's it's it's basically like crucks, but it's data taken from a Kama and it's put together in a database. But you can query it. And I haven't been playing too much with it, but it's basically, uh yeah, you can use you use this database to see rump data and you can split it into different frameworks, et cetera, so can plug that in. And then also I've been playing with a project called UI dot a Eternity.
So it's a collection of UI components for React built with tailwind and frameer motion, and they look really good and I tried using them, but some of them are are really making an impact on the performance. So I'm looking into these components right now and figuring out how I can or if I can make them a bit more performant. Right So instead of using frameer motion, can we do that with plane CSS so we're not introducing or shipping too much JavaScript
to the client. So these are the things that are on top of my mind, and I would have been more prepared. But I'm sorry. No, it's all good. Thanks for coming this. It was a lot of fun. It's good to kind of dive into some of these tools that a lot of people use. I also found a lot of applicability for if people were using, like I said, things that are like century but are not Century. Some of those features are there, some of them are not.
But yeah, I think I have a much better idea in some of these areas, especially on the APM, the performance side on what I can grab. So thanks for jumping in and until next time, folks, max out
