Menu
Sign In Search Podcasts Charts People & Topics Add Podcast API Pricing

John Gallagher

👤 Person
314 total appearances

Appearances Over Time

Podcast Appearances

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

I was like, what's this? How's this supposed to be useful? People are like, oh, we don't really look at that. It's not very useful. I said, so how do you figure out bugs? And they're like, well, we just, we just figure it out. Well, yes, but we're not figuring it out. So all of this was born through frustration.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

I was like, what's this? How's this supposed to be useful? People are like, oh, we don't really look at that. It's not very useful. I said, so how do you figure out bugs? And they're like, well, we just, we just figure it out. Well, yes, but we're not figuring it out. So all of this was born through frustration.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

And so what I did back then is what I recommend everybody does now to answer your question. Come back to the point, John. Yeah. which is take a question that you wish you knew the answer to, a very specific question, not why is our app not performing as we want? Not as in like, why do our, you know, a very, very specific question. So take your big, big question. And the time this was,

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

And so what I did back then is what I recommend everybody does now to answer your question. Come back to the point, John. Yeah. which is take a question that you wish you knew the answer to, a very specific question, not why is our app not performing as we want? Not as in like, why do our, you know, a very, very specific question. So take your big, big question. And the time this was,

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

Why are people being locked out of the app? Why can they not reset their password? They're clicking on this password link and they're saying it's expired or it goes nowhere or it doesn't work. Okay. Why are those people, like, why is that happening? So that's quite a general question, and you want to break it down into some hypotheses. So that's the first thing.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

Why are people being locked out of the app? Why can they not reset their password? They're clicking on this password link and they're saying it's expired or it goes nowhere or it doesn't work. Okay. Why are those people, like, why is that happening? So that's quite a general question, and you want to break it down into some hypotheses. So that's the first thing.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

I have a five-step process, and this is step one. I'll go through the five-step process in a minute. So step one is think of a specific question. So a specific question in this case might be, Okay, I've got one customer here. There's many, many different types of defects. So this one customer here is saying it was expired. I went to the webpage and the link said it had expired.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

I have a five-step process, and this is step one. I'll go through the five-step process in a minute. So step one is think of a specific question. So a specific question in this case might be, Okay, I've got one customer here. There's many, many different types of defects. So this one customer here is saying it was expired. I went to the webpage and the link said it had expired.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

Okay, when did they click on that link? What response did the app give to them? And when did the token timeout? So those are three questions. Now they're not going to get us to the answer directly, but there are three questions, very specific questions that we can add instrumentation for. So I would take one of those questions. When did the token timeout? Great question.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

Okay, when did they click on that link? What response did the app give to them? And when did the token timeout? So those are three questions. Now they're not going to get us to the answer directly, but there are three questions, very specific questions that we can add instrumentation for. So I would take one of those questions. When did the token timeout? Great question.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

So in order to do that, we need to know when the token was created and what the expiry of the token was. This is just a random example off the top of my head. So you'd be like, okay, well, we need to know the customer ID. We need to know the token. We don't actually need to know the exact token, but we need to know the customer ID.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

So in order to do that, we need to know when the token was created and what the expiry of the token was. This is just a random example off the top of my head. So you'd be like, okay, well, we need to know the customer ID. We need to know the token. We don't actually need to know the exact token, but we need to know the customer ID.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

We need to know the time that the token was created and the expiry time of that token. Is it 15 minutes? Is it two hours? Whatever. So I would then look into the code. So we've done step two. Step two is define the data that you want to collect. User ID, token expiry, and an event saying the token has been created now for this user ID. Okay, so that's the second step.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

We need to know the time that the token was created and the expiry time of that token. Is it 15 minutes? Is it two hours? Whatever. So I would then look into the code. So we've done step two. Step two is define the data that you want to collect. User ID, token expiry, and an event saying the token has been created now for this user ID. Okay, so that's the second step.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

The third step is build the instrumentation to do that. So whatever you have to do, maybe it's you need to actually add structured logging to your entire app. I don't know. Maybe it's that you've got the structured logging fine, but there's nothing listening to it. Maybe. Maybe the tool just can't actually measure what you want it to measure.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

The third step is build the instrumentation to do that. So whatever you have to do, maybe it's you need to actually add structured logging to your entire app. I don't know. Maybe it's that you've got the structured logging fine, but there's nothing listening to it. Maybe. Maybe the tool just can't actually measure what you want it to measure.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

So maybe you need to invest in a new tool, whatever it is. And then you build some code to instrument just that very small piece of functionality. And then once you've done that, you wait for it to deploy. And then you look at the graphs, you look at the logs, you look at the charts, whatever output you've got.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

So maybe you need to invest in a new tool, whatever it is. And then you build some code to instrument just that very small piece of functionality. And then once you've done that, you wait for it to deploy. And then you look at the graphs, you look at the logs, you look at the charts, whatever output you've got.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

And what normally happens is, for me, I look at the charts and I say, that is not what I wanted at all, actually. I've misunderstood the problem. I've misunderstood the data I want. Now that I see it, ah! Just like you would with agility, true agility, not agile, because agile means something else now.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

And what normally happens is, for me, I look at the charts and I say, that is not what I wanted at all, actually. I've misunderstood the problem. I've misunderstood the data I want. Now that I see it, ah! Just like you would with agility, true agility, not agile, because agile means something else now.