We begin tonight by talking about your health. Joining us is Dr. Greg Schrank, Associate Hospital Epidemiologist at the University of Maryland Medical Center and Assistant Professor of Medicine at the University of Maryland School of Medicine. Doctor, it's good to see you here in person again. You were one of the very last in-person people before the pandemic Zoom era started. You're doing well, I see. I am, and it's great to see you as well in person. Again, Jeff, thank you for having me. How would you explain the setup that we have now heading into this winter in terms of respiratory viruses? So we still have COVID, we got the flu, and we have RSV. Yeah, well, I think how I think I can describe the current situation is we had, on the baseline level, a fair amount of COVID circulating. And then what we've been confronted with earlier than a usual respiratory viral season is a whole host of other respiratory viruses, namely RSV and influenza at the top of that list that are adding a whole additional burden of disease to the community, some of which is then also spilling over into hospitalizations as well. RSV is something I knew very little about, primarily focused or more serious for very little kids. That's right, it stands for respiratory syncytial virus, at least prior to the COVID-19 pandemic, almost every child would be infected with the virus before the age of two. We had a couple of years going back to 2019 with almost none circulating, with very little influenza as well. So in our communities, we just really haven't seen much of these viruses. So with some weaning immunity and the onset of winter, we're just seeing them explode. Let's talk about what's happening with the flu because we had a couple of years when everybody was being really careful about viruses and so forth. Well, we didn't have much of a flu season. The map from the CDC that they update every week that shows with like a color heat map, how severe the flu is, you can see on this picture. I mean, the Southern states and creeping up the Eastern seaboard and including Maryland, it's a very high level at the moment. Are you seeing that? We are in fact, and the geographic distribution that you're seeing on the map is not unusual for the early part of flu season starting in the Southeast and moving up the coast. What I think is unusual about 2022 is that not only have we not seen much influenza for the past couple of years, so this is really a stark change for us, but we're also seeing the wave, the epidemic wave as it's called of influenza beginning almost two months earlier than we typically see, at least here in Maryland. And it's coming, as I said, along with a whole host of other respiratory viruses that is really all returning with a vengeance. I saw that map, a version of it from a couple of weeks ago was a little less advanced. Saw it a couple of weeks ago and ran out and got a flu shot. Is that the appropriate response? Absolutely, and even though we're seeing flu cases rising right now, it is without a doubt not too late to get your flu shot. Particularly for those who are over the age of 65 or who have medical conditions that put them at greater risk, many of those medical conditions are the same ones that we've been hearing for the last two years that place you at higher risk for complications from COVID-19. So go out and get your flu shot and make sure you get your COVID booster along with it. You can do it at the same time. That's right. I was reluctant. Yeah. I did them sequentially like a week apart. And that's okay as well. Whatever you feel comfortable with, both may lead to some side effects, a little bit of fatigue, especially with the COVID boosters. We know that sometimes there can be some fever or some soreness, but it is safe to receive them both at the same time. And I think as we're seeing influenza really starting to take off right now, I would absolutely recommend not waiting on either one. Let me remind our viewers, if you have a question for the doctor about any of these respiratory viruses running rampant, give us a call at the number on the screen or you can email a question to livequestionsatmpt.org. You mentioned age 65 for the flu shot. What changes at age 65? Well, I think the risk for complications from influenza is increased in that older age group. And with regards to the vaccine, what I think is really important for our older neighbors to remember is when you're getting your vaccine, make sure that your provider, your pharmacist, knows to give you the vaccine that's specifically designed for older adults. There's a couple of different versions, one of which is a higher dose to make sure you're really maximizing your immune response. The other formulation comes with another component that helps boost the immune system as well. Either one is perfectly fine, but they are specifically targeted to older adults to make sure that they are protected during influenza season as best as possible. How do we know?  I mean, it's how we spread stuff. But how is somebody gonna know what they have this year when it's not just COVID that's floating around? That's right. I think we've become accustomed to any cough or any fever as COVID until proven otherwise. And it's going to be much different this season. There's a lot of overlap between the symptoms that all of the different respiratory viruses circulating cause many of them will lead to fever, many will lead to cough or sore throat. The best way to find out is by getting tested. Though the tests that could differentiate between RSV, flu, COVID, most of those are only available at a medical provider or like an urgent care or an emergency department or your primary care doctor. If you were a question, if you were once to know, would you recommend continuing to wear masks or returning to wear masks to prevent flu, COVID and other illnesses? Where do you stand on masks? Yeah, and I think there's a few things that masks over the course of the pandemic haven't changed at all. One is that we know that they contain infection when the person who's infected is wearing one. The second thing is we know that especially a well-fitting mask, one that's multiple layers, protects somebody who's well and is wearing it and is exposed to a virus.  They really don't. If you're wearing a well-fitting, high quality mask, it doesn't matter whether it's flu, RSV or COVID, it will help protect the wearer. And so for me personally, especially knowing what's going on out there if I'm going into a very public crowded setting, I put on a mask. If I'm taking my girls to the aquarium downtown at the Inner Harbor, I'll put on a mask while I'm there with them. And you're in the minority. I mean, I've been on a couple of flights recently, been in Target and big stores. I see, and it was the case on this flight, 100 people on the plane, seven or eight wearing a mask, including me. And I remember sitting there thinking, like, who's the smart one? Because I think I'm well insulated with a good mask. But on the other hand, these people who aren't protected at all are being exposed to everything all the time. And maybe their immune systems are in better shape than mine after all that exposure. Well, I think we don't need to be all or nothing with masking. And I think maybe that's a false decision that's been created for us and with so much debate and discussion over the past couple of years around masking. I think I have very much enjoyed going back and enjoying eating indoors, dining indoors, seeing friends I had not seen for some time. But I also still, I wanna make sure that I stay healthy so I can show up to work every day at the hospital, take care of the patients that I'm there for, make sure that my daughter that's in school stays healthy so she can be with her friends and learn. And we knew that prior to the pandemic, an enormous amount of days lost from work and days lost from school were attributable to respiratory viruses. And so if there's something I can do that's for at least me personally, a low burden for a couple hours around walking around the aquarium, that's fine by me. Yeah, if you're used to breathing through it at this point, which I am, it doesn't really bother you. Let's take a phone call, Washington County, this is Fred, Fred, thanks for the call, go ahead. Okay, yes, about a month ago I got my booster shot and the COVID shot and the flu shot. And I still have pain in my arm from that. And I didn't know like they switched the vaccine on me from Moderna when I originally got this Pfizer initially. And just wondered, is that a problem or is that normal but still have a pain in your arm where they injected the needles? Great question, glad you called, thank you. Yeah, it's a great question. Typically the soreness wears off after a few days, though they're a small percentage of people that can last and there can even be some swelling that lasts for a number of weeks. Not sure anything else about the caller's history but some people that take aspirin regularly or blood thinners, there can be a little bit more swelling and bruising present there as well that may contribute to some discomfort. But most of the symptoms from these vaccines wear off within about two to three days. And they do tend to bother some people a whole lot more than other people. And that could be for a whole host of reasons, younger individuals. We saw in the vaccine trials, tended to have fever a little bit more frequently, maybe slightly higher fevers and fatigue as well that persisted longer than older adults. Not necessarily a sign per se that your response was better and that your immune system is better primed but it's just an underlying sign that your immune system is working hard to train your body that protect it against future exposure to the viruses. Let's take a call from Arlington, Virginia. This is Paul. Paul, thank you for calling. Go ahead. Yes, please. Could you tell us, help us understand what is it that's going around? It's very strong, it's lasting over three weeks. It doesn't feel like flu. It's got persistent coughing, dry coughing and it just hangs on very strong. Is this a new virus? Are these viruses merged together to give us something new like flu RSV together? Wow. Is this so strong this season, this time around, please? Hey Paul, you've got it? Oh yes, I've got it, the family got it, everybody got it. And COVID test is negative? Not COVID, definitely. We've done about seven COVID tests and it's not COVID. It doesn't feel like any influenza. We've had it earlier in life. It's just something that's really strong, respiratory. Wow, sir, thank you very much for calling and feel better, your thoughts? Yeah, Paul, I echo that, please rest up. And there, as I mentioned at the top of the interview, what we're just seeing out there in the community are the myriad of respiratory viruses that typically cause infections in humans. And so it's difficult to know what exactly the caller may be experiencing, but we know that RSV has been extraordinarily prevalent in the mid-Atlantic over the past few weeks. And most adults haven't seen it in a couple of years either. So it can occasionally cause some severe lower respiratory infections in older adults. But we're not seeing anything new per se. These are just all of the typical viruses that we got, we're very used to year in and year out that we just took a couple of years break from. And I don't know if Paul has seen it, a doctor or not, but do medical professionals have better COVID tests? I mean, as the virus is mutated and all that, we're still using the same test. I guess they're still working. That's right. With all of the viruses mutation, we haven't seen any decrease in the performance of the COVID tests. The at-home tests are very much different from what we use in healthcare settings though. And they are better at detecting very low levels of virus. What I have seen as a phenomenon anecdotally and also have seen in data is that individuals with very high levels of immunity to COVID may actually experience much of the symptoms of COVID, especially sore throat and some fatigue without really testing positive by at least the at-home tests. Let's squeeze in one quick phone call, Chris in Montgomery County, a quick question, sir. Yes, thank you. My question is I've had no issues whatsoever. I have all of my shots. I've not had COVID. And I've had no issues with any of my boosters. And it's been, I've heard some people say that that means that because I'm not feeling any discomfort, the boosters are not as strong for me. Great question. I don't believe that. Chris, we will get you an answer. Thank you, ma'am. Yeah, and I started alluding to this earlier when you were asking about side effects. The, certainly we know that the side effects that can occur are as a result of the immune response ongoing in the body, though the absence of symptoms, just because you don't have a fever and you don't feel soreness afterwards doesn't mean that your immune system's not responding. The dose is standardized, it's been tested and we know from data in hundreds of thousands of people around the world that they're effective. Dr. Greg Schrank of the University of Maryland Medical Center. Dr. Schrank, thanks for visiting us in person again. Thanks, Jeff. Your health segments are a co-production of Maryland Public Television and the University of Maryland Medical System.


Hi everyone, Joe for Jazky's casebreaks.com coming at you with 2022 Panini, Donner's Optic Baseball Choice Edition. One box, random team number three. It's the last filler we got to do to unlock that baseball mixer. Big thanks to this group for making it happen. Appreciate it. There's all the baseball teams right there. Different dice roll for the giveaway part at the end of the video. Hey Chad, you're welcome man. You're welcome. Six and a one, seven times for names and teams. Thanks for getting in. One, two, three, four, five, six, and seven. You know what? I forgot to upload that video Chad and I just started uploading it like five minutes ago. Sorry about that. But it should be uploading and processing and all that sort of stuff shortly. Six and a one, seven times for the teams. One, two, three, four, five, six, and seven. Yeah, I did it before my dinner break. I guess I was just hangry, just hungry in my brain. Wasn't functioning properly and I forgot to upload it before I left. But it's in the process right now as we speak. All right, here's the first half of the list right there. And here's the second half of the list right over there. No trade windows as you know by now. And let's print and rip. Right Rex, just getting that out of the way early. Well, it's really not early in the week. This would be middle of the week at this point for me. All right, there's Shane Bieber, Rangers Corey Seeger, and his teammate AJ Alexi, rated rookie autograph for Kevin in Texas. It's 31 out of 88. Use the false Luke, Luke Williams, rated rookie autograph Phillies. That's for Mr. Cromwell, Chad Cromwell with that one. Three out of 99. And your third autograph, I think he's having a nice season, right? Joe Ryan, rated rookie autograph for the Twins. It's gonna be for Kevin and the Twins. And we got Spencer Strider, that's to 99 for the Braves, that's gonna be for Zack. You get John Heasley, 81 out of 99 for the Royals. That's gonna go to Darren, Josh Donaldson, 32 out of 99 Green, Dragon Scale for the Yankees, Cromwell, and there's a rated rookie Stephen Kwan, Hollow. That'll be for Tristan and the Guardians. All right, not a bad box. Now let's see who's gonna win those mixer spots. That's like another 10 hits. So let's get everyone's names one through 30. New dice, new list, and it will be the top 10. Top 10 after four, one in three, four times. Good luck everybody. One, two, three, and fourth and final time. So already from 11 on down, sorry Scott, 11 through 30 big thanks, but we'll get them next time. Top 10, happy times for you. Tristan is happy. So is Scott, you got it in Scott. I wasn't worried at all. Tristan, Jason, Tristan, Brandon, David, Jason, Zack and Zack. Congrats to the top 10. We'll see you in the next video for the break itself. Jasper'scasebreaks.com.


We'll talk about this in the next video, but before we get to mesons, baryons, and what particles really are fundamental building blocks of matter, we have one other quantum number in conservation law to learn about. This quantum number is called strangeness, and the first hint of its existence appears in 1947 with the discovery of cations in cosmic ray experiments by G.D. Rochester and C.C. Butler. So what was strange about cations? Well, cations and other strange particles were known as v-particles because they produced a characteristic v-shaped decay track within a cloud chamber, like the one shown in this cloud chamber picture here. These v-shapes were consistent with two possibilities. Either they were neutral particles decaying into two particles with opposite charge, or they were charged particles decaying into two particles, one charged and one uncharged. Basically these v-shapes looked like they were characteristic of a decay process. The particles producing these v-tracks turned out to be easy to create in cosmic ray collisions, suggesting that the strong force had a role in their production. But what was odd was that the lifetimes of these particles appeared to be much longer than one would expect for a particle created by the strong force. In other words, another force was responsible for triggering the decay, and it appeared that something was inhibiting or decreasing the decay probability. This means essentially that the lifetimes of these particles were longer than one would expect based on our knowledge of how they were formed. Up until this point, the force involved in creating a particle would be instrumental in triggering its decay. To see a particle that didn't fit this pattern was, well, strange. As a result, these particles were called strange particles. Now the fact that these strange particles were always produced in pairs led to an explanation. A new quantum number in associated conservation law must be playing a role. Physicists called this quantum number S, Strangeness, and in 1953, Murray Gellman at Caltech proposed that the long lifetimes of these particles were because only the weak force could change the particle strangeness, while the strong force and electromagnetic forces could not. So only the weak force could trigger the decay process, in other words. He would go on to win the Nobel Prize for this idea in 1969. Strangeness is adopted as a quantum number, and based on observations, a new conservation law is born. Strangeness is a conserved quantum number for reactions involving the strong force. Protons and neutrons were assigned S equals 0. More exotic hadrons were assigned a range of positive and negative integer values of S, depending on their observed reaction and decay patterns. So to recap, reactions have to conserve charge, linear and angular momentum, energy, leptome number, baryon number, and strangeness, but only for reactions involving the strong force. So as you can see, there are a lot of requirements for each type of reaction. But mess and conservation isn't one of them. As you'll learn in the next video, that's because there's another more fundamental class of particles that we have yet to discover.


What you're watching is a recreation of a mishap involving a forklift and a pedestrian. From this viewpoint, there doesn't seem to be a logical reason why this mishap occurred. The pedestrian is walking along a marked walkway in plain view. The forklift isn't carrying a load that would obscure the driver's view. However, when the camera is set up to catch the driver's view of the same scene, all that shows up is an empty walkway, until it's too late. There are two important points to be made from this incident. One, a pedestrian can't assume the forklift driver sees him or her. And second, they can't assume a forklift is just like any other vehicle. These points are important to make because of the very large number of mishaps that occur. Tens of thousands of pedestrian injuries are caused by forklifts every year in the United States. Measured against that, there have been no reports of injuries to forklifts from running into pedestrians. To help understand why all these injuries happen, we should go back and look at the assumptions. People tend to assume that forklifts are just like other vehicles, including the one they drove to work that morning. Except maybe a bit more nimble since they zip back and forth. And that implies that they aren't especially heavy. It also assumes that they steer and move like automobiles and can stop as quickly. People also assume that, like the other vehicles they're familiar with, forklift drivers can see just about everything around them. The fact that none of these assumptions are true is what gets those tens of thousands of pedestrians injured each year. Take the assumption about what forklifts weigh, for example. Even without a load, they're a lot heavier than they look. This forklift, even empty, weighs about the same as these two automobiles. To allow a forklift to carry a heavy load up front, each one has a heavy counterweight in back. On this model, the counterweight alone weighs close to the same as a small pickup truck. An electric forklift has a smaller counterweight because the battery provides part of the weight. We staged a demonstration of how heavy a forklift battery can be. They didn't even get the full weight of the battery on the back of the pickup before it started to lift the front wheels off the ground. And carrying a load, of course, forklifts are even heavier. This concentrated weight translates into much more severe injuries to pedestrians, much more than people would predict would happen if they hadn't seen the actual results. To illustrate this, we reenacted another mishap, an example of the fourth leading cause of pedestrian injuries, being pinned between a forklift and something else. The driver checked to the right, then backed out. The pedestrian was just coming out from between other forklifts. If this were to happen with a passenger car, it would be a very nasty injury. But to visualize the kind of injury from a forklift counterweight, we replaced Debbie with a turkey drumstick, and she wasn't insulted. Here the forklift is traveling slower than it did in the actual mishap. That's simply too much damage to ever heal. That's why so many pedestrians struck by forklifts have to have limbs amputated. Here's another reenactment of a pedestrian forklift mishap. This incident led to the pedestrian having their foot run over, the ninth leading cause of pedestrian injuries from forklifts. This time we replaced Debbie with a red trash can before the forklift started up again. And now we'll use a pair of drumsticks to replace her feet, to show the effect of being run over by a forklift. Again, if we judged by what would happen if this injury came from a heavy vehicle, we'd predict a nasty injury, some surgery, some weeks in a cast. But the same mishap involving a forklift? Notice in the drumstick run over by the forklift, part of the bone is simply missing. Severe enough damage that it probably leads to an amputation. There's another point to make from this reenactment. A characteristic of powered industrial trucks, forklifts, that increases the chances of one hitting a pedestrian is the way they maneuver. People are used to seeing how cars turn a corner. The front end swings around and the rear follows the same path. But the steering wheels on a forklift are in the rear, so when they turn a corner, that heavy back end swings out. Many of the pedestrian injuries, the struck by and the pinned between forklift and something else, happen this way. Related to that weight and maneuverability is the fact that powered industrial trucks simply can't stop as quickly as other vehicles. Of course, these characteristics don't exist out there just by themselves. They team up with those very bad sight lines to create the severe hazard to pedestrians. To help people appreciate how limited the forklift driver's vision can be, we set up a display at our forklift rodeos. We encourage people to sit in the driver's seat to spot the pedestrian. It's a very worthwhile exercise, one that any employer could easily duplicate to help create a safer workplace. So these are some of the characteristics of forklifts that contribute to the number and severity of injuries to pedestrians in the workplace. The other causes of injuries have to do with where and how forklifts are used in the workplace. The pace of work, the repetitive nature of work and unlike other vehicles, they share the workplace with pedestrians and that leads to complacency and familiarity. And again, pedestrians don't understand how limited the sight lines are from a forklift. Pedestrians struck by powered industrial trucks are the most common causes of injuries. However, there are two other causes that bear mentioning here. Powered industrial trucks striking an object which then strikes a pedestrian. For example, knocking things off the top of a stack or knocking the whole stack over. A load fell or lowered on or pinned a pedestrian. The purpose of this presentation has been to increase people's awareness of the hazards presented by sharing the workplace with forklifts. To help translate this awareness into your own personal safety, we'll give you five rules to remember. Never assume the driver sees you. If you can't make eye contact with the driver, you're in a dangerous position. Keep looking around. Always look both ways. Give forklifts room and just stay away from them. Every company is supposed to have rules for forklift drivers to follow. Protect pedestrians and enhance safety. But rules by themselves can't protect pedestrians from injury or death. Because even if the rules say that the driver is always at fault in a collision with a pedestrian, the drivers are always the ones who get to walk away uninjured. Thousands of pedestrians each year are not that lucky.


Hello, my name is Uttarorek and I would like to present you today very quickly our quest for small molecule cancer immunotherapy projects together with the bioinformatics and the experimental tools that we use for the design validation and classification. So the target that I will be speaking about today is endolamine 2,3-dioxygenase 1 or idea 1. Idea 1 is an enzyme that breaks down tryptophanes leading to an immunosuppressive environment. It has been shown that idea 1 plays a role in immunity, neural function and aging. And since 2006, idea 1 inhibitors have been developed mainly with a focus on oncology in order to overcome resistance to immunotherapy. It has been shown that this works very well in preclinical models. There's a strong biologic irrational behind it, and everything looks great. Until about 2019, the first results of a clinical trial of an idea 1 inhibitor, apocytostat, was shown to be inefficient in melanoma. So this put a big question mark on the field. But on the other hand, it's still a very active environment field of research and new aspects of idea 1 biology are continuously being discovered. So today, I will speak mainly about idea 1 and show what we have done to address its role in cancer. But I'm confident that most of the tools and approaches that I'm showing can also be applied to other drug targets. And so this presentation will center on the questions on how to design, validate and classify inhibitors for therapeutic applications. And I will speak first a bit about the validation and classification and come to the design towards the end of the presentation. So a few years back, we did an experimental high throughput screening in order to find new idea 1 inhibitors. And two of the hit compounds that we obtained are shown here. We then of course had to validate these compounds and we found different things. For the first one, we found that it showed a very nice dose response curves in the standard essay shown in black here. But when we added a nucleophile to the essay solution, it lost all of its activity, showing that this compound was very probably a false positive acting through chemical reactivity with idea 1. The second compound, which looks chemically very similar to the first one, already showed a somewhat suspicious dose response curve in the standard essay because this curve was very steep. And indeed, when we added a detergent to the essay solution, it lost most of its activity again. And this is a very strong indication of an aggregator, so false positive, which acts through aggregation. Of course, these experimental validation, these experiments are quite time consuming and tedious to do. And so we turned in the following to use cheminformatics filters in order to try to predict compounds that would act through promiscuous mechanisms. And there are a lot of these in the literature right now. And one of the most famous ones is probably the Pan-Assay Interference Compounds Filter or PAINS filter. When, with this experience in the back of our heads, we turned to have another look on the compounds that had been published in the literature as being idea 1 inhibitors. And a lot of these compounds, just a few examples are shown in this slide, look suspicious to us as potentially being chemically reactive, redox cycling, iron chelators, aggregators, or dyes. And so we decided to validate also those compounds. And in order to do so, we developed this radar plot for each compound where we assigned a value of one for each past filter here on the upper three corners of the Pentagon and a value for zero for each failed filter. And on the lower half, we have two kinds of experimental data points using ligand efficiency in the enzymatic assay in the cellular assays. And for each compound, we could develop such a Pentagon and the bigger the red surface of a compound, the better its properties. In addition to this, we added recommendations, pitfalls to avoid and validation procedures to this perspective that we published in 2015. So going back to the four compounds that I had shown before, we can see that indeed, those have very small red surfaces in this validation Pentagon, while one compound that we published in 2012 shows very good properties in this assessment. And also apacados that the clinical compound that I mentioned before just fails one of the three filters that looks rather good in this test. And I think this validation that we did really helped to clean up a bit the literature and to focus on more valid drug like structures in the in the years following the publication of this review. The second point I want to discuss is the classification of inhibitors. And I would just like to shortly motivate why we think this is useful and necessary. So what people usually do when they develop a new enzymatic inhibitor, they look at the kinetics that is following. And if the kinetics are following this red line, I will say it's a competitive inhibitor, which binds to the substrate binding site, while if it follows this green curve will be a non competitive inhibitor, which is supposed to bind to an allosteric site. This classification, however, does not work very well for ideal one, because it has been shown many times that inhibitors with a non competitive profile with respect to the substrate L tryptophan still bind to the same binding site. And so we used, again, a combination of experimental techniques, such as absorption spectra and inhibition assays, and more in silico approaches, such as quantum chemical calculations, analysis of 3D structural data, and a thorough literature review to reassess the classification of ideal one inhibitors. And without going into much detail about the different idea one reactions, I'd just like to show that using these techniques, we could define inhibitor types that explain really at which point or in which way these inhibitors interact with ideal one. So the type one is the type that is really competitive with respect to the substrate L tryptophan, but there are plenty of other inhibitors than that of different types, such as epacadostat, which is competitive with respect to oxygen. There are other inhibitors that interact with the oxidized form of ideal one, which we call type three inhibitors. And finally, there are also inhibitors that actually compete with the hemeco factor for binding to ideal one. So this classification that we developed clarified a lot of confusion in the literature about observed kinetics. It helps to understand the different in vitro properties of different inhibitor types. And we believe that this might also translate into different vivo properties. And it could be instrumental for helping to choose the right inhibitor for a certain application. For example, if you would reconsider testing a compound against melanoma and cancer, you would probably try to choose an inhibitor that is as different as possible from epacadostat. Okay, with this, I come a bit to our core business, which is the design of new inhibitors. And based on our experience and our previous data that we were aware of, we were searching for novel heme binding scaffolds. And we decided to test these 36 compounds shown here, which belong to six different heme binding scaffolds in combination with six different substituents on the phenyl ring. And when we synthesized and tested all these compounds, we had very interesting results. First of all, we found six compounds with nanomolar IC50 values, meaning that these were very active small molecules. In addition to that, we could show that within the same heme binding scaffold, we could span more than four orders of magnitude in difference of activity by just changing a few small substituents on the phenyl ring. And we could also show that the same substituent on the phenyl ring could have very different influence on the activity depending on what heme binding scaffold it was attached to. So in the following, we used again bioinformatics tools to try to understand the relationship between the structure and the activity of these compounds. So in order to explain the in vitro and cellular inhibition assays that we've done, we used expert crystallography to determine complex structures. And based on these, we used ligand protein docking, quantum chemical calculations, and classical binding free energy simulations in order to correlate structure to activity. And as a result, we could come up with a very simple equation that very well described the different activities of these different compounds spanning four orders of magnitude. And I would just show one example in this slide. So this is one of these highly efficient inhibitors, MMG 0706, which has a high affinity heme binding group, this 124 tetrasol. It makes favorable van der Waals interactions with the protein through its chloride substituent. And it is able to make both intermolecular and intermolecular hydrogen bonds through its amino group. So when we compare this compound, the efficiency of this compound to the ones of all published idea one inhibitors, we see that we're really among the very best and most efficient compounds. So this is great. But actually, there's a drawback for these with these compounds. And actually, that comes into play when we try to rationally extend these compounds into larger chemical compounds. Because, as you know, a drug needs not just to be active, but also it needs to have a lot of other good properties for making a good drug out of it. And these very small compounds do not provide enough flexibility to address these other properties. So in order to understand why we were not able to extend our compounds, we went again back to structural data that had been deposited in the meantime in the Protein Data Bank and to try to understand this issue. So here, I show that in 2006, we had just two structures of idea one that had been published, but starting from 2014, more and more structures became publicly available. And today, we have 62 structures of idea one in total. Some of them are without ligand, others are with substrate analogs, and a lot of them are bound to different inhibitors of different types. And in orange, I'm just showing the structures that we have resolved ourselves. So when we look in detail into the idea one active site, we had already defined in 2010 two sub-pockets of the active site, one that we called pocket A, that is located directly above the HIMCO factor, and that is filled by all known idea one inhibitors. And extending from this pocket A, we have a second pocket that returned the pocket B, and that is located more towards the entrance of the active site. And so our challenge has been for a long time to extend our compounds from pocket A to pocket B. And I will try to quickly explain in the next slide why this wasn't working so well. So here, I show a top view of the active site, and here the first example, the substrate L tryptophan binding to idea one. And we see here in Sayano, again the A pocket, and in red with a red arrow, I marked the passage from the A pocket to the B pocket. So here, this is how the substrate is binding to idea one. The second example is, again, a top view of epacadostat binding to idea one. You see that the passage is more or less in the same region as for L tryptophan, why for Navoximod and all our azole compounds that we developed ourselves, they are actually oriented in a slightly different way binding to idea one. And actually, this makes them not optimal for passing from the A pocket to the B pocket, because by their geometry, they cannot pass here in the optimal way from one pocket to the other. So in summary, the result of our structure-based drug design for idea one is that idea one is a very challenging target. There are very subtle structural requirements, such as the one shown in the previous slide, that are very difficult to predict correctly by classical docking approaches. And the second challenge is the presence of the iron, the heme iron in the active site, which makes it necessary to resort to quantum chemical calculations in order to accurately predict binding energies. And we have developed a few approaches to tackle this challenge. With this, I come to the end of this presentation. And in summary, by taking idea one as an example, I hope I could show you how a combination of bioinformatics and experimental approaches has been able to move ahead this academic drug design project and to generate knowledge beyond just the development of new active compounds. And I'm very confident that these approaches that we used are also transferable to many other drug targets. On the other hand, we're also ready for renaissance of idea one, which might become interesting again in the future as a target, either in cancer or in other pathologies. With this, I would like to acknowledge my co-workers on this project. Of course, people from the SIB and Lausanne and many laboratories, both from the University of Lausanne and the EPFL. And last but not least, also the Brussels branch of the Dietrich Institute for Cancer Research. Thank you.


How's it going? So I suppose if you're going to be interested, then you've probably had an application that you didn't quite understand before. So if you've understood every app that you've ever seen, then you can just go for a coffee break, I think. So this talk is observability three ways. I'm using the term observability. That's what we used in Twitter back when I worked there. But some people call it telemetry or monitoring. But one of the things that's been quite common, I've noticed, especially working in distributed tracing, is that people have existing tools. They have their log analysis and rollups, and they have their metrics, and they may or may not have tracing. They may have an APM system with dashboards and things. And it's sometimes hard to tell where something starts and when something stops. So that's one of the things I'm going to try to take on and let me know how it goes. So the good news is that there's a unifying theory between these things. Coda Hill mentioned this to me, which is that everything ends up being based on events. And so if we think of the atoms of observability, these are the events. They don't break down much below that. And in the most simplest case, logging, we can think of as just putting events on a timeline. And they may have structure. They may not have structure, but that's the simplest measuring we can do and recording we can do. Metrics, on the other hand, are themselves events that are derived from these things, summarizing usually. So you might take 10 events of request latency and then bucket them. And then that bucket is now a new type of event. And that can continue, for example, if you change granularity of time to get requests per minute instead of requests per second or something like that. And tracing is also events, but it has a really interesting nuance to it, which is that you can tell that happens before a relationship. So for example, you can tell that this request, in fact, calls this next request independent of just timing. So for example, if your clocks are all a mess, you would still know that this customer request ended up causing this back end request. So at the end of the day, they're all giving us insight based on events or new ones. And where they focus is a good place to kind of tease apart one from the other. So like logging, many times when we're developing at Huck, we may find that some crappy error happened. And so that might just be dumped right out to a log. Either we did it or the system did it because we didn't trap it. But at any rate, exceptions tend to end up in logs. And if you roll around, exceptions are something that are also usually kept in traces, or at least that there was an exception. But it can tell you more about that, for example, the impact. So if you do have a happens-before-relationship, meaning this led to this, and this error happened, well, what was before it? Was that a customer request? Was that a redundant request? You can tell a lot more about the impact of that specific thing in the system. And if we keep going around the circle here, well, tracing often has a focus on latency because we know latency is really important to us. If something takes too long, we often give up. We're very impatient. And so we want to tell about latency, not just from one request, but how our whole apps are doing.  And for a cluster or for a node, and metrics tend to be really good at focusing on the aggregate nature of these events. But if you keep spinning around, you can even find that your metrics include the amount of error accounts over time and things. And so it's neat that they have these focus areas, the places where they all overlap. One of the things that they all intersect at is request-based information. So if you think about logs, usually if you have a HTTP request coming into your system, it might have a side effect in a log file. It might have incremented a counter in metrics. And it might have also been in a trace. So right in the middle, you have a place for all these three tools to give you this information about a similar, in this case, maybe an endpoint. But on the other hand, there are things which they don't really overlap. So for example, in logging, you'll have things that are non-request-scoped in nature. So for example, if you're running a garbage-collected system, you might have garbage-collection events. Or you might have audit events, which aren't necessarily going to end up in a trace. And in metrics, we may have things that are not system in nature. So for example, like counts or any of our value metrics about our application performance. If you're at Netflix, then you might want to know what your streams started per second of video streams, which is maybe related to some of these other things. But it actually is something that you would use metrics for that aren't necessarily system in nature. And within traces, there's definitely a good overlap between logging and metrics, but that calls out all the information, isn't usually also kept in the other two buckets. So they have focus. They have overlaps, but they also do have some unique things to add. And so that's one of the reasons why hoping this talk helps with folks. Because we often have one or two, or maybe we're considering adding something else. And what do you get with that? What does it buy me? Because all of these decisions cost something. So let's understand what our values are. So to drill down a bit more, I like to try to make it a bit practical. So if we use that latency, the thing that's in the center of all of those, then we can talk about these three tools, which are not the universe of all tools, but these three that I have time to talk about today. And in common terms. So let's take response time. In a log, you'd end up with response time as in a log line, or the difference between two of them. Metrics are obviously very good at storing numbers. And response time can be represented as one. And of trace, we'll get into that. But essentially, they often have a focus, a central fact, which is latency. A lot of these things where you see some things dumped is just because I'm trying to make it a bit more practical. So for example, this might be a HTTP logging format some people have seen before. And the neat thing about this format is it crams a lot of information in a line, which is good. But also, it adds latency as a trailing field, which is nice because usually if you're trying to do napkin latency, you'd have to compare numbers between two different lines. And this particular format happens to place the request latency as the last field. So you might be able to get an accurate number for how long something took, which is not necessarily going to be messed up by clock adjustments from NTP or something. So in this case, we're looking at something which dumped out a microsecond because microservices. And that turns out into 95 milliseconds, which who knows? Like, we know that's the time. But if you've worked with developers before, you notice that when somebody says something is slow, they mean all sorts of things. They could mean it's 30 seconds. They could mean it's 30 milliseconds or whatever. It's very ambiguous until you keep asking questions again and again. Metrics is one of those things that can help us take facts like a latency figure and then answer, well, is it actually slow? Or what is that number? What's the relevance within the population of my system? Because our systems have slow times because we're under a crunch. Maybe if we're running in Twitter itself, then during Super Bowl, there's going to be a lot of activity. It's going to be hitting things. And the system is going to behave differently during that time, even if it behaves well. And so metrics, if we take a fact, for example, at 2.19 PM, this 95 milliseconds, well, A, was that a slow request? Well, maybe if it was very slow, alarm would have gone off. But we could still see within the population at the time how our requests doing. And this is obviously not a real app, but though I would love to see an ASCII art monitoring app. But in this case, the system was particularly troubled prior to this. But at the time that this request happens, it was a bit slower than other requests, and not because the system in general was slow. And so that's useful information when we're trying to understand requests in our system. If we look at traces, they really kind of drill down on a single request. They can help us triage and troubleshoot customer issues directly. So instead of saying, well, generally speaking, the system was OK. But that doesn't answer the customer who may be having some tail latency, which is not represented in our 95th or whatever. So in this case, we can look at individual requests if we're lucky enough to have a trace and understand why was it slow. And this is good because when we're doing troubleshooting, we need to be able to triage and rule out areas that we don't need to explore because time is important. We want to resolve failures quickly. And so if we happen to have a trace like this and yellow meant a failed request, then we would know that the overall customer request was successful. It didn't actually break the upstream because the top bar isn't yellow. But it was delayed. If it didn't have a failed network request, it would have been faster than normal, and it would have been perfectly fine. And so we have a choice to make. Is that a good enough answer? Is whoever is on the other side of the phone, are they going to be OK with that? If so, you're done. You don't have to do anything else. You just know that it was a network to cause delay. And you don't even have to blame the database team. I mean, so it's really nice to have a trace because you can get a good idea of what was actually responsible for some delays. So you'll have your own thoughts if you don't. Here's some you can take. I kind of feel like logs are easiest. We tend to learn logging. What is Hello World, except for our first log statement? And these things are easy to grab, easy to understand. You'll be able to have a lingua franca in any programming language that somebody can understand what a log is. Metrics are neat because they give us this ability to understand trends within our system. They add the relevance, which helps us because everything is very subjective when we're working with systems. And traces can help us understand a specific request or even a combination of events with more sophisticated tooling. So for example, folks at Dynatrace showed me some neat tool where they could reconstruct a postmortem from trace data to actually show the system dying and coming back together. And that sort of information is neat and can be built with trace data. So how do you write this code? And we don't usually spend a lot of time writing timing code. But we could, and some of us do. And at the end of the day, each of these tools would have different approaches to writing timing code because of how they store data and how they report it. So logs, generally speaking, are either delimited or formatted in some way. And so you cram latency data in there. Or you rely on externally provided formats, such as that there's going to be a timestamp field to the left. Metrics are all about numbers and storing numbers. So we'll see examples of that. And tracing is where we're starting propagating this idea of this overarching request through the system. The jargon here is that it's often called a span, which represents a single operation within your overall request. When I say overall request, I mean that usually, especially with microservices, we could have a front end request going into the system. That system is usually not a monolith, so it's going to break down into multiple requests. And maybe it hits memcache, and maybe it hits the database, and other things. And so each of those things would be a span, and the overall request is the trace. So logging, I took some code from OK HTTP, which is my favorite Java library for HTTP communication. And there's a logging interceptor. And so essentially, it usually looks something like this. You have some stopwatch. And then you cram the latency someplace. And so it's about formatting. And the metrics, on the other hand, this is Scala, if you haven't seen that language before. But usually you would take from a stats or a metrics registry. You'll get something that's scoped to an endpoint, or at least a type of data, like request latency. And then you just add numbers to it. So for example, how you collect the number is different within languages and libraries. But again, it's usually a stopwatch type of activity. And you just sync it to this statistics gatherer thing. Tracing is a bit more complex because it has more state to it. It's out of the two I mentioned so far, this one's actually stateful. Because when I say that there is an overall request flowing through the system, guess what that means? There is state, and it's moving. And so you have to actually make sure that when something goes in one side, it doesn't get lost before it goes out the other side. So this is code from Lyft Envoy, which is a C++ proxy aka mesh. And this is C++, and I've dumbed it down a bit. But essentially, you create a span representing the operation, and you make sure that it isn't lost by the time the finish callback happens. And that finish implies often enough stopping the timer. And then at that point, it can be sent out. When this trace goes between systems and its HTTP, usually you'll see a trace ID header and a span ID header or something like that. And so that's how it manifests, and that's how it gets from point A to point B. So the impact of this, logs are ubiquitous, like Hello World, but we do require coordination because if we're going to write a format, we're assuming somebody can read it, whether it's a human or a system. So that's a type of coordination, either you're coordinating based on human intuition or a format or something like that. Metrics, in my opinion, are the easiest APIs to work with because you're just putting numbers into them. And it's hard to get that wrong. You could put the wrong number in, but it's hard to put the number in incorrectly. The tracing is the hardest because it's doing the most work because it's actually having to carry state through the system and make sure that that's coherent. Because otherwise, if it didn't, you could be looking at a trace, which isn't actually what happened, and that could confuse you and cause damage instead of helping you. The next point we'll talk about is, OK, we can definitely do that type of stuff, should we? Should we, I think, is one of the less discussed questions in engineering. Things like, yes, we could, should we? And the reason I say that is because usually frameworks do a lot of this stuff for us. We may write our stuff from scratch without frameworks, but often enough, if you look, they have capabilities that I've mentioned inside the box. And also, even though I've dumbed down the examples, there's lots of edge cases in timing code. So for example, I hinted at clock skew is a problem. So for example, the clock on one system may be different than the clock on the other system. And if you passed out of between them, how do you remedy that? Even within the same box, the clocks might correct their time. And so for example, if it moves the clock backwards, it could look like your request took negative time to complete, which would be awesome, but not really very realistic. There's all sorts of edge cases, which are fun, but not necessarily something that we all need to know or work on, unless we're hobbyists. So how do you not see tracing code? There's a number of ways of doing that. And I'll try to break down a few. One is like a buddy, which means you have some other process that's doing it for you.  And that's going to be taking your responsibilities, which we're seeing more and more often in these service mesh type of deployments. Another way, which is quite popular and probably the most popular way for performance management tools or agents, which will monkey patch or otherwise change the code as your application boots up and puts in instrumentation points, which will capture either latency or other types of information on your behalf. And then another way to not see code is to use frameworks, which then can be configured to intercept your code. So buddy tracing, this is actually an image from Lankerdee, who's one of the few options out there in the service mesh space. And so it's an example of where you have some sort of a sidecar that's responsible for your inter-service communication. So you might be sending your request to a local host, and then it's actually doing an outbound request on your behalf. And the neat thing about service meshes is that they can do neat things. For example, Lankerdee has the ability to give you a special route. So if you wanted to send a percentage of your customers to a new feature, it could propagate a special route to send them to your test cluster based on some policy data. So propagation isn't just for trace IDs. Making sure trace IDs go from point A to point B. But it could be used for deadline guards to make sure that if a request took too long to finish, that it doesn't just keep proliferating load throughout the system and other metering, for example, if you're doing any metering information. So bodies usually do more than tracing, actually. But one thing they do tend to do is tracing. Agents are super powerful things. This is an example of a byte buddy, which is a Java agent library. And the way these things work is that as your application is booting up, it will literally change the code to, for example, trace it or do other things. And if you look underneath of a lot of performance management tools, that's how the secret sauce of App Dynamics or something would work, is that they're actually doing automatic tracing for you. You wouldn't ever need to see the code that's doing that. But of course, with open source, we can see some of it. And the interesting thing about agents is that there are things that you can do in agents you just can't do with code normally. So in Java worlds, for example, you may have thread pools and things. And you can't actually touch them. They're implicit objects. And agents can touch anything. So they're pretty powerful. And that's why a lot of performance tools use them. Frameworks, this is an example of a ton of annotations representing how to trace something in Spring Boot. You don't have to use this. It adds a file to your class path. And then magically, it does this on your behalf. But frameworks often know how best to trace one thing. And that's neat because it also invites the authors of the libraries to do that work. And so you get a high chance of it working out well. And so frameworks usually have a configuration approach, whether that's placing a jar or placing something into a plug-ins directory. But you have something, or a big YAML or Hocon file. You have something that's configuring the ability to trace stuff. And they have their purrs and cons. But if you don't have any choices, usually you choose one that you have. So if I don't have an agent, then I can't use an agent. So therefore, I might use a framework. And if I have none of these options, then maybe I would end up in a case where I have to write the code myself. All of them, at the end of the day, have to ship that data out of process. And this is a pretty interesting thing about observability and worthwhile mentioning. Because a lot of the cost of a system is what ancillary things are going on. Remember, I was asking Netflix once about why they don't do a lot of tracing. And it was because it would end up being a more expensive system than actually running Netflix. And so we have to always be careful about things, like how much data we collect, how long we retain it. And each of these tools have very different ways of, or basically different things to add to this discussion. So logging, usually, we have a pipeline. And that could be like ELK or whatever your favorite way to get logs out from your apps into where they can be analyzed. And often, it's parsing in nature. Whereas metrics are summarized. Oftentimes, you'll get, they're summarized in the app itself. And then maybe that's converted to some request per second. But then your system might summarize it again to request per minute. And as it's going through the system, it might be summarized. And that has a lot of gravity on not just the shipment, but retention of data and how metrics are very different than logs, for example. The other thing is that metrics are often near real time, which is another, if somebody says, like, if you have a problem with somebody being unspecific about the word latency, try the word near real time. Because somebody might think it's a second, or they might think it's 30 seconds, or they might think it's 200 microseconds. So again, all these things about time always ask the clarification. What do you mean by that? Traces tend to have a similar latency, like a read back interval, and are expected, in most cases, to be available as soon as a request has happened. So when we look at the nitty gritty, if you've used log stash that you've probably seen something similar to this, we've been parsing logs so long that we actually have tools to help parse them, like groc, which is a way to typify how we store things like IP addresses and numbers and such. And so you can basically take these patterns, these coordinated things, like whether they're intentionally or unintentionally coordinated, and create things that we could possibly roll up later on. And of course, like I said, in the beginning, things are derived from events. You may actually have metrics that are produced from your log output, too. So that may be, in fact, what you're doing here. Bucketing can be done in many ways. We hear a lot of things in statistics. We hear things about percentiles and histograms and buckets and things. And this is an example of a way to classify requests that goes with my earlier diagram, which is like, OK, we have some boundaries. Maybe they're coordinated up front. They certainly are in this image. And so we know that anything below a millisecond is super fast, and anything beyond 50 seconds is super slow. And then we just, as the data goes into the system, we just increment a number according to that classification. And that has a neat side effect, because it dramatically reduces the amount of data that we're sending out of process. Why? Because shipping the number one isn't a heck of a lot different than shipping the number one million. It's 64 bits, or 32, actually. Depends on how you ship it. But at any rate, it's not a direct line from the counter requests. And that's a powerful tool we can use. Spends, on the other hand, in order to build these graphs that show us what a request looked like, we do have to retain a lot more information. The parent-child relationships, at least the duration, and usually some lookup tags and things. So how does this impact our data on disk or not on disk? Well, logs we know, it grows. That's the first thing we know about logs, is that they grow. They fill up disks and things. And they grow with traffic, although they grow with other things, like errors that have nothing to do with traffic. But they definitely grow with traffic. And they also grow with verbosity, because logging has a usual function, which is like a debug level or a trace level. And if some developer is trying to discover more, with logging tools, usually they will turn on the verbosity, which then could end up adding more data in the system versus just local to that process. Metrics are neat, because they're fixed size with regards to traffic. That's why I was talking about how shipping the number 1 isn't that much bigger than shipping the number a million. And so that means that your data will grow based on the amount of things you're measuring, like your endpoints or how many types of data that you're collecting per endpoint. But the traffic itself isn't a primary function for size. And there's definitely nuance around that. If you have a lot of customer dimensions, you can definitely get more metrics. But it's not anywhere near as directly linked as logs and metrics would with regards to traffic. And this tells us how we can reduce this volume in our system. So if we're looking at logs, well, the first thing you'll have anybody tell you is stop logging things, because if you have irrelevant data going into the system, you're just adding weight to the system. That's why a lot of these tools at the collection ingress points have filters and other things, because we know that oftentimes we have data that we can't even control being placed into logs. So how do we handle that? That's a normal function of logging pipelines now. Metrics, when I was in the observability team at Twitter, we had a kind of read your rights initiative, which is that it's very easy and interesting to put metrics for everything. But then you could end up with writing 1,000 more times information than you're ever going to read. And that just adds load and cost to your infrastructure. So if you're trying to look at things about controlling volume of metrics, well, you can use things like a course or granularity instead of aggregated on seconds, on minutes, or something. But also, and then within maybe the last five minutes has this, but the last day has that. But also, just more simply read your rights. So one thing that I tend to do in open source project work that I'm on is I tend to ask why when people add metrics, it's like, are you anticipating someone to use this? Because in a lot of cases, you can actually get by with what frameworks do, and frameworks often will give you the ability to mute metrics a lot easier than if you were using custom code to do that. So tracing its primary way of reducing volume is sampling, which that means is that, say you have 100 requests going through your system, maybe you choose to keep a trace for five of those. And so that would be probabilistic. So you'd want to make sure that your rate isn't so small. So for example, if you have a front end like Twitter, you could get by with a very low sample rate, like maybe even a 1,000th of a percentage of requests. But if you have a less used endpoint, you might just take 100% of those because you're not going to overload your system. So there's a little bit more choices to do. If you do sampling with traces, you have to be consistent. So unlike logs, like logs sometimes are shipped over UDP transport. So you can have some accidental sampling because packet loss. And you might have even 10% of your data that's just lost. And that could be OK, depending on your use case. Traces, if you have lost data, it can actually be disruptful because you're using this to tell what actually happened in the system. So the sampling should be consistent. And a lot of the tools, for example, the one I work on, Zipkin, is always like a decision up front. And then that's carried through to make sure that it's either all or nothing. And then finally, on this volume thing, is how long is data kept? So logs and metrics, we tend to see people with policies of 30 days or much longer on logs. And traces are interesting. We had, I think, a three-day policy at Twitter on trace data because it was primarily used for triage. So if you put them all in the same system, having different retention policies per type of data can be helpful to you because there's some cases where, for audit requirements, you may have to keep certain log data a lot longer. But that doesn't apply to metrics. And maybe it doesn't apply to your trace data. So you have a lot of tools. So if observability is in one big classification and everything there has to be stored for a year, then you're looking at a very expensive retention policy. So hopefully, some of these things I mentioned about this, which of course I'll post slides you can look at later, can help you make good decisions based on your environment and what advantages you can take from these and decide what retention could be useful. And here we are. So we have these systems. We know a lot about them. And I haven't even really mentioned too much about individual implementations. Like you could be using commercial tools or Prometheus or LogStash or Kibana, whatever. They do work together. And it's not just that they do similar things. But often if you have correlated tags or lockup keys or ways of classifying the data in the same way, indexes, then you can use them together. So you'll find that in tracing, usually people, if they're doing tracing, they also plop the trace ID into the logs. So that way, you can correlate them together. And you can find things, like usually exceptions, that you might not actually happen to have in your trace data. If you're looking at metrics, you may have an RPC name or an endpoint name, which is captured commonly between these two tools. And that way, you can easily transition between metrics which might show something that's awry and either representative traces that are in that exact same time period, or at least you can look them up somewhere else. And because the granularity, as you get to wider and wider scopes, you have a higher and higher chance of a granularity match between the three systems. So like cluster, host, data center, things like that tend to be a type of tag that you could use and go across all of the types of sources. And so when you stitch these things together, you can use them together. And even if there are different retention policies and things, and see broader or constrained contexts of the same events. So I mean, I've talked about a lot of things, but I think if we try to distill down what I hope you could come away with is that logging metrics and tracing are different tools that all participate in our help and help us to understand what our apps are doing. And if we know what these are, we can leverage their strengths and understand their weaknesses as opposed to combat them against each other. And that's going to help us with the actual environments we have. Many of us still have monoliths. Logs are great there. That doesn't mean they're bad for microserver lifts. It just means that there are different ways that we can use each of these tools. And you wouldn't necessarily turn off one to turn on the other. And through the ability of identifying patterns and exception cases and understanding individual request and assistance, we have a lot of power to answer questions not limited to why this is slow, but actually, what is it doing? In microservices, we're getting larger and larger architectures, and we're giving a lot more flexibility to developers. In some cases, we may not be able to read their code, but we could at least identify what's happening from a system level. And as requests go across the system, that gives us a lot of power for triage. We're getting people on the same page. And if you felt this was helpful, one thing I would encourage you to read is Peter Bergeran's blog in general. But he also had a blog that inspired this talk, which talks about logging metrics and tracing. And also, a lot of folks that review this content, who I work with in tracing land, including Baz, who works on this thing called Go Kit, blogged in from Google, who is working on Census, which is like the successor to DAPR. Generate from Critio, which is a pretty high-volume service over there in Paris. Nick from Nike, who has some interesting open source libraries. And then Kota Hale, who has as well, Felix, who runs a small open source APM called Stage Monitor, and Abhishek from Amazon X-ray. But if you didn't like it, then please don't share that with us. Just give it right here. And then maybe the next talk will be even better. But thanks for your attention. And if you have any questions, I'm ready for them. So we have lots of questions, but we don't have a lot of time. So I'm going to try and just pick one or two. So if this is a good one, someone asked, when the tracing is hidden, i.e. it's not done explicitly in the code, how do you automatically verify a test that all the things are configured correctly, that the tracing is happening, all of that sort of stuff? Yeah, so if you don't trust your framework, then what you would do is you would treat it like other things that you don't trust, which are black boxes. So you could, for example, send like a micro integration test, which would have a tracing endpoint and then just verify that you can read back the trace. I do that actually in my apps to verify that. So one is look at the. Guys, if you're leaving, can you not talk, please? So one thing is to look at the test that exists for whatever you're using. But also you can just, in any suspectful system, you can always black box. And there's another question about W3 of Adada proposed server timing spec. I don't know if you're familiar with it. Do you think it will have any change in the way you monitor or report on performance? So there's, interestingly, more spec works going on now. And in fact, even in tracing, I've just gotten more information about a trace spec for headers and things like that. I think one of the important things that I try to work on with groups is making sure that folks collaborate, even if they don't share a single spec, because it's helpful to do that. And I think that there's been some unfortunate cases where, for example, in your browser tool kits, there's a lot more going on there. And also at the kernel level, there is perf events and things like that. And I think over the next year or two, you'll find more links between these type of specs. And it's up to us to also ask folks if we see a tool that isn't using something we're interested in, whether it's a spec or otherwise, because not everybody is aware of everything. And then two Zipkin-specific questions. Is there a hosted managed SAS version at all of this? There was like New Relic plugins, things like that. So two questions there. So Zipkin was originally inspired by a Google technology called Dapper, which is now called Census. And the hosted service of that is called Stackdriver. There is actually a proxy that you can send to Zipkin apps data to Stackdriver. And it's actually a free service. And there's also others that are accepting Zipkin data too. If you have existing monitoring agents, I would say that it's kind of a moral work in progress for those to send to a private Zipkin install. And in fact, I'm going next to Linz to talk with Dynatrace who are working on something like that so that their stuff can actually report into Zipkin system. So just keep an eye out. There's a few more questions, but Adrian will be on Slack afterwards to answer them. I'm sure. Let's give you a round of applause. Thank you. Thank you.