Skip to content

Instantly share code, notes, and snippets.

@etagwerker
Created September 14, 2022 17:49
Show Gist options
  • Save etagwerker/bf4bac5e62979fe03cc525de82e75090 to your computer and use it in GitHub Desktop.
Save etagwerker/bf4bac5e62979fe03cc525de82e75090 to your computer and use it in GitHub Desktop.
asrOutput.json
This file has been truncated, but you can view the full file.
{
"jobName": "Mike-Toppa-Legacy-Code-Rocks-LCR_Michael_Toppa_Audio_MASTER.mp3",
"accountId": "015078986747",
"results": {
"transcripts": [{
"transcript": "Welcome to Legacy Code rocks the podcast that explores the world of modernizing existing software applications. I'm your host scott ford. This show is about to change the way you think about legacy code, if you like a lot of people, when you hear the phrase legacy code, it conjures up images of big mainframes in our kick punch card machines. Well that's true. It only tells a small part of the story. Anything that someone else has left behind is their legacy. This episode is sponsored by Corgi bites. Cory bites helps companies make their existing custom software systems more stable, scalable and secure. Corey bite specializes in upgrades, bug fixes, performance enhancements and other maintenance activities designed to help tech companies generate revenue, lower operating costs and reduce risk. And today on the podcast we have mike, Topa. Mike is a senior engineering manager at fast ruby dot io and he's been developing web applications since the days when the first html pages were painted on cave walls. Over the past 25 years. He's worked in various roles from developer to product owner to director from many different organizations such as act Blue, the University of pennsylvania stanford University, Askjeeves E Trade and others. Mike is passionate about helping teams improve and has led agile transitions outside of work. You're likely to find him tearing down yet another wall in his house mike, Welcome to the show. Thanks. It's a pleasure to be here. Yeah, it's nice to have somebody else from the fast ruby IO team on. So because we had Ernesto on a while back. Yeah, a couple of years ago he was on, Yeah, yeah, great. So today, let's chat a little bit about what agile practices makes sense when you're working on legacy code, especially like when you're working as a small team on legacy code, some kind of kick that off to you as the first question, like what does agile look like when viewed through that lens? Sure, that's a great question. Um, so just to give a little history there before I answer the question directly. Um, so I was first introduced to sort of actual practices and scrum back in about 2008, so it was definitely sort of a well established way of doing things at that point, but it wasn't quite fully mainstream in terms of like, oh, that's what everyone is doing or not, everyone knew what it was at that point. Um, I lead an agile transition with my team at the school of Medicine at the University of pennsylvania, but I've done that sort of transition a couple times since that other organizations and most of the places I've worked over the years have been like not just small engineering teams, but small engineering organizations, like the whole engineering organizations, maybe 15 people or smallest too, even at a startup, I was at a long time ago. Um, so, you know, I got really excited about agile practices when I had my first management job because I was thinking, oh my God, how am I going to do this? So it's like nice to have some, some guidance and some sort of framework that was something other than a waterfall and you know, I found, you know, the agile literature, I think most of what drove the sort of creation of agile practices were from the experiences of engineering teams working in, you know, enterprise organizations, you know, large long term projects. So some of the practices can be harder to adopt to like smaller teams working on really small or short term projects. So just to give you an example of a consulting company, I was at maybe seven or eight years ago, we're like, okay, like let's try to do some of these agile practices and we're like, okay, we'll say this group of five or six people as a team, but they're each working on a separate project. So like what does it mean to like talk about what you're working on the stand up when it's not necessarily relevant to the person standing next to you and at fast ruby io where we um, you know, specialize in rails, upgrades. You know, engagements can be as short as a couple of months with maybe two engineers working on a project and then after that they're on to another project. So I think really, so finally sort of answer your question with that as sort of some context. I think what's really key is understanding sort of the values and the principles that are behind the actual actual practices and have that sort of help guide you and and how you approach your work. Um So what I mean is that by that is you know some of the core concepts uh so like uh one of my favorite ones is sort of correct alignment of authority and responsibility which basically means like not being held responsible for things you don't have authority over um which is sort of a classic dysfunction and a lot of organizations. So another way to say that is uh you know empowering your team because to me what really the sort of if I could boil it down to sort of a core concept that I've taken away from you know agile practices is the idea of trust, you know and that's often the hardest thing for leadership to really do, to say okay like I'm not gonna just tell you what to do, I'm gonna give you some goals, give you some guidelines and then trust you to do your job well um without me micromanaging you and I think that's often the biggest hurdle for leaders to get over, you know, but I have found it really pays dividends because when people feel a sense of empowerment over their work they feel a sense of ownership with that work and that's really, you know a key driver of motivation and people feeling successful in their job. Yeah I had I had submitted a conference talk idea to the Nationals Agile conference, Gosh, this would have been like 2007, Uh and it was like two successive years in a row. I submitted a talk to talk about agile for micro teams and you know, thinking like, you know, what would agile practices look like if you're a solo developer, what would they look like if it's just to And the feedback I got from the submission system was, you know, I thought I found that I found the feedback that I received through the submission system really frustrating because like one of the people responded like with disbelief that anybody could possibly get anything done with that few number of people. And, and so like it kind of pointed out to me like, like, well this isn't the audience that's interested in this in this problem, but it's it's definitely something that's that's interested interested me as well as like, you know, there's there's been so much conversation over the years for like how to scale agile up, you know, how to, how to make make those practices work for more and more and more people. And yeah, I was curious about what it looks like if you shrunk it down and what does it, what does it look like to shrink it down to just a solo person or two people or three people. Yeah, so I can address that a little bit more and just, you know, to your comment about the talk submission you gave, I think, you know, as agile has become so mainstream and I think really become sort of dominant, you know, what comes along with that is the cottage industry of consultants, you know, who, you know, agile coaches and I've worked with some excellent ones. Um, so we've had, we've had many excellent ones on the show too. Yeah, so I want to be careful on how I frame this. But I think part of the issue maybe in terms of that gap that you're finding is that's just not where the consulting money is. You know, the small organizations typically can't pay an actual coach, you know, write large checks to have someone come in for weeks or months. So I think that may be a reason, it's somewhat sort of unaddressed in the, in the marketplace, but you know, in terms of like teams of one or two people, I'll go back to a startup. I was at back in 2012, was called elect next. It was sort of organization for helping people become politically informed and engaged. Um, yeah, and it was when I joined, it was seven people overall and the engineering team was too, it was me and the CTL. Um, And, you know, I'd come from working with my team at Penn, which was like, you know, 15 or 16 people, so this was much smaller even than that. And, you know, I looked at how things were going because the organ, you know, the the product already existed and the team was already working on it at that point. Um, so I was coming into sort of an existing situation and I looked at what we were doing and I was like, well, you know, we could definitely use agile practices here, but not like the full suite, so to speak. You know, like we didn't have, does it make sense to have a scrum master with two people, you know, probably not, you know, and uh, we worked in sprints, we worked in like one week sprints, me and the C. T. O. Met once a week to sort of put together our stories, what we're gonna work on for this week. We estimated them, we actually started with, uh, you know, allowing some, like bigger stories to get into the sprint. We found pretty quickly they could blow up our sprint because they were risky. So we made sure to start sort of breaking the stories down smaller, you know, lower the risk on each sprint. So we worked in these one week cycles and engineering for our sprints and then the overall organization had a one month planning cycle. Um, so we sort of lay out goals for the month, but then every week update that plan. So it's like a rolling month schedule. And uh, that worked really well. I coached the engine, the, sorry, the sales and marketing team and even the CTO to do more of a con bond style, which suited what they were doing. So like the whole organization was like on a sort of agile sort of a pared down sort of agile workflow. Yeah. And it worked really well and, and so I'm curious like, have you seen other agile practices that you think that work really well when you're dealing with an older code base and then kind of on the flip side or are there some magical practices that you feel don't work so great when you're working on an older code base? So yeah, I think uh really key to working with older code code code bases, uh, like we work with it fast ruby. I oh, you know, we do a lot of rails, upgrades for projects that are often 10 plus years old, you know, uh I haven't had a lot of development or even maintenance that your test suite is crucial. So I mean that of course that's like everyone says it's always important. But with legacy code, it's, it's make or break and I would say probably especially for an upgrade effort. Yeah. So when we have a prospective client, our very first question is, what's your test coverage? Because if the test coverage is really low, um, that makes the upgrade a lot riskier because we, you know, especially with the larger complex application, you know, Well we're, we have expertise on the rails upgrade process. We're not experts on their business domains. So we really rely on that test coverage to let us know as we work through the upgrade. Are we introducing breaking changes And for me it's kind of in my mind helped settle a question that, that I've kind of struggled with a long time around test design, which is always this question of like how much do you rely on like mocks and stubs? Like when you're unit testing versus like sort of letting the code be fully exercised. And from the perspective of doing upgrades, the mocking and stubbing is actually a real problem because we want to know that the, you know, the this method calling that method calling that method, that, that entire code stream is working. And if you've got that fully covered, like in your integration tests, your feature test great. But often, you know, that's not the case. You know, there's often, you know, significant amount of coverage with unit tests and lesser coverage with the, with with the future tests, which is what people are often advised to do right with sort of a test. Yeah, that's like the test pyramid. Yeah. So from the perspective, at least of doing upgrades, the more that test suite is actually exercising the full code base the better because it increases our confidence that as we work through the upgrade, we're not, we're not breaking something without realizing it. It's interesting because the logic that you need to the business, I would expect to be kind of in those unit tests. Yeah. You know, I wouldn't expect the version of rails to matter all that much for for a lot of that unless it's, you know, it's living inside of a rails model and dealing with, you know, things are implemented with, you know, callbacks and you know, lifetime, you know, like model lifetime hooks and things like that. Yeah, I mean there's often just, you know, especially going back to older versions of rails, you know, changes to how active record queries work. So it's like you're stubbing out your active record calls, you know, we won't know if it broke, you know, um, and so, you know, they're always debates around testing strategies, especially with rails and I think they're really good debates and I've learned a lot from them over the years, but you know, again, at least from the perspective of like minimizing the risk of an upgrade, having that, having tests that really exercise as much of the code as possible is a key for having confidence that the upgrade is gonna gonna go smoothly and when you all find a project that, you know, doesn't have enough coverage for you to feel comfortable, what do you do in that case. Yeah. So, uh, we typically will offer the client a couple options. One is to first work with them on increasing that test coverage. So we want them to help us identify like what are the critical code paths. So we can make sure that at least you know the most important areas of business logic have good test coverage. And then um the other option is you know to uh rely on the client to help us with manual QA and that can be risky from a business perspective because you know when you're negotiating you know sort of the scope of the project and everything, the client will sometimes say oh of course like we will totally help you with Q. A. And then you start working on the project and it's like oh they've got some other business priorities have to attend to and We end up lower on the list and then we can get stalled. Like not having that help with QA because again they're they're the experts on their business domain. If we don't have the test coverage then we need their Q18 to tell us like you know that the upgrade is you know whether it's introducing any problems or not. Yeah. So testing definitely definitely important. And it sounds like you know, you're your work is impacted by choices that were made in the past as well. Right? So like the practices that the previous team followed or maybe the current team, maybe you're helping with the upgrade for something that's you you alongside another dev team that's that's working on it. But you know the the choices that they've made in the past, you know, definitely affects your ability to be effective. Absolutely. And one of the things that I've learned over the years, you know, prior to working at fast ruby IO as well is the practice of empathy for, you know, the developers of the past who, who wrote this code, you know, when you think about, you know, any decisions you make in life or at work like anything you do, it's like, well it seemed like a good idea at the time. Right? So um you know, people are, you know using the design patterns that they're that they know about that they, you know, think are good solutions to the problem and as people who are coming on to the project, you know, potentially years later after those people are gone, we don't know what kind of deadline pressure they were under or other circumstances that make you look at the code and say, what were they thinking, you know? So I think that empathy is always important, you know, when, when dealing with with older code. Yeah, yeah, I know that. Um Andre gill who hosts the show, co host the show with me from, you know, from time to time. Uh she's working on a book empathy driven software development. Uh and and so yeah, so empathy is uh you know often top of mind for conversations that she and I have about about software and and how to how to how to approach, you know, the craft of thinking about the other person who's going to come along later in and you know, while while you're, while you're doing your work and then also reflecting back on the people who came before and, and Yeah, I have an empathy for for all of those audiences. It's it's definitely a skill, that skill that can be nurtured and grown. Yeah. And you can find more information about that book at empathy and tech dot com. Alright, well, that was a perfect segue to plug in the book. Yeah. Thanks, appreciate it. Sure. Yes. So I'm, I'm curious like, are there other technical practices that you feel have a big impact on, on your work? It sounds like, you know, testing is probably the technical practice that has the biggest impact. Uh, you know, are there are there others that, that you really, really value when you're doing one of these upgrade projects? Um so often the answer to that question is mm I think more about the engineering practices of the people who wrote the code base for as the, from the perspective of us doing the upgrade the code base kind of is what it is. You know, that's been that's been given to us and, you know, we try to take as conservative of an approach as possible when working on a client's code base? We don't want to come in and say, oh, like let's re factor all this and move all this code around because we're just introducing risk, you know? Um at that point we want to basically change as little as possible, have a smaller footprint as possible in the code in order to minimize potentially breaking things as we work through the upgrade. So we can really separate the idea of this is the work we're doing for the upgrade from any other work that might have to do with re factoring or new features or whatever. We try to keep those code changes and conversations really separate from each other. So um maybe a different way to kind of come at the at the question of of the technical practices. It's it's not really so much a particular practice but it's more of a philosophy of being really methodical. Your attention to detail is always crucial when writing code, but when you're, when you're working through an upgrade, it's extremely important. So to give you an example, like some projects from one of the projects we've worked on, you know, old code base, like upgrading from rails 32 rails four. So you know, it's big, it's complicated and then there's a lot of logic that's been separated out into like a dozen different internal gems that are themselves fairly large. Code bases um and themselves have like direct sort of dependencies on rails. So like in terms of being methodical, like what's the right way to approach this, Like how do you break it down. So like we start with the smallest pieces. So we start with the the gems that don't depend on anything else, you know, their internal custom gems. And then we work our way up to the custom gems that depend on other custom gems and then we work our way up to the rails, application itself. So starting with those smaller building blocks and working our way up to the bigger, more complex set of relationships in the code. So and in the process of doing that, you know, you can find, you know, it's often a little comment, someone put in the code somewhere that explains the problem you were working on. Um, so just sort of always keeping your eyes open, you know, I almost think of it as like, you know, sort of a hunter in the woods, you know, and you're like listening for every twig that might snap or bird call or whatever, like okay, what's going on? Like you gotta keep my eyes open. You know, you never know what you might see that's relevant to the thing you're trying to track down, which is, you know, sometimes those mental images are kind of a helpful way to sort of make it fun. Yeah. Yeah. I can also imagine that you all become experts at just getting a dev environment up and running for, you know, a 10 year old project. Yeah. And and to me that's also like, so when I I'll say something about that in a second, but just to give some context to it when I was 12 years old. So I'm gonna date myself here. So 1982, I got a commodore 64 loved it and I used it all the way through college, you know, everyone by then was on macs or pcs, I was still sticking with my commodore and I kept it as a high, I don't really do anything with it anymore, but for a long time, up until maybe 10 years ago, I would still fool around with it. And there are, you know, sort of hobbyists out there who, like, we're still making hardware for it. So there was like a plug in cartridge that would go on the expansion ports that like gave you uh let let you plug an ethernet cable into your commodore. So you could like put it on a network, because I was saying, how am I going to get all my old, you know, all the college papers I wrote that are on these floppy disks that are compatible with anything, like how can I get them off? So it was like a fun sort of project. So the reason I'm talking about that is um, you know, often what we do has a similar feel to it. So there was another project we've been working on recently, um it was really old rails too and it was sort of a project that came to this company through acquisition had live customers on it, but the developers there themselves, like didn't even know how to get it going in a development environment, was just kind of sitting out there in production. So I was like, well, you know, I've got my son's old Windows laptop from 2014 and I can put, because it's running, you know, a boon to 14, you know, this uh, E O L end of life version of A two because when you're dealing with something that old, like you need, you can run it and we were trying to figure out how to get it going in Docker, which is a whole other complicated story. So I thought, well, like let's try to get it running an environment, it was just designed for, and to me that's, that's fun, you know, taking old things and like trying to breathe new life into them, you know, get them working again. Yeah. And, and, and you know, like while you don't have to stay there, you know, getting it, working on its current, its current versions is definitely important. Important step. Exactly, yeah. So the idea ultimately is like get this working in docker then we can start upgrading it, you know, bring it into the um, if not to the present at least two somewhere in the past 10 years, you know, with with rails versions and ruby versions. Yeah, and, and even that can be challenging because like, you know, the, you know, are those old packages still available like, you know, are, you know our because I know like, you know, having done some rails work in the past, like something that would always frustrate me would be like, well no, Kawajiri compile on this Mac. Yes, yes, Yes. We actually, I was surprised actually went quite smoothly on the older hardware. The thing that I ran into there was a big problem that I didn't anticipate at all was that docker has changed a lot in the last 10 years and I couldn't really run newer versions of Docker on the older system to get it. Dockerized the way I wanted to. So yeah, sometimes the problem you run into problems you run into aren't the ones you were expecting, I was expecting that. No Calgary problem and didn't have it, but I ended up with this other other challenge to figure out, you know? Yeah, yeah, it was like for, you know, older versions of ruby, if the Gcc version is too new, it won't, it won't compile and and things like that. So you end up with these like, you know, interesting, you know, these interesting dependency is where, you know, it's, you know, I don't think the ruby project necessarily identifies the Gcc version as a dependency or they might have but but you know, you did hit a point where, you know, Gcc became, you know, drop support for for stuff and then and then the, you know, where things don't build and so you end up having to like get an older compiler toolchain put together and things like that, so yeah, and you can run into, you know, just a myriad set of complications trying to run older code on a newer system, similar kind of challenge we had when I was in fact blue actually, that's another sort of good legacy code topic that that blue rails project goes back to like 2004, um and it's, you know, live, it's all updated, you know, it's live and it's current and, you know, on on modern rails, but yeah, when I was there, which was, I guess 66 or so years ago now, about half the developers were having all kinds of problems and it was really hard to track it down and it was like a minor version difference on open ssl you know, on our machines that was causing the problem, you know, so you can all kinds of little things that can go wrong that are sometimes hard to track down. There's a Docker image that the Corgi White's team maintains for an older older ruby project. I'm trying to find it Yeah, around the time I was leaving, I should mention for the time I was leaving, they were everything was getting Dockerized. So nice. Yeah, and like, I think doctor has been a great tool to kind of be kind of introduced to the toolbox because it it helps take that read me file with all the steps and things that you would have needed to, you know, it had everything been clearly documented in detail, you know, it would have been that read me file of like run this command, this commander in this command and now you have that, you know, written as as an executable file and you know, and sometimes it doesn't work, but it's at least a least a starting point for Okay, well this probably worked in the past, so then what's changed in the ecosystem that's kept this from working? Yeah. And and just just when you think you've solved that issue, like I do, a new challenge comes along. So like at earlier this year, uh, me and Ernesto and luciano from fast ruby Io we did a workshop on like upgrading rails. So we found an open source project to do the workshop with and you know, stuck with something pretty simple for the purposes of a of a workshop, you know, that's only a couple of hours and we realized preparing for the workshop, like Anyone who's using a Mac M1 is gonna have a problem, like because even with Docker, you know, the performance was just horrible translating across the different chip architectures. So, you know, we we planned for, we we ended up rebuilding the Docker image for the Mac M one, so local Geary was already compiled and ready to go. So like if you're on an M one, use this image if you're not on the M one like use this. So they're always uh, you know, every advance in the technology seems to introduce, you know, new complications for anything that's sometimes not even that old, you know? Yeah, I found that I found the Docker image, it's a it's a ruby 193 Docker image because it was, we found it particularly challenging to get ruby 193 to build, especially on, you know, newer machines. So getting, getting that, that version and uh, so yeah, it helps to have, you know, that, that that tool. But yeah, and then the, the M one, uh, you know, that that chip architecture difference is, you know, like that's something that I'm kind of glad it hasn't become problematic yet, but I'm I'm nervous about a bug existing in production and it not running, you know, that that bug not being reproducible on my local environment because of the chip architecture difference. Yeah, I haven't seen that particular issue yet, but I may be out there. I haven't either. I'm glad it hasn't manifested, but it's something that I've I've been nervous about just because yeah, that's something that I that I've always strived for on teams is to try to get the local environment to be as close to production as possible and now there's this process of architecture difference and it's like, you know, it's even introduced a problem for us when we're hiring because we have developers who joined us the laptop and it's like normally of course like give them the latest best computer, but it's like, well it actually might make their job harder, you know, working, working with older code bases. So then you say, well, you know, get them a pc and they can run Linux, but then, you know, it's pretty typical on upgrades that we do that. The read me assumes you're running, you know, on a Mac with homebrew and everything and you can still do it on Linux, but you've got to kind of figure some parts out for yourself. So yeah, sometimes, you know, for us it's introducing questions that aren't anything, answers aren't obvious, you know? Yeah. And then like, you know, virtualizing old versions of Mac os is, you know, that's that's challenging as well and that's not, you know, you still run in the process of architectural problems. So yeah, it's almost like, do you get an older and older intel Mac and, and kind of keep it alive, just, just, just, just to make that less frustrating. So I'm curious about like, you know, other challenges that, that you all run into. So uh, you know, you talked about, you know, kind of starting with the simple stuff and and working your way up, I can imagine third party packages, you know, that aren't necessarily rails and art ruby but are kind of members of that ecosystem. Imagine imagine there's some headaches that that pop up from time to time for you all sure you already mentioned one of them like theory, you know, anything that's, that's compiling local extensions, you know, those can be problematic. Um and again, like Docker has been very helpful with with solving those issues so we can create an environment, you know, for doing that upgrade without messing with the developers, you know, uh you know, the regular sort of more modern libraries that are on that developers computer. Um so yeah, I think that's that's probably the biggest one um that comes to mind but maybe if I can take the opportunity to sort of pivot to a non technical sort of related thing um which is I think the importance of, of professionalism especially when dealing with, you know, like we do a fast ruby io dealing with clients, external clients, but it's just as important really, you know, for, you know, even if you're on just a regular, you know, product development team with internal clients. So what I mean by that is um the importance of speaking up and being honest with people, you know, um I feel like in my career like that's sort of sort of the biggest area dysfunction you just see over and over again in organizations is, you know, from the business side there's always pressure do more, do it faster with fewer people maybe, you know? Um and uh and the developers like, okay, I have to cut corners, I have to skip writing tests or I have to write spaghetti code, like get this done, you know, so I'm 52 years old, so I can say, you know, I've been around the block a few times and once you see these things over and over again, it's like, no, just like you're digging the hole deeper and this is just gonna make the next thing you have to do even harder. And uh there's a good uh forward in the book, the clean coder. The forward was written by Matthew might mispronounce his last name how sir, and he talks about the development team that's in this situation, you know, got to meet this deadline, push, push, push, working nights and weekends, you know, that kind of thing. And then like the team does it like they're ready, you know? And the manager comes back and says, oh, you know, we can't go live and seems like why can't we go live? Like, well the lawyers need more time to review stuff and it's like, oh the lawyers, of course lawyers, they get all the time, they need, you know, got to make sure the lawyers do their job properly and he was a developer on that team and he's like, well why not? The developers like, you know, and uh really, the point of that is when you think of professions like lawyers and doctors part of their training isn't just learning the law and learning medicine. It's like how to behave, how to behave with your clients, how to behave with your patients, you know, bringing that air of, of, of professionalism and competence to how you communicate, um, and how you relate to people. And I feel like that's something that's really important for software engineers to learn how to do to, you know, you're always dealing with your manager, you're dealing with clients. And um, when I first started putting my toe in the water of like, I should say something about this, you know, and I think maybe maybe I was lucky early on and just saying, hey, you know, like we really need another week or whatever, you know? Um, and this is why I got the response like, okay, I was like, oh, like I said it and like they, like, they're glad I told them there was an issue and like they're going to give me more time. Sometimes you just have to say it, you know, and often people are even afraid to speak up Of course, it's always not that easy. Sometimes you speak up and you get pushback anyway, but in those cases, I think it's still really important to communicate the trade offs of the business people because they're, they're in the, you know, their job is to make money and they need to, you know, help the company make money so you can get your salary and all of that. But it's important for them to understand the costs and the benefits and the risks and rewards. So you can say like we can do this, we can rush, we're not going to have the test coverage, We could launch it and it could break because what I found, you know, learning things the hard way in life if you don't speak up, you know, and then something goes wrong, it comes back to you because people say, well this broke, Why didn't you do a good job? And then, and then it's kind of too late to say, well, you didn't give me the time to do a good job, you know, right? Or it was too risky or like that. It's after the fact that opportunities left. Yeah. So, um, you know, always making the business people who are working with aware of the risks of these decisions that, you know, I have to do with how many people can we put on it or how much time do we have? Or what's the scope, you know, those classic set of questions, um, that drive every project, like to try not to be shy about communicating the risks that you see because you're the one who's close to the code, you know the business people don't know the intricacies of the code that you're trying to write. That's, that's what you know, and you should be able to tell them the opportunities and the and the risk that you see and what you're being asked to do and and having to build trust, right? So like, they need to be able to trust you and trust that you're being that, you know, your trust that you're looking out for them and trust that you're not just, you know, trying to milk them for more money or you know, you know, or trust that you're not incompetent, right? Like, you know what you're doing and you know, so just relating that to recent experience working with a client, you know, even just the past couple of months of like looking at this old code base and seeing all these challenges, like how long it's gonna take should we consider rewriting versus upgrade? Because it's so old. And like, I've tried to be very clear with the client, you know, and I'm like, oh, like they're not gonna want to work, you know, that, that uh you know, what do you call it, sort of the imposter syndrome voice that, you know, everybody has. And I'm always hearing that in the back of my mind, like, I think most people are there and I'm thinking, oh, they're not gonna want to work with us, they're gonna be mad. You know, I'm giving them this bad news, you know, there's all these problems and it's gonna take a long time and cost them a lot of money and the response has just been there, like can you put more people on it. Can we give you more money? Like they will, they want to get it done and I think they appreciate that, you know, I'm being really clear and you know, me and the rest of the team speaking confidently about the technical challenges involved, why we think that, you know, this is why it's going to take longer. These are, these are the problem areas and so we're building their confidence that we know what we're doing and you know, they're willing to keep working with us. Yeah. Rewrite or fix is something that comes up a lot when working with older, older systems, where do you fall kind of on that issue? And and how do you decide the answer to that question? Can I say? It depends what, I don't think there's like one true answer, like, you know, it's always this or it's always that. Um and I think often it's a really hard question and in my experience and just, you know what I've learned talking with other developers is, you know, often with a really large complicated project and if it's really old or the code is really messy, it's kind of a gamble either way, like there's no, like guaranteed, oh, like the rewrite is, you know, you know, guaranteed to work out better than the than, you know, doing the just the regular upgrade or the re factor I think in general, you know, my my general disposition is to lean to the side of keeping the code that you have and re factoring or added adding test coverage. And the reason for that is there is often a great deal of embedded wisdom in the code that is kind of uh silent. And what I mean by that is, you know, somebody made a commit years ago that solved some certain problem. There's no comment on the code, you know, maybe the message doesn't commit message doesn't say a whole lot about it, but if you're gonna rewrite and just sort of start from okay, like a list of business requirements and extracting some methods or whatever, like there's stuff you're gonna miss, you know, and things that you don't even know were there that are helping keep this thing alive. So, you know, positive way, I try to think about legacy code is like, um just that it's still here, it's still here, it's still works, it may be messy, it may have problems, but it's working and it's serving our customers or our clients or whoever is using it and it's battle tested in that way, and you know, so like I was saying, you may miss things with a rewrite and then there's like the classic problem of like, okay, we're doing the rewrite and it's gonna take six months or now it's going to take a year and we need to add new features. So now you've got the parallel development going of people still having to work on the old one and work on the new one and you can often end up with like having to rewrite the rewrite, you know? Um So I do feel like the rewrite is often, I guess the riskier approach, but I think like think of some of the projects we were looking at currently at fast ruby, you know, it's like, well maybe the rewrite is the right thing to do because like this is rails to, we want to eventually get up to rails seven, each version jump like there's work to do on each version, jump things and rails change, you know, the routing completely changed between rails two and three, there are always changes, so like how active record works, like there's gonna be a lot of investment to take it through all those version jumps. So, and there's also just a lot of us learning, how does this thing even work, you know? Um So, you know, often if it's something that's like that old, maybe the rewrite is the more efficient way to go, you know? So yeah, it depends I guess is my short answer, but leaning towards sticking with the, with the re factor or you know, upgrading the existing system. Uh Yeah, so I know, I know from chatting with Ernesto, if I'm remembering correctly that, you know, you all take the approach of, you know, upgrading one version at a time when might you consider just jumping straight to the latest and and and then trying to trying to make that work. Yeah, honestly, really just with the most recent versions jumping from like, like version five to version six and maybe skipping minor versions in between like I think as rails has has evolved and you know, I think everyone involved with maintaining rails, You know, help make the system better and better over time that the pain, the level of pain and those version jumps I think has gone down, you know, with the more recent versions, but I really wouldn't skip it on earlier ones. For example, there's another one we're doing right now and we're doing a series of version jumps and right now we're on 40241 and you're like, oh, minor version jump, probably not a big deal. It's like, well yeah, not that one. Um Yeah, like spending an enormous amount of time going through all these active record queries because like the implicit joints went away, you know? So it's like we have to look at like every query and like understand it and figure out the right way to rewrite it. So I really wouldn't want to get multiple minor versions there because then you just start compounding the number of things that can go wrong, you know? So it's better to try to do one minor version jump at a time. Yeah, the with the older ones. Yeah. Strong parameters switch was another one that I remember being very challenging as well. I forget which two versions that is, but that was a minor version as well. Yeah. Yeah. Often for those, we end up putting them on, Oh gosh, I'm blanking on the name of it. But there's a gem that sort of continued letting you do things the old way, you know, with like outer accessible. Because often the rewrite of that is so significant. It's like, well, why don't we support continue to do with your older code here and then like your team can maybe work on that piece of it later or you can pay us to come back and do that part at a later point. Yeah. Those are fun challenges. Yeah. But yeah, you don't have those workarounds with things like Active record queries, awesome. I, I've really enjoyed the time that we've, we've had chatting together. Um, one of the last things we'd like to ask everybody on the show is, you know, what do you love about legacy code? Because we're trying to change people's attitudes and, and, and change people's minds. That legacy code isn't a bad thing. So what is it, what is it you love about it? Yeah, I think I'll maybe come back to a couple of things I mentioned already. Um, one is the wisdom of the code that's in there. It's often that wisdom, you can't see, but it's in there, it's that there's an application that's alive and working and has to the test of time and maybe it's has some, some warts are rough around the edges, but you know, it still deserves your love. Um That would be one thing and then the other and this is something that you know, can can sort of vary from person to person depending on like uh you know what you find engaging. But for me it's like it's there's there's a certain element of fun and just taking stuff that's old and like breathing new life into it and you know, sort of moving it up to work with, you know, more modern versions of rails or whatever, you know, sort of environment you're working in. Yeah. Yeah, I like that too. Like just the preserving, preserving the work that somebody else has done and and making it last longer. Awesome. Well, thanks mike, thanks for taking the time to chat. If people wanted to get in touch with you to ask you ask you more questions or uh maybe you know, hire fast ruby to help them out on their rails, upgrade project. What's the best way to get in touch? Yeah, for me personally, uh easiest way is probably like a message on twitter, I'm m topa M. T. O. P. P. A. Um And then for fast ruby we have a contact form on our website so if you go too fast review dot io the contact form is there and you can reach out to us. Awesome. Thanks thanks a bunch for that. Um, and then for people who are listening, if you'd like to have conversations with other people who listen to the show, you can head over to slack legacy code dot rocks and join the slack workspace and chat with other people who are part of the legacy, Good rocks community and, and chat about what you've heard on the show or other ideas or challenges that you might have on a project that you're working on. You can also attend our weekly virtual meetups. Uh, they meet one p.m. eastern on Wednesdays. And yeah, it's uh, it could be a great, great place to hang out with other folks who are also wrestling with with older code bases. So thanks a bunch for listening and we'll see you in the next episode."
}],
"speaker_labels": {
"channel_label": "ch_0",
"speakers": 2,
"segments": [{
"start_time": "5.74",
"speaker_label": "spk_0",
"end_time": "28.54",
"items": [{
"start_time": "5.74",
"speaker_label": "spk_0",
"end_time": "6.4"
}, {
"start_time": "6.4",
"speaker_label": "spk_0",
"end_time": "6.46"
}, {
"start_time": "6.46",
"speaker_label": "spk_0",
"end_time": "6.79"
}, {
"start_time": "6.79",
"speaker_label": "spk_0",
"end_time": "6.98"
}, {
"start_time": "6.98",
"speaker_label": "spk_0",
"end_time": "7.4"
}, {
"start_time": "7.4",
"speaker_label": "spk_0",
"end_time": "7.52"
}, {
"start_time": "7.52",
"speaker_label": "spk_0",
"end_time": "8.08"
}, {
"start_time": "8.08",
"speaker_label": "spk_0",
"end_time": "8.17"
}, {
"start_time": "8.17",
"speaker_label": "spk_0",
"end_time": "8.6"
}, {
"start_time": "8.6",
"speaker_label": "spk_0",
"end_time": "8.68"
}, {
"start_time": "8.68",
"speaker_label": "spk_0",
"end_time": "8.88"
}, {
"start_time": "8.88",
"speaker_label": "spk_0",
"end_time": "8.98"
}, {
"start_time": "8.98",
"speaker_label": "spk_0",
"end_time": "9.6"
}, {
"start_time": "9.6",
"speaker_label": "spk_0",
"end_time": "10.07"
}, {
"start_time": "10.07",
"speaker_label": "spk_0",
"end_time": "10.38"
}, {
"start_time": "10.38",
"speaker_label": "spk_0",
"end_time": "11.12"
}, {
"start_time": "11.13",
"speaker_label": "spk_0",
"end_time": "11.43"
}, {
"start_time": "11.43",
"speaker_label": "spk_0",
"end_time": "11.55"
}, {
"start_time": "11.55",
"speaker_label": "spk_0",
"end_time": "11.88"
}, {
"start_time": "11.88",
"speaker_label": "spk_0",
"end_time": "12.16"
}, {
"start_time": "12.16",
"speaker_label": "spk_0",
"end_time": "12.61"
}, {
"start_time": "12.62",
"speaker_label": "spk_0",
"end_time": "13.01"
}, {
"start_time": "13.01",
"speaker_label": "spk_0",
"end_time": "13.29"
}, {
"start_time": "13.29",
"speaker_label": "spk_0",
"end_time": "13.39"
}, {
"start_time": "13.39",
"speaker_label": "spk_0",
"end_time": "13.5"
}, {
"start_time": "13.5",
"speaker_label": "spk_0",
"end_time": "13.59"
}, {
"start_time": "13.59",
"speaker_label": "spk_0",
"end_time": "13.85"
}, {
"start_time": "13.85",
"speaker_label": "spk_0",
"end_time": "13.94"
}, {
"start_time": "13.94",
"speaker_label": "spk_0",
"end_time": "14.24"
}, {
"start_time": "14.25",
"speaker_label": "spk_0",
"end_time": "14.45"
}, {
"start_time": "14.45",
"speaker_label": "spk_0",
"end_time": "14.67"
}, {
"start_time": "14.67",
"speaker_label": "spk_0",
"end_time": "14.86"
}, {
"start_time": "14.86",
"speaker_label": "spk_0",
"end_time": "15.17"
}, {
"start_time": "15.17",
"speaker_label": "spk_0",
"end_time": "15.73"
}, {
"start_time": "15.81",
"speaker_label": "spk_0",
"end_time": "16.34"
}, {
"start_time": "16.34",
"speaker_label": "spk_0",
"end_time": "16.42"
}, {
"start_time": "16.42",
"speaker_label": "spk_0",
"end_time": "16.58"
}, {
"start_time": "16.58",
"speaker_label": "spk_0",
"end_time": "16.63"
}, {
"start_time": "16.63",
"speaker_label": "spk_0",
"end_time": "16.76"
}, {
"start_time": "16.76",
"speaker_label": "spk_0",
"end_time": "16.82"
}, {
"start_time": "16.82",
"speaker_label": "spk_0",
"end_time": "17.22"
}, {
"start_time": "17.23",
"speaker_label": "spk_0",
"end_time": "17.47"
}, {
"start_time": "17.47",
"speaker_label": "spk_0",
"end_time": "17.53"
}, {
"start_time": "17.53",
"speaker_label": "spk_0",
"end_time": "17.64"
}, {
"start_time": "17.64",
"speaker_label": "spk_0",
"end_time": "17.74"
}, {
"start_time": "17.74",
"speaker_label": "spk_0",
"end_time": "18.12"
}, {
"start_time": "18.12",
"speaker_label": "spk_0",
"end_time": "18.5"
}, {
"start_time": "18.5",
"speaker_label": "spk_0",
"end_time": "18.91"
}, {
"start_time": "18.98",
"speaker_label": "spk_0",
"end_time": "19.27"
}, {
"start_time": "19.27",
"speaker_label": "spk_0",
"end_time": "19.56"
}, {
"start_time": "19.56",
"speaker_label": "spk_0",
"end_time": "19.66"
}, {
"start_time": "19.66",
"speaker_label": "spk_0",
"end_time": "20.01"
}, {
"start_time": "20.01",
"speaker_label": "spk_0",
"end_time": "20.11"
}, {
"start_time": "20.12",
"speaker_label": "spk_0",
"end_time": "20.35"
}, {
"start_time": "20.35",
"speaker_label": "spk_0",
"end_time": "20.89"
}, {
"start_time": "20.89",
"speaker_label": "spk_0",
"end_time": "20.97"
}, {
"start_time": "20.97",
"speaker_label": "spk_0",
"end_time": "21.06"
}, {
"start_time": "21.06",
"speaker_label": "spk_0",
"end_time": "21.32"
}, {
"start_time": "21.32",
"speaker_label": "spk_0",
"end_time": "21.54"
}, {
"start_time": "21.54",
"speaker_label": "spk_0",
"end_time": "21.7"
}, {
"start_time": "21.7",
"speaker_label": "spk_0",
"end_time": "22.24"
}, {
"start_time": "22.25",
"speaker_label": "spk_0",
"end_time": "22.65"
}, {
"start_time": "22.65",
"speaker_label": "spk_0",
"end_time": "22.83"
}, {
"start_time": "22.83",
"speaker_label": "spk_0",
"end_time": "23.35"
}, {
"start_time": "23.36",
"speaker_label": "spk_0",
"end_time": "23.52"
}, {
"start_time": "23.52",
"speaker_label": "spk_0",
"end_time": "23.7"
}, {
"start_time": "23.7",
"speaker_label": "spk_0",
"end_time": "24.0"
}, {
"start_time": "24.0",
"speaker_label": "spk_0",
"end_time": "24.06"
}, {
"start_time": "24.06",
"speaker_label": "spk_0",
"end_time": "24.36"
}, {
"start_time": "24.36",
"speaker_label": "spk_0",
"end_time": "24.54"
}, {
"start_time": "24.54",
"speaker_label": "spk_0",
"end_time": "24.6"
}, {
"start_time": "24.6",
"speaker_label": "spk_0",
"end_time": "24.68"
}, {
"start_time": "24.68",
"speaker_label": "spk_0",
"end_time": "25.27"
}, {
"start_time": "25.28",
"speaker_label": "spk_0",
"end_time": "26.1"
}, {
"start_time": "26.1",
"speaker_label": "spk_0",
"end_time": "26.25"
}, {
"start_time": "26.25",
"speaker_label": "spk_0",
"end_time": "26.44"
}, {
"start_time": "26.44",
"speaker_label": "spk_0",
"end_time": "26.65"
}, {
"start_time": "26.65",
"speaker_label": "spk_0",
"end_time": "26.78"
}, {
"start_time": "26.78",
"speaker_label": "spk_0",
"end_time": "26.96"
}, {
"start_time": "26.97",
"speaker_label": "spk_0",
"end_time": "27.48"
}, {
"start_time": "27.49",
"speaker_label": "spk_0",
"end_time": "27.72"
}, {
"start_time": "27.72",
"speaker_label": "spk_0",
"end_time": "27.91"
}, {
"start_time": "27.91",
"speaker_label": "spk_0",
"end_time": "28.54"
}]
}, {
"start_time": "29.12",
"speaker_label": "spk_0",
"end_time": "56.86",
"items": [{
"start_time": "29.12",
"speaker_label": "spk_0",
"end_time": "29.45"
}, {
"start_time": "29.45",
"speaker_label": "spk_0",
"end_time": "29.77"
}, {
"start_time": "29.77",
"speaker_label": "spk_0",
"end_time": "29.84"
}, {
"start_time": "29.84",
"speaker_label": "spk_0",
"end_time": "30.19"
}, {
"start_time": "30.19",
"speaker_label": "spk_0",
"end_time": "30.28"
}, {
"start_time": "30.28",
"speaker_label": "spk_0",
"end_time": "30.58"
}, {
"start_time": "30.58",
"speaker_label": "spk_0",
"end_time": "31.04"
}, {
"start_time": "31.05",
"speaker_label": "spk_0",
"end_time": "31.57"
}, {
"start_time": "31.57",
"speaker_label": "spk_0",
"end_time": "31.78"
}, {
"start_time": "31.78",
"speaker_label": "spk_0",
"end_time": "31.98"
}, {
"start_time": "31.98",
"speaker_label": "spk_0",
"end_time": "32.39"
}, {
"start_time": "32.39",
"speaker_label": "spk_0",
"end_time": "32.6"
}, {
"start_time": "32.6",
"speaker_label": "spk_0",
"end_time": "32.74"
}, {
"start_time": "32.74",
"speaker_label": "spk_0",
"end_time": "33.15"
}, {
"start_time": "33.15",
"speaker_label": "spk_0",
"end_time": "33.45"
}, {
"start_time": "33.45",
"speaker_label": "spk_0",
"end_time": "33.79"
}, {
"start_time": "33.79",
"speaker_label": "spk_0",
"end_time": "34.18"
}, {
"start_time": "34.18",
"speaker_label": "spk_0",
"end_time": "34.33"
}, {
"start_time": "34.33",
"speaker_label": "spk_0",
"end_time": "34.78"
}, {
"start_time": "34.78",
"speaker_label": "spk_0",
"end_time": "35.25"
}, {
"start_time": "35.25",
"speaker_label": "spk_0",
"end_time": "35.39"
}, {
"start_time": "35.39",
"speaker_label": "spk_0",
"end_time": "36.02"
}, {
"start_time": "36.03",
"speaker_label": "spk_0",
"end_time": "36.49"
}, {
"start_time": "36.49",
"speaker_label": "spk_0",
"end_time": "36.67"
}, {
"start_time": "36.67",
"speaker_label": "spk_0",
"end_time": "37.31"
}, {
"start_time": "37.31",
"speaker_label": "spk_0",
"end_time": "37.45"
}, {
"start_time": "37.45",
"speaker_label": "spk_0",
"end_time": "37.92"
}, {
"start_time": "37.92",
"speaker_label": "spk_0",
"end_time": "38.17"
}, {
"start_time": "38.17",
"speaker_label": "spk_0",
"end_time": "38.59"
}, {
"start_time": "38.59",
"speaker_label": "spk_0",
"end_time": "39.06"
}, {
"start_time": "39.06",
"speaker_label": "spk_0",
"end_time": "39.59"
}, {
"start_time": "39.59",
"speaker_label": "spk_0",
"end_time": "39.79"
}, {
"start_time": "39.79",
"speaker_label": "spk_0",
"end_time": "39.98"
}, {
"start_time": "39.98",
"speaker_label": "spk_0",
"end_time": "40.56"
}, {
"start_time": "40.56",
"speaker_label": "spk_0",
"end_time": "41.1"
}, {
"start_time": "41.1",
"speaker_label": "spk_0",
"end_time": "41.57"
}, {
"start_time": "41.57",
"speaker_label": "spk_0",
"end_time": "41.72"
}, {
"start_time": "41.72",
"speaker_label": "spk_0",
"end_time": "42.01"
}, {
"start_time": "42.01",
"speaker_label": "spk_0",
"end_time": "42.2"
}, {
"start_time": "42.2",
"speaker_label": "spk_0",
"end_time": "42.66"
}, {
"start_time": "42.66",
"speaker_label": "spk_0",
"end_time": "42.99"
}, {
"start_time": "43.0",
"speaker_label": "spk_0",
"end_time": "43.72"
}, {
"start_time": "43.73",
"speaker_label": "spk_0",
"end_time": "44.27"
}, {
"start_time": "44.27",
"speaker_label": "spk_0",
"end_time": "44.62"
}, {
"start_time": "44.62",
"speaker_label": "spk_0",
"end_time": "45.11"
}, {
"start_time": "45.11",
"speaker_label": "spk_0",
"end_time": "45.29"
}, {
"start_time": "45.29",
"speaker_label": "spk_0",
"end_time": "45.58"
}, {
"start_time": "45.58",
"speaker_label": "spk_0",
"end_time": "46.33"
}, {
"start_time": "46.52",
"speaker_label": "spk_0",
"end_time": "46.72"
}, {
"start_time": "46.72",
"speaker_label": "spk_0",
"end_time": "46.85"
}, {
"start_time": "46.85",
"speaker_label": "spk_0",
"end_time": "46.92"
}, {
"start_time": "46.92",
"speaker_label": "spk_0",
"end_time": "47.0"
}, {
"start_time": "47.0",
"speaker_label": "spk_0",
"end_time": "47.44"
}, {
"start_time": "47.44",
"speaker_label": "spk_0",
"end_time": "47.51"
}, {
"start_time": "47.51",
"speaker_label": "spk_0",
"end_time": "47.63"
}, {
"start_time": "47.63",
"speaker_label": "spk_0",
"end_time": "47.84"
}, {
"start_time": "47.84",
"speaker_label": "spk_0",
"end_time": "48.42"
}, {
"start_time": "48.43",
"speaker_label": "spk_0",
"end_time": "48.81"
}, {
"start_time": "48.81",
"speaker_label": "spk_0",
"end_time": "48.95"
}, {
"start_time": "48.95",
"speaker_label": "spk_0",
"end_time": "49.03"
}, {
"start_time": "49.03",
"speaker_label": "spk_0",
"end_time": "49.35"
}, {
"start_time": "49.35",
"speaker_label": "spk_0",
"end_time": "49.74"
}, {
"start_time": "49.74",
"speaker_label": "spk_0",
"end_time": "50.15"
}, {
"start_time": "50.15",
"speaker_label": "spk_0",
"end_time": "50.3"
}, {
"start_time": "50.3",
"speaker_label": "spk_0",
"end_time": "50.61"
}, {
"start_time": "50.61",
"speaker_label": "spk_0",
"end_time": "50.82"
}, {
"start_time": "50.82",
"speaker_label": "spk_0",
"end_time": "50.99"
}, {
"start_time": "50.99",
"speaker_label": "spk_0",
"end_time": "51.62"
}, {
"start_time": "51.68",
"speaker_label": "spk_0",
"end_time": "51.96"
}, {
"start_time": "51.96",
"speaker_label": "spk_0",
"end_time": "52.1"
}, {
"start_time": "52.1",
"speaker_label": "spk_0",
"end_time": "52.21"
}, {
"start_time": "52.21",
"speaker_label": "spk_0",
"end_time": "52.6"
}, {
"start_time": "52.6",
"speaker_label": "spk_0",
"end_time": "52.77"
}, {
"start_time": "52.77",
"speaker_label": "spk_0",
"end_time": "53.38"
}, {
"start_time": "53.38",
"speaker_label": "spk_0",
"end_time": "53.61"
}, {
"start_time": "53.61",
"speaker_label": "spk_0",
"end_time": "53.7"
}, {
"start_time": "53.7",
"speaker_label": "spk_0",
"end_time": "54.04"
}, {
"start_time": "54.04",
"speaker_label": "spk_0",
"end_time": "54.14"
}, {
"start_time": "54.14",
"speaker_label": "spk_0",
"end_time": "54.23"
}, {
"start_time": "54.23",
"speaker_label": "spk_0",
"end_time": "54.53"
}, {
"start_time": "54.54",
"speaker_label": "spk_0",
"end_time": "54.99"
}, {
"start_time": "54.99",
"speaker_label": "spk_0",
"end_time": "55.32"
}, {
"start_time": "55.32",
"speaker_label": "spk_0",
"end_time": "55.45"
}, {
"start_time": "55.45",
"speaker_label": "spk_0",
"end_time": "55.73"
}, {
"start_time": "55.73",
"speaker_label": "spk_0",
"end_time": "55.85"
}, {
"start_time": "55.85",
"speaker_label": "spk_0",
"end_time": "56.08"
}, {
"start_time": "56.08",
"speaker_label": "spk_0",
"end_time": "56.86"
}]
}, {
"start_time": "57.23",
"speaker_label": "spk_0",
"end_time": "79.56",
"items": [{
"start_time": "57.23",
"speaker_label": "spk_0",
"end_time": "57.66"
}, {
"start_time": "57.66",
"speaker_label": "spk_0",
"end_time": "57.75"
}, {
"start_time": "57.75",
"speaker_label": "spk_0",
"end_time": "58.03"
}, {
"start_time": "58.03",
"speaker_label": "spk_0",
"end_time": "58.37"
}, {
"start_time": "58.37",
"speaker_label": "spk_0",
"end_time": "58.68"
}, {
"start_time": "58.68",
"speaker_label": "spk_0",
"end_time": "58.86"
}, {
"start_time": "58.86",
"speaker_label": "spk_0",
"end_time": "59.07"
}, {
"start_time": "59.07",
"speaker_label": "spk_0",
"end_time": "59.16"
}, {
"start_time": "59.16",
"speaker_label": "spk_0",
"end_time": "59.56"
}, {
"start_time": "59.56",
"speaker_label": "spk_0",
"end_time": "59.92"
}, {
"start_time": "59.92",
"speaker_label": "spk_0",
"end_time": "60.14"
}, {
"start_time": "60.14",
"speaker_label": "spk_0",
"end_time": "60.74"
}, {
"start_time": "60.75",
"speaker_label": "spk_0",
"end_time": "60.85"
}, {
"start_time": "60.85",
"speaker_label": "spk_0",
"end_time": "61.16"
}, {
"start_time": "61.16",
"speaker_label": "spk_0",
"end_time": "61.57"
}, {
"start_time": "61.58",
"speaker_label": "spk_0",
"end_time": "61.91"
}, {
"start_time": "61.91",
"speaker_label": "spk_0",
"end_time": "62.47"
}, {
"start_time": "62.48",
"speaker_label": "spk_0",
"end_time": "62.83"
}, {
"start_time": "62.83",
"speaker_label": "spk_0",
"end_time": "63.03"
}, {
"start_time": "63.03",
"speaker_label": "spk_0",
"end_time": "63.31"
}, {
"start_time": "63.31",
"speaker_label": "spk_0",
"end_time": "64.05"
}, {
"start_time": "64.06",
"speaker_label": "spk_0",
"end_time": "64.29"
}, {
"start_time": "64.29",
"speaker_label": "spk_0",
"end_time": "64.4"
}, {
"start_time": "64.4",
"speaker_label": "spk_0",
"end_time": "64.66"
}, {
"start_time": "64.66",
"speaker_label": "spk_0",
"end_time": "65.2"
}, {
"start_time": "65.21",
"speaker_label": "spk_0",
"end_time": "65.31"
}, {
"start_time": "65.31",
"speaker_label": "spk_0",
"end_time": "65.75"
}, {
"start_time": "65.75",
"speaker_label": "spk_0",
"end_time": "65.82"
}, {
"start_time": "65.82",
"speaker_label": "spk_0",
"end_time": "66.52"
}, {
"start_time": "66.53",
"speaker_label": "spk_0",
"end_time": "66.96"
}, {
"start_time": "66.96",
"speaker_label": "spk_0",
"end_time": "67.78"
}, {
"start_time": "67.79",
"speaker_label": "spk_0",
"end_time": "68.7"
}, {
"start_time": "68.71",
"speaker_label": "spk_0",
"end_time": "69.09"
}, {
"start_time": "69.09",
"speaker_label": "spk_0",
"end_time": "69.43"
}, {
"start_time": "69.43",
"speaker_label": "spk_0",
"end_time": "69.6"
}, {
"start_time": "69.6",
"speaker_label": "spk_0",
"end_time": "70.17"
}, {
"start_time": "70.18",
"speaker_label": "spk_0",
"end_time": "70.7"
}, {
"start_time": "70.7",
"speaker_label": "spk_0",
"end_time": "70.81"
}, {
"start_time": "70.81",
"speaker_label": "spk_0",
"end_time": "71.29"
}, {
"start_time": "71.29",
"speaker_label": "spk_0",
"end_time": "71.44"
}, {
"start_time": "71.44",
"speaker_label": "spk_0",
"end_time": "71.7"
}, {
"start_time": "71.7",
"speaker_label": "spk_0",
"end_time": "72.0"
}, {
"start_time": "72.0",
"speaker_label": "spk_0",
"end_time": "72.57"
}, {
"start_time": "72.58",
"speaker_label": "spk_0",
"end_time": "72.72"
}, {
"start_time": "72.72",
"speaker_label": "spk_0",
"end_time": "72.9"
}, {
"start_time": "72.9",
"speaker_label": "spk_0",
"end_time": "73.11"
}, {
"start_time": "73.11",
"speaker_label": "spk_0",
"end_time": "73.44"
}, {
"start_time": "73.44",
"speaker_label": "spk_0",
"end_time": "74.29"
}, {
"start_time": "74.3",
"speaker_label": "spk_0",
"end_time": "74.92"
}, {
"start_time": "74.92",
"speaker_label": "spk_0",
"end_time": "75.01"
}, {
"start_time": "75.01",
"speaker_label": "spk_0",
"end_time": "75.29"
}, {
"start_time": "75.3",
"speaker_label": "spk_0",
"end_time": "75.43"
}, {
"start_time": "75.43",
"speaker_label": "spk_0",
"end_time": "75.7"
}, {
"start_time": "75.7",
"speaker_label": "spk_0",
"end_time": "75.79"
}, {
"start_time": "75.79",
"speaker_label": "spk_0",
"end_time": "76.03"
}, {
"start_time": "76.03",
"speaker_label": "spk_0",
"end_time": "76.17"
}, {
"start_time": "76.17",
"speaker_label": "spk_0",
"end_time": "76.47"
}, {
"start_time": "76.47",
"speaker_label": "spk_0",
"end_time": "76.8"
}, {
"start_time": "76.81",
"speaker_label": "spk_0",
"end_time": "77.02"
}, {
"start_time": "77.02",
"speaker_label": "spk_0",
"end_time": "77.31"
}, {
"start_time": "77.31",
"speaker_label": "spk_0",
"end_time": "77.58"
}, {
"start_time": "77.58",
"speaker_label": "spk_0",
"end_time": "77.65"
}, {
"start_time": "77.65",
"speaker_label": "spk_0",
"end_time": "77.77"
}, {
"start_time": "77.77",
"speaker_label": "spk_0",
"end_time": "78.21"
}, {
"start_time": "78.22",
"speaker_label": "spk_0",
"end_time": "78.78"
}, {
"start_time": "78.78",
"speaker_label": "spk_0",
"end_time": "79.0"
}, {
"start_time": "79.0",
"speaker_label": "spk_0",
"end_time": "79.06"
}, {
"start_time": "79.06",
"speaker_label": "spk_0",
"end_time": "79.13"
}, {
"start_time": "79.13",
"speaker_label": "spk_0",
"end_time": "79.55"
}]
}, {
"start_time": "79.77",
"speaker_label": "spk_1",
"end_time": "81.53",
"items": [{
"start_time": "79.77",
"speaker_label": "spk_1",
"end_time": "80.22"
}, {
"start_time": "80.22",
"speaker_label": "spk_1",
"end_time": "80.4"
}, {
"start_time": "80.4",
"speaker_label": "spk_1",
"end_time": "80.64"
}, {
"start_time": "80.65",
"speaker_label": "spk_1",
"end_time": "80.93"
}, {
"start_time": "80.93",
"speaker_label": "spk_1",
"end_time": "81.01"
}, {
"start_time": "81.01",
"speaker_label": "spk_1",
"end_time": "81.14"
}, {
"start_time": "81.14",
"speaker_label": "spk_1",
"end_time": "81.53"
}]
}, {
"start_time": "81.54",
"speaker_label": "spk_0",
"end_time": "88.13",
"items": [{
"start_time": "81.54",
"speaker_label": "spk_0",
"end_time": "81.96"
}, {
"start_time": "81.97",
"speaker_label": "spk_0",
"end_time": "82.1"
}, {
"start_time": "82.1",
"speaker_label": "spk_0",
"end_time": "82.27"
}, {
"start_time": "82.27",
"speaker_label": "spk_0",
"end_time": "82.35"
}, {
"start_time": "82.35",
"speaker_label": "spk_0",
"end_time": "82.49"
}, {
"start_time": "82.49",
"speaker_label": "spk_0",
"end_time": "82.75"
}, {
"start_time": "82.75",
"speaker_label": "spk_0",
"end_time": "82.93"
}, {
"start_time": "82.93",
"speaker_label": "spk_0",
"end_time": "83.15"
}, {
"start_time": "83.15",
"speaker_label": "spk_0",
"end_time": "83.37"
}, {
"start_time": "83.38",
"speaker_label": "spk_0",
"end_time": "83.67"
}, {
"start_time": "83.67",
"speaker_label": "spk_0",
"end_time": "83.97"
}, {
"start_time": "83.97",
"speaker_label": "spk_0",
"end_time": "84.16"
}, {
"start_time": "84.16",
"speaker_label": "spk_0",
"end_time": "84.44"
}, {
"start_time": "84.44",
"speaker_label": "spk_0",
"end_time": "84.69"
}, {
"start_time": "84.7",
"speaker_label": "spk_0",
"end_time": "85.23"
}, {
"start_time": "85.24",
"speaker_label": "spk_0",
"end_time": "85.49"
}, {
"start_time": "85.49",
"speaker_label": "spk_0",
"end_time": "85.61"
}, {
"start_time": "85.61",
"speaker_label": "spk_0",
"end_time": "85.95"
}, {
"start_time": "85.96",
"speaker_label": "spk_0",
"end_time": "86.64"
}, {
"start_time": "86.64",
"speaker_label": "spk_0",
"end_time": "87.11"
}, {
"start_time": "87.12",
"speaker_label": "spk_0",
"end_time": "87.45"
}, {
"start_time": "87.45",
"speaker_label": "spk_0",
"end_time": "87.69"
}, {
"start_time": "87.69",
"speaker_label": "spk_0",
"end_time": "88.13"
}]
}, {
"start_time": "88.14",
"speaker_label": "spk_1",
"end_time": "90.2",
"items": [{
"start_time": "88.14",
"speaker_label": "spk_1",
"end_time": "88.78"
}, {
"start_time": "88.79",
"speaker_label": "spk_1",
"end_time": "88.82"
}, {
"start_time": "88.83",
"speaker_label": "spk_1",
"end_time": "89.06"
}, {
"start_time": "89.06",
"speaker_label": "spk_1",
"end_time": "89.12"
}, {
"start_time": "89.12",
"speaker_label": "spk_1",
"end_time": "89.3"
}, {
"start_time": "89.3",
"speaker_label": "spk_1",
"end_time": "89.53"
}, {
"start_time": "89.53",
"speaker_label": "spk_1",
"end_time": "89.64"
}, {
"start_time": "89.64",
"speaker_label": "spk_1",
"end_time": "89.8"
}, {
"start_time": "89.8",
"speaker_label": "spk_1",
"end_time": "90.2"
}]
}, {
"start_time": "90.21",
"speaker_label": "spk_0",
"end_time": "91.46",
"items": [{
"start_time": "90.21",
"speaker_label": "spk_0",
"end_time": "90.78"
}, {
"start_time": "90.79",
"speaker_label": "spk_0",
"end_time": "91.0"
}, {
"start_time": "91.01",
"speaker_label": "spk_0",
"end_time": "91.46"
}]
}, {
"start_time": "92.32",
"speaker_label": "spk_0",
"end_time": "110.7",
"items": [{
"start_time": "92.32",
"speaker_label": "spk_0",
"end_time": "93.16"
}, {
"start_time": "93.17",
"speaker_label": "spk_0",
"end_time": "93.83"
}, {
"start_time": "93.84",
"speaker_label": "spk_0",
"end_time": "94.44"
}, {
"start_time": "94.44",
"speaker_label": "spk_0",
"end_time": "94.75"
}, {
"start_time": "94.76",
"speaker_label": "spk_0",
"end_time": "94.86"
}, {
"start_time": "94.86",
"speaker_label": "spk_0",
"end_time": "95.08"
}, {
"start_time": "95.08",
"speaker_label": "spk_0",
"end_time": "95.3"
}, {
"start_time": "95.31",
"speaker_label": "spk_0",
"end_time": "96.03"
}, {
"start_time": "96.04",
"speaker_label": "spk_0",
"end_time": "96.45"
}, {
"start_time": "96.46",
"speaker_label": "spk_0",
"end_time": "96.99"
}, {
"start_time": "96.99",
"speaker_label": "spk_0",
"end_time": "98.32"
}, {
"start_time": "98.33",
"speaker_label": "spk_0",
"end_time": "98.86"
}, {
"start_time": "98.86",
"speaker_label": "spk_0",
"end_time": "99.37"
}, {
"start_time": "99.37",
"speaker_label": "spk_0",
"end_time": "99.52"
}, {
"start_time": "99.52",
"speaker_label": "spk_0",
"end_time": "99.65"
}, {
"start_time": "99.65",
"speaker_label": "spk_0",
"end_time": "100.0"
}, {
"start_time": "100.0",
"speaker_label": "spk_0",
"end_time": "100.17"
}, {
"start_time": "100.17",
"speaker_label": "spk_0",
"end_time": "100.52"
}, {
"start_time": "100.52",
"speaker_label": "spk_0",
"end_time": "101.02"
}, {
"start_time": "101.03",
"speaker_label": "spk_0",
"end_time": "101.49"
}, {
"start_time": "101.49",
"speaker_label": "spk_0",
"end_time": "101.69"
}, {
"start_time": "101.69",
"speaker_label": "spk_0",
"end_time": "101.78"
}, {
"start_time": "101.78",
"speaker_label": "spk_0",
"end_time": "101.88"
}, {
"start_time": "101.88",
"speaker_label": "spk_0",
"end_time": "102.37"
}, {
"start_time": "102.38",
"speaker_label": "spk_0",
"end_time": "102.61"
}, {
"start_time": "102.61",
"speaker_label": "spk_0",
"end_time": "102.67"
}, {
"start_time": "102.67",
"speaker_label": "spk_0",
"end_time": "102.93"
}, {
"start_time": "102.93",
"speaker_label": "spk_0",
"end_time": "103.19"
}, {
"start_time": "103.19",
"speaker_label": "spk_0",
"end_time": "103.28"
}, {
"start_time": "103.28",
"speaker_label": "spk_0",
"end_time": "103.58"
}, {
"start_time": "103.58",
"speaker_label": "spk_0",
"end_time": "103.83"
}, {
"start_time": "103.83",
"speaker_label": "spk_0",
"end_time": "104.27"
}, {
"start_time": "104.28",
"speaker_label": "spk_0",
"end_time": "104.73"
}, {
"start_time": "104.73",
"speaker_label": "spk_0",
"end_time": "104.81"
}, {
"start_time": "104.81",
"speaker_label": "spk_0",
"end_time": "105.0"
}, {
"start_time": "105.0",
"speaker_label": "spk_0",
"end_time": "105.14"
}, {
"start_time": "105.14",
"speaker_label": "spk_0",
"end_time": "105.4"
}, {
"start_time": "105.4",
"speaker_label": "spk_0",
"end_time": "105.51"
}, {
"start_time": "105.51",
"speaker_label": "spk_0",
"end_time": "105.6"
}, {
"start_time": "105.6",
"speaker_label": "spk_0",
"end_time": "105.71"
}, {
"start_time": "105.71",
"speaker_label": "spk_0",
"end_time": "105.82"
}, {
"start_time": "105.82",
"speaker_label": "spk_0",
"end_time": "106.02"
}, {
"start_time": "106.02",
"speaker_label": "spk_0",
"end_time": "106.35"
}, {
"start_time": "106.35",
"speaker_label": "spk_0",
"end_time": "106.81"
}, {
"start_time": "106.82",
"speaker_label": "spk_0",
"end_time": "107.46"
}, {
"start_time": "107.46",
"speaker_label": "spk_0",
"end_time": "107.6"
}, {
"start_time": "107.6",
"speaker_label": "spk_0",
"end_time": "108.0"
}, {
"start_time": "108.0",
"speaker_label": "spk_0",
"end_time": "108.23"
}, {
"start_time": "108.23",
"speaker_label": "spk_0",
"end_time": "108.81"
}, {
"start_time": "108.82",
"speaker_label": "spk_0",
"end_time": "109.61"
}, {
"start_time": "109.61",
"speaker_label": "spk_0",
"end_time": "109.96"
}, {
"start_time": "109.96",
"speaker_label": "spk_0",
"end_time": "110.12"
}, {
"start_time": "110.12",
"speaker_label": "spk_0",
"end_time": "110.31"
}, {
"start_time": "110.31",
"speaker_label": "spk_0",
"end_time": "110.7"
}]
}, {
"start_time": "110.71",
"speaker_label": "spk_1",
"end_time": "113.13",
"items": [{
"start_time": "110.71",
"speaker_label": "spk_1",
"end_time": "111.27"
}, {
"start_time": "111.27",
"speaker_label": "spk_1",
"end_time": "111.5"
}, {
"start_time": "111.5",
"speaker_label": "spk_1",
"end_time": "111.59"
}, {
"start_time": "111.59",
"speaker_label": "spk_1",
"end_time": "111.84"
}, {
"start_time": "111.84",
"speaker_label": "spk_1",
"end_time": "112.45"
}, {
"start_time": "112.46",
"speaker_label": "spk_1",
"end_time": "113.13"
}]
}, {
"start_time": "113.44",
"speaker_label": "spk_1",
"end_time": "123.51",
"items": [{
"start_time": "113.44",
"speaker_label": "spk_1",
"end_time": "113.74"
}, {
"start_time": "113.74",
"speaker_label": "spk_1",
"end_time": "113.93"
}, {
"start_time": "113.93",
"speaker_label": "spk_1",
"end_time": "114.0"
}, {
"start_time": "114.0",
"speaker_label": "spk_1",
"end_time": "114.14"
}, {
"start_time": "114.14",
"speaker_label": "spk_1",
"end_time": "114.21"
}, {
"start_time": "114.21",
"speaker_label": "spk_1",
"end_time": "114.57"
}, {
"start_time": "114.58",
"speaker_label": "spk_1",
"end_time": "115.06"
}, {
"start_time": "115.06",
"speaker_label": "spk_1",
"end_time": "115.28"
}, {
"start_time": "115.28",
"speaker_label": "spk_1",
"end_time": "115.57"
}, {
"start_time": "115.57",
"speaker_label": "spk_1",
"end_time": "115.97"
}, {
"start_time": "115.98",
"speaker_label": "spk_1",
"end_time": "116.33"
}, {
"start_time": "116.33",
"speaker_label": "spk_1",
"end_time": "116.43"
}, {
"start_time": "116.43",
"speaker_label": "spk_1",
"end_time": "117.1"
}, {
"start_time": "117.11",
"speaker_label": "spk_1",
"end_time": "118.13"
}, {
"start_time": "118.14",
"speaker_label": "spk_1",
"end_time": "118.97"
}, {
"start_time": "118.98",
"speaker_label": "spk_1",
"end_time": "119.3"
}, {
"start_time": "119.3",
"speaker_label": "spk_1",
"end_time": "119.4"
}, {
"start_time": "119.4",
"speaker_label": "spk_1",
"end_time": "119.62"
}, {
"start_time": "119.62",
"speaker_label": "spk_1",
"end_time": "120.02"
}, {
"start_time": "120.02",
"speaker_label": "spk_1",
"end_time": "120.74"
}, {
"start_time": "120.74",
"speaker_label": "spk_1",
"end_time": "121.04"
}, {
"start_time": "121.04",
"speaker_label": "spk_1",
"end_time": "121.22"
}, {
"start_time": "121.22",
"speaker_label": "spk_1",
"end_time": "121.29"
}, {
"start_time": "121.29",
"speaker_label": "spk_1",
"end_time": "121.56"
}, {
"start_time": "121.56",
"speaker_label": "spk_1",
"end_time": "122.12"
}, {
"start_time": "122.12",
"speaker_label": "spk_1",
"end_time": "122.27"
}, {
"start_time": "122.27",
"speaker_label": "spk_1",
"end_time": "122.69"
}, {
"start_time": "122.69",
"speaker_label": "spk_1",
"end_time": "122.99"
}, {
"start_time": "122.99",
"speaker_label": "spk_1",
"end_time": "123.51"
}]
}, {
"start_time": "124.05",
"speaker_label": "spk_1",
"end_time": "148.07",
"items": [{
"start_time": "124.05",
"speaker_label": "spk_1",
"end_time": "124.8"
}, {
"start_time": "124.8",
"speaker_label": "spk_1",
"end_time": "125.88"
}, {
"start_time": "125.89",
"speaker_label": "spk_1",
"end_time": "126.57"
}, {
"start_time": "126.58",
"speaker_label": "spk_1",
"end_time": "126.66"
}, {
"start_time": "126.66",
"speaker_label": "spk_1",
"end_time": "126.81"
}, {
"start_time": "126.81",
"speaker_label": "spk_1",
"end_time": "127.31"
}, {
"start_time": "127.31",
"speaker_label": "spk_1",
"end_time": "127.54"
}, {
"start_time": "127.54",
"speaker_label": "spk_1",
"end_time": "127.72"
}, {
"start_time": "127.73",
"speaker_label": "spk_1",
"end_time": "127.82"
}, {
"start_time": "127.82",
"speaker_label": "spk_1",
"end_time": "128.02"
}, {
"start_time": "128.02",
"speaker_label": "spk_1",
"end_time": "128.52"
}, {
"start_time": "128.52",
"speaker_label": "spk_1",
"end_time": "128.65"
}, {
"start_time": "128.65",
"speaker_label": "spk_1",
"end_time": "128.75"
}, {
"start_time": "128.75",
"speaker_label": "spk_1",
"end_time": "129.04"
}, {
"start_time": "129.04",
"speaker_label": "spk_1",
"end_time": "129.26"
}, {
"start_time": "129.26",
"speaker_label": "spk_1",
"end_time": "129.34"
}, {
"start_time": "129.34",
"speaker_label": "spk_1",
"end_time": "129.58"
}, {
"start_time": "129.58",
"speaker_label": "spk_1",
"end_time": "129.93"
}, {
"start_time": "129.93",
"speaker_label": "spk_1",
"end_time": "130.1"
}, {
"start_time": "130.1",
"speaker_label": "spk_1",
"end_time": "130.16"
}, {
"start_time": "130.16",
"speaker_label": "spk_1",
"end_time": "130.48"
}, {
"start_time": "130.48",
"speaker_label": "spk_1",
"end_time": "131.01"
}, {
"start_time": "131.02",
"speaker_label": "spk_1",
"end_time": "131.4"
}, {
"start_time": "131.4",
"speaker_label": "spk_1",
"end_time": "132.42"
}, {
"start_time": "132.43",
"speaker_label": "spk_1",
"end_time": "132.59"
}, {
"start_time": "132.59",
"speaker_label": "spk_1",
"end_time": "132.87"
}, {
"start_time": "132.87",
"speaker_label": "spk_1",
"end_time": "133.0"
}, {
"start_time": "133.0",
"speaker_label": "spk_1",
"end_time": "133.22"
}, {
"start_time": "133.22",
"speaker_label": "spk_1",
"end_time": "133.3"
}, {
"start_time": "133.3",
"speaker_label": "spk_1",
"end_time": "133.51"
}, {
"start_time": "133.51",
"speaker_label": "spk_1",
"end_time": "133.64"
}, {
"start_time": "133.64",
"speaker_label": "spk_1",
"end_time": "133.96"
}, {
"start_time": "133.96",
"speaker_label": "spk_1",
"end_time": "134.04"
}, {
"start_time": "134.04",
"speaker_label": "spk_1",
"end_time": "134.38"
}, {
"start_time": "134.38",
"speaker_label": "spk_1",
"end_time": "134.73"
}, {
"start_time": "134.74",
"speaker_label": "spk_1",
"end_time": "134.97"
}, {
"start_time": "134.97",
"speaker_label": "spk_1",
"end_time": "135.28"
}, {
"start_time": "135.28",
"speaker_label": "spk_1",
"end_time": "135.4"
}, {
"start_time": "135.4",
"speaker_label": "spk_1",
"end_time": "135.52"
}, {
"start_time": "135.52",
"speaker_label": "spk_1",
"end_time": "135.61"
}, {
"start_time": "135.61",
"speaker_label": "spk_1",
"end_time": "135.91"
}, {
"start_time": "135.91",
"speaker_label": "spk_1",
"end_time": "135.99"
}, {
"start_time": "135.99",
"speaker_label": "spk_1",
"end_time": "136.19"
}, {
"start_time": "136.19",
"speaker_label": "spk_1",
"end_time": "136.78"
}, {
"start_time": "136.79",
"speaker_label": "spk_1",
"end_time": "137.37"
}, {
"start_time": "137.38",
"speaker_label": "spk_1",
"end_time": "137.5"
}, {
"start_time": "137.5",
"speaker_label": "spk_1",
"end_time": "137.72"
}, {
"start_time": "137.72",
"speaker_label": "spk_1",
"end_time": "137.79"
}, {
"start_time": "137.79",
"speaker_label": "spk_1",
"end_time": "138.11"
}, {
"start_time": "138.11",
"speaker_label": "spk_1",
"end_time": "138.72"
}, {
"start_time": "138.72",
"speaker_label": "spk_1",
"end_time": "138.88"
}, {
"start_time": "138.89",
"speaker_label": "spk_1",
"end_time": "139.02"
}, {
"start_time": "139.02",
"speaker_label": "spk_1",
"end_time": "139.42"
}, {
"start_time": "139.42",
"speaker_label": "spk_1",
"end_time": "140.04"
}, {
"start_time": "140.05",
"speaker_label": "spk_1",
"end_time": "140.2"
}, {
"start_time": "140.2",
"speaker_label": "spk_1",
"end_time": "140.42"
}, {
"start_time": "140.42",
"speaker_label": "spk_1",
"end_time": "140.49"
}, {
"start_time": "140.49",
"speaker_label": "spk_1",
"end_time": "140.94"
}, {
"start_time": "140.94",
"speaker_label": "spk_1",
"end_time": "141.04"
}, {
"start_time": "141.04",
"speaker_label": "spk_1",
"end_time": "141.15"
}, {
"start_time": "141.15",
"speaker_label": "spk_1",
"end_time": "141.65"
}, {
"start_time": "141.65",
"speaker_label": "spk_1",
"end_time": "141.73"
}, {
"start_time": "141.73",
"speaker_label": "spk_1",
"end_time": "142.79"
}, {
"start_time": "142.8",
"speaker_label": "spk_1",
"end_time": "143.08"
}, {
"start_time": "143.08",
"speaker_label": "spk_1",
"end_time": "143.16"
}, {
"start_time": "143.16",
"speaker_label": "spk_1",
"end_time": "143.33"
}, {
"start_time": "143.33",
"speaker_label": "spk_1",
"end_time": "143.93"
}, {
"start_time": "143.94",
"speaker_label": "spk_1",
"end_time": "144.16"
}, {
"start_time": "144.16",
"speaker_label": "spk_1",
"end_time": "144.24"
}, {
"start_time": "144.24",
"speaker_label": "spk_1",
"end_time": "144.67"
}, {
"start_time": "144.67",
"speaker_label": "spk_1",
"end_time": "144.73"
}, {
"start_time": "144.73",
"speaker_label": "spk_1",
"end_time": "145.01"
}, {
"start_time": "145.01",
"speaker_label": "spk_1",
"end_time": "145.31"
}, {
"start_time": "145.31",
"speaker_label": "spk_1",
"end_time": "145.56"
}, {
"start_time": "145.56",
"speaker_label": "spk_1",
"end_time": "145.7"
}, {
"start_time": "145.7",
"speaker_label": "spk_1",
"end_time": "145.89"
}, {
"start_time": "145.89",
"speaker_label": "spk_1",
"end_time": "146.92"
}, {
"start_time": "146.93",
"speaker_label": "spk_1",
"end_time": "148.07"
}]
}, {
"start_time": "148.57",
"speaker_label": "spk_1",
"end_time": "176.74",
"items": [{
"start_time": "148.57",
"speaker_label": "spk_1",
"end_time": "149.01"
}, {
"start_time": "149.01",
"speaker_label": "spk_1",
"end_time": "149.08"
}, {
"start_time": "149.08",
"speaker_label": "spk_1",
"end_time": "149.18"
}, {
"start_time": "149.18",
"speaker_label": "spk_1",
"end_time": "149.55"
}, {
"start_time": "149.55",
"speaker_label": "spk_1",
"end_time": "149.67"
}, {
"start_time": "149.67",
"speaker_label": "spk_1",
"end_time": "149.91"
}, {
"start_time": "149.91",
"speaker_label": "spk_1",
"end_time": "150.09"
}, {
"start_time": "150.09",
"speaker_label": "spk_1",
"end_time": "150.19"
}, {
"start_time": "150.19",
"speaker_label": "spk_1",
"end_time": "150.42"
}, {
"start_time": "150.42",
"speaker_label": "spk_1",
"end_time": "150.59"
}, {
"start_time": "150.59",
"speaker_label": "spk_1",
"end_time": "150.89"
}, {
"start_time": "150.89",
"speaker_label": "spk_1",
"end_time": "151.52"
}, {
"start_time": "151.53",
"speaker_label": "spk_1",
"end_time": "151.74"
}, {
"start_time": "151.74",
"speaker_label": "spk_1",
"end_time": "151.93"
}, {
"start_time": "151.93",
"speaker_label": "spk_1",
"end_time": "152.18"
}, {
"start_time": "152.18",
"speaker_label": "spk_1",
"end_time": "152.59"
}, {
"start_time": "152.59",
"speaker_label": "spk_1",
"end_time": "152.98"
}, {
"start_time": "152.98",
"speaker_label": "spk_1",
"end_time": "153.15"
}, {
"start_time": "153.15",
"speaker_label": "spk_1",
"end_time": "153.43"
}, {
"start_time": "153.43",
"speaker_label": "spk_1",
"end_time": "153.96"
}, {
"start_time": "153.97",
"speaker_label": "spk_1",
"end_time": "154.78"
}, {
"start_time": "154.78",
"speaker_label": "spk_1",
"end_time": "154.93"
}, {
"start_time": "154.93",
"speaker_label": "spk_1",
"end_time": "155.01"
}, {
"start_time": "155.01",
"speaker_label": "spk_1",
"end_time": "155.15"
}, {
"start_time": "155.15",
"speaker_label": "spk_1",
"end_time": "155.61"
}, {
"start_time": "155.61",
"speaker_label": "spk_1",
"end_time": "156.34"
}, {
"start_time": "156.34",
"speaker_label": "spk_1",
"end_time": "156.62"
}, {
"start_time": "156.62",
"speaker_label": "spk_1",
"end_time": "157.01"
}, {
"start_time": "157.01",
"speaker_label": "spk_1",
"end_time": "157.57"
}, {
"start_time": "157.58",
"speaker_label": "spk_1",
"end_time": "158.41"
}, {
"start_time": "158.42",
"speaker_label": "spk_1",
"end_time": "158.92"
}, {
"start_time": "158.92",
"speaker_label": "spk_1",
"end_time": "159.31"
}, {
"start_time": "159.32",
"speaker_label": "spk_1",
"end_time": "159.76"
}, {
"start_time": "159.77",
"speaker_label": "spk_1",
"end_time": "159.91"
}, {
"start_time": "159.91",
"speaker_label": "spk_1",
"end_time": "159.97"
}, {
"start_time": "159.97",
"speaker_label": "spk_1",
"end_time": "160.37"
}, {
"start_time": "160.37",
"speaker_label": "spk_1",
"end_time": "160.45"
}, {
"start_time": "160.45",
"speaker_label": "spk_1",
"end_time": "160.61"
}, {
"start_time": "160.61",
"speaker_label": "spk_1",
"end_time": "160.77"
}, {
"start_time": "160.77",
"speaker_label": "spk_1",
"end_time": "160.82"
}, {
"start_time": "160.82",
"speaker_label": "spk_1",
"end_time": "161.01"
}, {
"start_time": "161.01",
"speaker_label": "spk_1",
"end_time": "161.2"
}, {
"start_time": "161.2",
"speaker_label": "spk_1",
"end_time": "161.67"
}, {
"start_time": "161.68",
"speaker_label": "spk_1",
"end_time": "162.54"
}, {
"start_time": "162.55",
"speaker_label": "spk_1",
"end_time": "163.59"
}, {
"start_time": "163.6",
"speaker_label": "spk_1",
"end_time": "163.81"
}, {
"start_time": "163.81",
"speaker_label": "spk_1",
"end_time": "164.26"
}, {
"start_time": "164.27",
"speaker_label": "spk_1",
"end_time": "164.41"
}, {
"start_time": "164.41",
"speaker_label": "spk_1",
"end_time": "164.6"
}, {
"start_time": "164.6",
"speaker_label": "spk_1",
"end_time": "164.85"
}, {
"start_time": "164.85",
"speaker_label": "spk_1",
"end_time": "165.35"
}, {
"start_time": "165.35",
"speaker_label": "spk_1",
"end_time": "166.21"
}, {
"start_time": "166.22",
"speaker_label": "spk_1",
"end_time": "166.6"
}, {
"start_time": "166.6",
"speaker_label": "spk_1",
"end_time": "167.23"
}, {
"start_time": "167.23",
"speaker_label": "spk_1",
"end_time": "167.37"
}, {
"start_time": "167.37",
"speaker_label": "spk_1",
"end_time": "167.42"
}, {
"start_time": "167.42",
"speaker_label": "spk_1",
"end_time": "167.57"
}, {
"start_time": "167.57",
"speaker_label": "spk_1",
"end_time": "167.67"
}, {
"start_time": "167.67",
"speaker_label": "spk_1",
"end_time": "167.96"
}, {
"start_time": "167.96",
"speaker_label": "spk_1",
"end_time": "168.43"
}, {
"start_time": "168.43",
"speaker_label": "spk_1",
"end_time": "168.74"
}, {
"start_time": "168.75",
"speaker_label": "spk_1",
"end_time": "168.94"
}, {
"start_time": "168.94",
"speaker_label": "spk_1",
"end_time": "168.98"
}, {
"start_time": "168.98",
"speaker_label": "spk_1",
"end_time": "169.1"
}, {
"start_time": "169.1",
"speaker_label": "spk_1",
"end_time": "169.33"
}, {
"start_time": "169.33",
"speaker_label": "spk_1",
"end_time": "169.39"
}, {
"start_time": "169.39",
"speaker_label": "spk_1",
"end_time": "169.5"
}, {
"start_time": "169.5",
"speaker_label": "spk_1",
"end_time": "169.77"
}, {
"start_time": "169.77",
"speaker_label": "spk_1",
"end_time": "169.88"
}, {
"start_time": "169.88",
"speaker_label": "spk_1",
"end_time": "169.96"
}, {
"start_time": "169.96",
"speaker_label": "spk_1",
"end_time": "170.02"
}, {
"start_time": "170.02",
"speaker_label": "spk_1",
"end_time": "170.15"
}, {
"start_time": "170.15",
"speaker_label": "spk_1",
"end_time": "170.21"
}, {
"start_time": "170.21",
"speaker_label": "spk_1",
"end_time": "170.35"
}, {
"start_time": "170.35",
"speaker_label": "spk_1",
"end_time": "170.74"
}, {
"start_time": "170.75",
"speaker_label": "spk_1",
"end_time": "171.18"
}, {
"start_time": "171.18",
"speaker_label": "spk_1",
"end_time": "171.32"
}, {
"start_time": "171.32",
"speaker_label": "spk_1",
"end_time": "171.95"
}, {
"start_time": "171.96",
"speaker_label": "spk_1",
"end_time": "172.22"
}, {
"start_time": "172.22",
"speaker_label": "spk_1",
"end_time": "172.32"
}, {
"start_time": "172.32",
"speaker_label": "spk_1",
"end_time": "172.56"
}, {
"start_time": "172.56",
"speaker_label": "spk_1",
"end_time": "172.83"
}, {
"start_time": "172.83",
"speaker_label": "spk_1",
"end_time": "173.04"
}, {
"start_time": "173.04",
"speaker_label": "spk_1",
"end_time": "173.48"
}, {
"start_time": "173.48",
"speaker_label": "spk_1",
"end_time": "173.6"
}, {
"start_time": "173.6",
"speaker_label": "spk_1",
"end_time": "173.75"
}, {
"start_time": "173.75",
"speaker_label": "spk_1",
"end_time": "173.92"
}, {
"start_time": "173.92",
"speaker_label": "spk_1",
"end_time": "174.01"
}, {
"start_time": "174.01",
"speaker_label": "spk_1",
"end_time": "174.48"
}, {
"start_time": "174.48",
"speaker_label": "spk_1",
"end_time": "174.61"
}, {
"start_time": "174.61",
"speaker_label": "spk_1",
"end_time": "174.8"
}, {
"start_time": "174.8",
"speaker_label": "spk_1",
"end_time": "175.15"
}, {
"start_time": "175.15",
"speaker_label": "spk_1",
"end_time": "175.38"
}, {
"start_time": "175.38",
"speaker_label": "spk_1",
"end_time": "175.84"
}, {
"start_time": "175.85",
"speaker_label": "spk_1",
"end_time": "175.91"
}, {
"start_time": "175.91",
"speaker_label": "spk_1",
"end_time": "176.74"
}]
}, {
"start_time": "176.99",
"speaker_label": "spk_1",
"end_time": "179.47",
"items": [{
"start_time": "177.1",
"speaker_label": "spk_1",
"end_time": "178.0"
}, {
"start_time": "178.01",
"speaker_label": "spk_1",
"end_time": "178.34"
}, {
"start_time": "178.34",
"speaker_label": "spk_1",
"end_time": "178.43"
}, {
"start_time": "178.43",
"speaker_label": "spk_1",
"end_time": "178.49"
}, {
"start_time": "178.49",
"speaker_label": "spk_1",
"end_time": "179.38"
}]
}, {
"start_time": "180.12",
"speaker_label": "spk_1",
"end_time": "208.86",
"items": [{
"start_time": "180.12",
"speaker_label": "spk_1",
"end_time": "180.34"
}, {
"start_time": "180.34",
"speaker_label": "spk_1",
"end_time": "180.66"
}, {
"start_time": "180.66",
"speaker_label": "spk_1",
"end_time": "181.43"
}, {
"start_time": "181.44",
"speaker_label": "spk_1",
"end_time": "182.16"
}, {
"start_time": "182.16",
"speaker_label": "spk_1",
"end_time": "182.93"
}, {
"start_time": "182.93",
"speaker_label": "spk_1",
"end_time": "182.99"
}, {
"start_time": "182.99",
"speaker_label": "spk_1",
"end_time": "183.26"
}, {
"start_time": "183.26",
"speaker_label": "spk_1",
"end_time": "183.5"
}, {
"start_time": "183.5",
"speaker_label": "spk_1",
"end_time": "183.61"
}, {
"start_time": "183.61",
"speaker_label": "spk_1",
"end_time": "183.77"
}, {
"start_time": "183.77",
"speaker_label": "spk_1",
"end_time": "184.6"
}, {
"start_time": "184.61",
"speaker_label": "spk_1",
"end_time": "184.82"
}, {
"start_time": "184.89",
"speaker_label": "spk_1",
"end_time": "185.43"
}, {
"start_time": "185.43",
"speaker_label": "spk_1",
"end_time": "185.5"
}, {
"start_time": "185.5",
"speaker_label": "spk_1",
"end_time": "185.97"
}, {
"start_time": "185.97",
"speaker_label": "spk_1",
"end_time": "186.06"
}, {
"start_time": "186.06",
"speaker_label": "spk_1",
"end_time": "186.36"
}, {
"start_time": "186.36",
"speaker_label": "spk_1",
"end_time": "186.98"
}, {
"start_time": "186.98",
"speaker_label": "spk_1",
"end_time": "187.13"
}, {
"start_time": "187.13",
"speaker_label": "spk_1",
"end_time": "187.37"
}, {
"start_time": "187.37",
"speaker_label": "spk_1",
"end_time": "187.49"
}, {
"start_time": "187.49",
"speaker_label": "spk_1",
"end_time": "188.34"
}, {
"start_time": "188.34",
"speaker_label": "spk_1",
"end_time": "188.5"
}, {
"start_time": "188.5",
"speaker_label": "spk_1",
"end_time": "189.06"
}, {
"start_time": "189.06",
"speaker_label": "spk_1",
"end_time": "189.42"
}, {
"start_time": "189.42",
"speaker_label": "spk_1",
"end_time": "189.83"
}, {
"start_time": "189.83",
"speaker_label": "spk_1",
"end_time": "190.16"
}, {
"start_time": "190.17",
"speaker_label": "spk_1",
"end_time": "190.64"
}, {
"start_time": "190.64",
"speaker_label": "spk_1",
"end_time": "190.74"
}, {
"start_time": "190.74",
"speaker_label": "spk_1",
"end_time": "191.29"
}, {
"start_time": "191.29",
"speaker_label": "spk_1",
"end_time": "192.51"
}, {
"start_time": "192.52",
"speaker_label": "spk_1",
"end_time": "193.07"
}, {
"start_time": "193.07",
"speaker_label": "spk_1",
"end_time": "193.21"
}, {
"start_time": "193.21",
"speaker_label": "spk_1",
"end_time": "193.7"
}, {
"start_time": "193.7",
"speaker_label": "spk_1",
"end_time": "193.94"
}, {
"start_time": "193.94",
"speaker_label": "spk_1",
"end_time": "194.2"
}, {
"start_time": "194.2",
"speaker_label": "spk_1",
"end_time": "195.01"
}, {
"start_time": "195.02",
"speaker_label": "spk_1",
"end_time": "195.84"
}, {
"start_time": "195.85",
"speaker_label": "spk_1",
"end_time": "196.14"
}, {
"start_time": "196.14",
"speaker_label": "spk_1",
"end_time": "196.21"
}, {
"start_time": "196.21",
"speaker_label": "spk_1",
"end_time": "196.3"
}, {
"start_time": "196.3",
"speaker_label": "spk_1",
"end_time": "196.86"
}, {
"start_time": "196.86",
"speaker_label": "spk_1",
"end_time": "197.0"
}, {
"start_time": "197.0",
"speaker_label": "spk_1",
"end_time": "197.11"
}, {
"start_time": "197.11",
"speaker_label": "spk_1",
"end_time": "197.39"
}, {
"start_time": "197.39",
"speaker_label": "spk_1",
"end_time": "197.54"
}, {
"start_time": "197.54",
"speaker_label": "spk_1",
"end_time": "198.02"
}, {
"start_time": "198.02",
"speaker_label": "spk_1",
"end_time": "198.15"
}, {
"start_time": "198.15",
"speaker_label": "spk_1",
"end_time": "198.39"
}, {
"start_time": "198.39",
"speaker_label": "spk_1",
"end_time": "198.91"
}, {
"start_time": "198.91",
"speaker_label": "spk_1",
"end_time": "199.73"
}, {
"start_time": "199.74",
"speaker_label": "spk_1",
"end_time": "200.49"
}, {
"start_time": "200.49",
"speaker_label": "spk_1",
"end_time": "200.65"
}, {
"start_time": "200.65",
"speaker_label": "spk_1",
"end_time": "200.96"
}, {
"start_time": "200.96",
"speaker_label": "spk_1",
"end_time": "201.43"
}, {
"start_time": "201.43",
"speaker_label": "spk_1",
"end_time": "201.52"
}, {
"start_time": "201.52",
"speaker_label": "spk_1",
"end_time": "201.8"
}, {
"start_time": "201.8",
"speaker_label": "spk_1",
"end_time": "202.05"
}, {
"start_time": "202.05",
"speaker_label": "spk_1",
"end_time": "202.85"
}, {
"start_time": "202.86",
"speaker_label": "spk_1",
"end_time": "203.31"
}, {
"start_time": "203.31",
"speaker_label": "spk_1",
"end_time": "203.49"
}, {
"start_time": "203.49",
"speaker_label": "spk_1",
"end_time": "203.56"
}, {
"start_time": "203.56",
"speaker_label": "spk_1",
"end_time": "203.7"
}, {
"start_time": "203.7",
"speaker_label": "spk_1",
"end_time": "203.77"
}, {
"start_time": "203.77",
"speaker_label": "spk_1",
"end_time": "203.84"
}, {
"start_time": "203.84",
"speaker_label": "spk_1",
"end_time": "204.42"
}, {
"start_time": "204.42",
"speaker_label": "spk_1",
"end_time": "204.52"
}, {
"start_time": "204.52",
"speaker_label": "spk_1",
"end_time": "204.69"
}, {
"start_time": "204.7",
"speaker_label": "spk_1",
"end_time": "205.2"
}, {
"start_time": "205.2",
"speaker_label": "spk_1",
"end_time": "205.55"
}, {
"start_time": "205.55",
"speaker_label": "spk_1",
"end_time": "205.59"
}, {
"start_time": "205.59",
"speaker_label": "spk_1",
"end_time": "205.77"
}, {
"start_time": "205.77",
"speaker_label": "spk_1",
"end_time": "206.18"
}, {
"start_time": "206.19",
"speaker_label": "spk_1",
"end_time": "206.47"
}, {
"start_time": "206.47",
"speaker_label": "spk_1",
"end_time": "206.76"
}, {
"start_time": "206.76",
"speaker_label": "spk_1",
"end_time": "206.88"
}, {
"start_time": "206.88",
"speaker_label": "spk_1",
"end_time": "207.0"
}, {
"start_time": "207.0",
"speaker_label": "spk_1",
"end_time": "207.26"
}, {
"start_time": "207.26",
"speaker_label": "spk_1",
"end_time": "207.75"
}, {
"start_time": "207.76",
"speaker_label": "spk_1",
"end_time": "207.92"
}, {
"start_time": "207.92",
"speaker_label": "spk_1",
"end_time": "208.09"
}, {
"start_time": "208.09",
"speaker_label": "spk_1",
"end_time": "208.43"
}, {
"start_time": "208.43",
"speaker_label": "spk_1",
"end_time": "208.86"
}]
}, {
"start_time": "209.16",
"speaker_label": "spk_1",
"end_time": "215.04",
"items": [{
"start_time": "209.16",
"speaker_label": "spk_1",
"end_time": "209.5"
}, {
"start_time": "209.5",
"speaker_label": "spk_1",
"end_time": "209.66"
}, {
"start_time": "209.66",
"speaker_label": "spk_1",
"end_time": "209.75"
}, {
"start_time": "209.75",
"speaker_label": "spk_1",
"end_time": "209.89"
}, {
"start_time": "209.89",
"speaker_label": "spk_1",
"end_time": "210.04"
}, {
"start_time": "210.04",
"speaker_label": "spk_1",
"end_time": "210.1"
}, {
"start_time": "210.1",
"speaker_label": "spk_1",
"end_time": "210.24"
}, {
"start_time": "210.24",
"speaker_label": "spk_1",
"end_time": "210.5"
}, {
"start_time": "210.5",
"speaker_label": "spk_1",
"end_time": "211.23"
}, {
"start_time": "211.23",
"speaker_label": "spk_1",
"end_time": "211.74"
}, {
"start_time": "211.89",
"speaker_label": "spk_1",
"end_time": "212.02"
}, {
"start_time": "212.02",
"speaker_label": "spk_1",
"end_time": "212.24"
}, {
"start_time": "212.24",
"speaker_label": "spk_1",
"end_time": "212.53"
}, {
"start_time": "212.53",
"speaker_label": "spk_1",
"end_time": "212.69"
}, {
"start_time": "212.69",
"speaker_label": "spk_1",
"end_time": "212.85"
}, {
"start_time": "212.85",
"speaker_label": "spk_1",
"end_time": "213.12"
}, {
"start_time": "213.12",
"speaker_label": "spk_1",
"end_time": "213.36"
}, {
"start_time": "213.36",
"speaker_label": "spk_1",
"end_time": "213.48"
}, {
"start_time": "213.48",
"speaker_label": "spk_1",
"end_time": "213.67"
}, {
"start_time": "213.67",
"speaker_label": "spk_1",
"end_time": "213.75"
}, {
"start_time": "213.75",
"speaker_label": "spk_1",
"end_time": "213.98"
}, {
"start_time": "213.98",
"speaker_label": "spk_1",
"end_time": "214.27"
}, {
"start_time": "214.27",
"speaker_label": "spk_1",
"end_time": "214.36"
}, {
"start_time": "214.36",
"speaker_label": "spk_1",
"end_time": "214.43"
}, {
"start_time": "214.43",
"speaker_label": "spk_1",
"end_time": "215.04"
}]
}, {
"start_time": "215.64",
"speaker_label": "spk_1",
"end_time": "225.68",
"items": [{
"start_time": "215.64",
"speaker_label": "spk_1",
"end_time": "216.82"
}, {
"start_time": "216.83",
"speaker_label": "spk_1",
"end_time": "217.05"
}, {
"start_time": "217.05",
"speaker_label": "spk_1",
"end_time": "217.43"
}, {
"start_time": "217.43",
"speaker_label": "spk_1",
"end_time": "217.83"
}, {
"start_time": "217.83",
"speaker_label": "spk_1",
"end_time": "217.97"
}, {
"start_time": "217.97",
"speaker_label": "spk_1",
"end_time": "218.02"
}, {
"start_time": "218.02",
"speaker_label": "spk_1",
"end_time": "218.38"
}, {
"start_time": "218.38",
"speaker_label": "spk_1",
"end_time": "218.87"
}, {
"start_time": "218.87",
"speaker_label": "spk_1",
"end_time": "219.03"
}, {
"start_time": "219.03",
"speaker_label": "spk_1",
"end_time": "219.18"
}, {
"start_time": "219.18",
"speaker_label": "spk_1",
"end_time": "219.34"
}, {
"start_time": "219.34",
"speaker_label": "spk_1",
"end_time": "219.47"
}, {
"start_time": "219.47",
"speaker_label": "spk_1",
"end_time": "219.56"
}, {
"start_time": "219.56",
"speaker_label": "spk_1",
"end_time": "219.83"
}, {
"start_time": "219.83",
"speaker_label": "spk_1",
"end_time": "220.02"
}, {
"start_time": "220.02",
"speaker_label": "spk_1",
"end_time": "220.31"
}, {
"start_time": "220.31",
"speaker_label": "spk_1",
"end_time": "220.53"
}, {
"start_time": "220.53",
"speaker_label": "spk_1",
"end_time": "220.73"
}, {
"start_time": "220.73",
"speaker_label": "spk_1",
"end_time": "220.85"
}, {
"start_time": "220.85",
"speaker_label": "spk_1",
"end_time": "220.96"
}, {
"start_time": "220.96",
"speaker_label": "spk_1",
"end_time": "221.24"
}, {
"start_time": "221.24",
"speaker_label": "spk_1",
"end_time": "221.4"
}, {
"start_time": "221.4",
"speaker_label": "spk_1",
"end_time": "221.47"
}, {
"start_time": "221.47",
"speaker_label": "spk_1",
"end_time": "221.84"
}, {
"start_time": "221.84",
"speaker_label": "spk_1",
"end_time": "222.05"
}, {
"start_time": "222.05",
"speaker_label": "spk_1",
"end_time": "222.45"
}, {
"start_time": "222.46",
"speaker_label": "spk_1",
"end_time": "222.89"
}, {
"start_time": "222.89",
"speaker_label": "spk_1",
"end_time": "223.03"
}, {
"start_time": "223.03",
"speaker_label": "spk_1",
"end_time": "223.43"
}, {
"start_time": "223.43",
"speaker_label": "spk_1",
"end_time": "224.13"
}, {
"start_time": "224.14",
"speaker_label": "spk_1",
"end_time": "224.27"
}, {
"start_time": "224.27",
"speaker_label": "spk_1",
"end_time": "224.37"
}, {
"start_time": "224.37",
"speaker_label": "spk_1",
"end_time": "224.7"
}, {
"start_time": "224.7",
"speaker_label": "spk_1",
"end_time": "225.06"
}, {
"start_time": "225.06",
"speaker_label": "spk_1",
"end_time": "225.29"
}, {
"start_time": "225.29",
"speaker_label": "spk_1",
"end_time": "225.36"
}, {
"start_time": "225.36",
"speaker_label": "spk_1",
"end_time": "225.68"
}]
}, {
"start_time": "226.24",
"speaker_label": "spk_1",
"end_time": "254.72",
"items": [{
"start_time": "226.24",
"speaker_label": "spk_1",
"end_time": "226.91"
}, {
"start_time": "226.91",
"speaker_label": "spk_1",
"end_time": "227.47"
}, {
"start_time": "227.48",
"speaker_label": "spk_1",
"end_time": "227.81"
}, {
"start_time": "227.81",
"speaker_label": "spk_1",
"end_time": "228.15"
}, {
"start_time": "228.15",
"speaker_label": "spk_1",
"end_time": "228.59"
}, {
"start_time": "228.6",
"speaker_label": "spk_1",
"end_time": "228.91"
}, {
"start_time": "228.91",
"speaker_label": "spk_1",
"end_time": "229.26"
}, {
"start_time": "229.27",
"speaker_label": "spk_1",
"end_time": "229.66"
}, {
"start_time": "229.67",
"speaker_label": "spk_1",
"end_time": "229.89"
}, {
"start_time": "229.89",
"speaker_label": "spk_1",
"end_time": "229.95"
}, {
"start_time": "229.95",
"speaker_label": "spk_1",
"end_time": "230.56"
}, {
"start_time": "230.56",
"speaker_label": "spk_1",
"end_time": "230.67"
}, {
"start_time": "230.67",
"speaker_label": "spk_1",
"end_time": "231.02"
}, {
"start_time": "231.02",
"speaker_label": "spk_1",
"end_time": "231.84"
}, {
"start_time": "231.85",
"speaker_label": "spk_1",
"end_time": "232.26"
}, {
"start_time": "232.26",
"speaker_label": "spk_1",
"end_time": "232.39"
}, {
"start_time": "232.39",
"speaker_label": "spk_1",
"end_time": "233.07"
}, {
"start_time": "233.07",
"speaker_label": "spk_1",
"end_time": "233.22"
}, {
"start_time": "233.22",
"speaker_label": "spk_1",
"end_time": "233.39"
}, {
"start_time": "233.39",
"speaker_label": "spk_1",
"end_time": "233.51"
}, {
"start_time": "233.51",
"speaker_label": "spk_1",
"end_time": "233.94"
}, {
"start_time": "233.94",
"speaker_label": "spk_1",
"end_time": "234.22"
}, {
"start_time": "234.22",
"speaker_label": "spk_1",
"end_time": "234.29"
}, {
"start_time": "234.29",
"speaker_label": "spk_1",
"end_time": "234.53"
}, {
"start_time": "234.53",
"speaker_label": "spk_1",
"end_time": "234.6"
}, {
"start_time": "234.6",
"speaker_label": "spk_1",
"end_time": "235.03"
}, {
"start_time": "235.03",
"speaker_label": "spk_1",
"end_time": "235.2"
}, {
"start_time": "235.2",
"speaker_label": "spk_1",
"end_time": "235.44"
}, {
"start_time": "235.44",
"speaker_label": "spk_1",
"end_time": "235.63"
}, {
"start_time": "235.63",
"speaker_label": "spk_1",
"end_time": "236.17"
}, {
"start_time": "236.17",
"speaker_label": "spk_1",
"end_time": "236.48"
}, {
"start_time": "236.48",
"speaker_label": "spk_1",
"end_time": "236.59"
}, {
"start_time": "236.59",
"speaker_label": "spk_1",