Developer Community And Conference Conversations: Mike Hall Interviews Mike Miller
Developer Community And Conference Conversations: Mike Hall Interviews Mike Miller
โข
UGtastic Archive
Full Transcript Available
๐ Meet Mike Miller, founder and chief scientist of Cloudant Technology! ๐ He discusses the importance of Cloudant to the CouchDB project and the challenges of building a CDN for databases. ๐ #CouchDB #Cloudant #BigData #MobileComputing #DatabaseCDN
The Interviewer
Mike Hall
Interviewer, UGtastic
The Guest
Mike Miller
developer community and conference conversations
The Conversation
Mike Hall
Interviewer, UGtastic
Hi, it's Mike again with NukeTastic. I'm here today again at the GoToChicago conference, GoToChicago 2013. I'm sitting down with Mike Miller, who is the founder and chief scientist of Cloudant Technology, or Cloudant?
Mike Miller
developer community and conference conversations
Just Cloudant. Cloudant. And their database is a service company. Their specialty is CouchDB and BigCouch.
Mike Hall
Interviewer, UGtastic
So thank you very much for taking the time to sit down, Mike. Thanks for the chance. Okay, the CouchDB, how did Cloudant get to be involved with the CouchDB project?
Mike Miller
developer community and conference conversations
Very good question. Is it okay if I just back up a little bit and give you kind of one overall kind of mission statement, like a theme for the company? Absolutely. Yeah, so we started the company because our backgrounds were in big stuff. So we started the company because our backgrounds were in big stuff. So we started big stuff. So we started the company because our backgrounds were in big stuff. So we started science and big data from Large Hadron Collider and CERN. A lot. So some of the biggest data sets in the world. Some big data. Yeah, and we got the feeling that big data was going to be a thing.
Mike Hall
Interviewer, UGtastic
Right.
Mike Miller
developer community and conference conversations
And that if it was a problem for us, it was eventually going to be a problem for everybody. I think that's been borne out. But the other thing we learned over the last four years since we did Y Combinator is that mobile is also a big thing. And so I think these, I think the founder of Joyent put it best, that mobile and big data have broken our model of computing.
Mike Hall
Interviewer, UGtastic
Right.
Mike Miller
developer community and conference conversations
So that's what Cloudant is trying to solve. And so we're trying to build a CDN for your database. And so we run that as a service. And if you step back and say, of all the APIs and systems out there that can really deal with big as well as disconnected, you know, that takes you directly and only to CouchDB. So that's how we got integrated with the projects. And so we brought a lot of IP to that project, both internally and in the open source.
Mike Hall
Interviewer, UGtastic
Okay.
Mike Miller
developer community and conference conversations
And that's really the API layer that we're using, you know, for this big vision of solving those two problems. But why do you think Cloudant is so important to CouchDB and why is it so important to CouchDB as well? I think it's really important to CouchDB and why is it so important to CouchDB and why is it so important to CouchDB and why is it so important to CouchDB? I think it's really important to CouchDB and why is it so important to CouchDB and why is it so important to CouchDB and why is it so important to CouchDB and why is it so important to CouchDB and why is it so important to CouchDB? I think it's really important to CouchDB and why is it so important to CouchDB and why is it so important to CouchDB and why is it so important to CouchDB and why is it so important to CouchDB and why is it so important to CouchDB and why is it so important to CouchDB and why is it so important to CouchDB and why is it so important to CouchDB and why is it so important to CouchDB and why is it so important to CouchDB and why is it so important to CouchDB and why is it so important to CouchDB and why is it so important to CouchDB and why is it so important to CouchDB and why is it so important to CouchDB and why is it so important to CouchDB and why is it so important to CouchDB and why is it so important to CouchDB and why is it so important to CouchDB and why is it so important to CouchDB and why is it so important to CouchDB and why is it so important to CouchDB and why is it so important to CouchDB and why is it so important to CouchDB and why is causally disconnected initially, but they can be synchronized at a later point in time, which is, I think, what mobile really requires. And then the other thing is just Couch is, it's pretty radical from the API standpoint if you're used to using a relational database, right? Yeah, it's a very different...
Mike Hall
Interviewer, UGtastic
It's totally different, right?
Mike Miller
developer community and conference conversations
... approach.
Mike Hall
Interviewer, UGtastic
But I think it's very forward-thinking in the sense that, okay, the Internet happened, right?
Mike Miller
developer community and conference conversations
People use JSON, and, you know, everything speaks HTTP.
Mike Hall
Interviewer, UGtastic
Well, briefly, could you just kind of describe why Couch is different?
Mike Miller
developer community and conference conversations
So, if somebody's watching and they haven't used Couch at all, a little... Yeah, absolutely. ... maybe comparing, they probably know Mongo, because that's really famous.
Mike Hall
Interviewer, UGtastic
Sure. But Couch, how is it different than Mongo?
Mike Miller
developer community and conference conversations
So, I think it's... I've got a couple answers to that. I think number one is that it's a document database, and I think it's maybe the first document database. I think it really coined that phrase.
Mike Hall
Interviewer, UGtastic
Okay.
Mike Miller
developer community and conference conversations
And it's been... It's a pure community project. There is not a company that started and then built it and released it.
Mike Hall
Interviewer, UGtastic
Right.
Mike Miller
developer community and conference conversations
So, I often compare, you know, Mongo and CouchDB as, like, MySQL and Postgres.
Mike Hall
Interviewer, UGtastic
Okay.
Mike Miller
developer community and conference conversations
Like, CouchDB community is slow, it's deliberate, and it's in it, you know, for the decades.
Mike Hall
Interviewer, UGtastic
Right. Right.
Mike Miller
developer community and conference conversations
It's not necessarily, like, "Got to get to market right now. " Yeah. And that defines the culture and the product path a lot. But from the API standpoint, it's very different, right, than a typical database. Just from the way you talk to it, your database...
Mike Hall
Interviewer, UGtastic
Yeah.
Mike Miller
developer community and conference conversations
It's like a web server, which is pretty radical if you worked on, like, big enterprise IT.
Mike Hall
Interviewer, UGtastic
Right. Right.
Mike Miller
developer community and conference conversations
Like, usually locked on the database. In this case, it's like, "Well, you know, the internet has taught us how to build very secure and high availability, you know, systems, so let's just bake that into the database itself and think about, you know, working towards a goal of eliminating the middle tier if you want to, and just let the database do a lot of the things that you generally need. " Well, one thing that I think when somebody first looks at CouchDB, as somebody who's come fresh to it myself...
Mike Hall
Interviewer, UGtastic
Yeah.
Mike Miller
developer community and conference conversations
... is that you don't write queries in the same way. It's more queries up front, and then you start pushing data into the queries than defining a schema or just pushing raw data into a...
Mike Hall
Interviewer, UGtastic
Yeah.
Mike Miller
developer community and conference conversations
It's different.
Mike Hall
Interviewer, UGtastic
Yeah.
Mike Miller
developer community and conference conversations
So the thing about a document database is the idea that in contrast, like, column stores like Cassandra, HBase, or Bigtable, it's not schematized.
Mike Hall
Interviewer, UGtastic
Right.
Mike Miller
developer community and conference conversations
And so you don't have to sit down and pre-declare what you're going to put in and be limited in how you can query that later on.
Mike Hall
Interviewer, UGtastic
Yeah.
Mike Miller
developer community and conference conversations
You don't have to go down downstream in your project. With a document database, the idea is you can always build a new index to do what you need to.
Mike Hall
Interviewer, UGtastic
Right.
Mike Miller
developer community and conference conversations
So that's step number one. But step number two is CouchDB is very much from the ground up built to be stable in production, and so things like table scans don't really exist.
Mike Hall
Interviewer, UGtastic
Right.
Mike Miller
developer community and conference conversations
Because they're neat when you're starting a project, but in production, they suck.
Mike Hall
Interviewer, UGtastic
Yeah. Right?
Mike Miller
developer community and conference conversations
They're the things that make your site go offline.
Mike Hall
Interviewer, UGtastic
Yeah.
Mike Miller
developer community and conference conversations
And so it's very much about recognizing that disk is cheap, so let's store your data durably. Let's make sure it's always flush to disk with an accurate... F-sync before we succeed a response. Let's make sure that you can pre-compute that data using that incremental indexing engine, which is very unique, so that no matter how the data is stored, it's prepared in exactly the way your application wants to consume it.
Mike Hall
Interviewer, UGtastic
Right.
Mike Miller
developer community and conference conversations
To load a page, drive an app, leaderboard, you name it. And then the third thing is, I think it's... And this is where it really differs from all other databases.
Mike Hall
Interviewer, UGtastic
Right?
Mike Miller
developer community and conference conversations
Traditionally, databases are like a single cursor, and you make that cursor really fast because a database may be running on the exact same server that the application is.
Mike Hall
Interviewer, UGtastic
Right? Right. So it's like, "Oh, can we beat microseconds? Can we get to nanoseconds?
Mike Miller
developer community and conference conversations
" And that's awesome, but when you're talking to it from your phone, that's a total waste.
Mike Hall
Interviewer, UGtastic
Right.
Mike Miller
developer community and conference conversations
And what you really want is concurrency. So the CouchDB philosophy, and this is supported in all the different backends that implement the API, like whether it's Cloudant or like CouchDB running in your browser, is like all the things you need to load a page in your app, throw them at the database at the same time, and deal with those in Ajax fashion.
Mike Hall
Interviewer, UGtastic
Right.
Mike Miller
developer community and conference conversations
Asynchronously, as they come back.
Mike Hall
Interviewer, UGtastic
Okay.
Mike Miller
developer community and conference conversations
And so it's like, "Oh, as long as each of those succeeds in, you know, order 10 milliseconds," you know, in Cloud, when we try to do single millisecond, then you're fine. And you can, you know, be well under that 100 millisecond kind of human tolerance for latency.
Mike Hall
Interviewer, UGtastic
Okay.
Mike Miller
developer community and conference conversations
So it's a very different philosophy than single cursor. So I'm really curious about how... So earlier you alluded to that the Cloudant employees are committing to the CouchDB project. It isn't a fork. You didn't fork them. You forked off the CouchDB, and now this is the Cloudant-specific, you know, branded. We're going to add some proprietary things. No, you're contributing into the community project.
Mike Hall
Interviewer, UGtastic
Yeah.
Mike Miller
developer community and conference conversations
I can try to be a little more precise with that.
Mike Hall
Interviewer, UGtastic
Okay.
Mike Miller
developer community and conference conversations
So we've adopted certain portions of CouchDB in our stack. We've taken the API layer, and 95% of it, there are certain things we've turned off that we think are unstable in production at scale. So we try to make sure that people can go back and forth between megabytes to petabytes, right, without surprises, which is a pretty big challenge. Yeah, yeah. It's a big challenge. And we love the persistency model. So the engine that actually stores data, this unique append-only B+ tree is fantastic because you never lose data.
Mike Hall
Interviewer, UGtastic
Right.
Mike Miller
developer community and conference conversations
We take our systems down with kill-9.
Mike Hall
Interviewer, UGtastic
Okay.
Mike Miller
developer community and conference conversations
There's no graceful shutdown. Yeah, yeah. That's just...
Mike Hall
Interviewer, UGtastic
Right?
Mike Miller
developer community and conference conversations
Because it's always consistent. There's no write-ahead lock. So we love that. The stuff in the middle, you know, CouchDB in its current state is a single server application. You can do replicas, you know. So with CloudNode, we brought RIP, which is, like, predominantly inspired by Dynamo, the original Amazon paper.
Mike Hall
Interviewer, UGtastic
Right.
Mike Miller
developer community and conference conversations
So like Cassandra, like what you find in React, it is masterless. It's symmetric. No single point of failure. So we put that in between the API and the persistency level, and that's, you know, what we run in our service. So with CloudNode, we'll take a single machine, then we'll turn that into a three-node, you know, a single CouchDB machine can turn into a three-node cluster where we store your data redundantly, and we just add nodes to that. Our biggest cluster is, like, 250 nodes right now. So it just scales as you need it to, and it's very graceful. So you have a CloudNode build. Yep. But how does that work with attribute patches back to Couch for what you, what, "Hey, this is really good. This is a bug fix. This is going to benefit everybody and ourselves. " So that's what we did initially.
Mike Hall
Interviewer, UGtastic
Okay.
Mike Miller
developer community and conference conversations
And then, so we've had kind of our code base in the CouchDB code base, and we've been contributing, you know, cherry-picking what we can, contributing, and actually all the time trying to help foster CouchDB to hopefully grow in a direction where it would be ready to be, like, a fully clustered service.
Mike Hall
Interviewer, UGtastic
Right.
Mike Miller
developer community and conference conversations
And so I think it was about two years ago, then we said, "Okay, the code bases are now close enough, right, that we could make a fork of CouchDB. " Okay. Put our clustering technology back into it with a path of getting that ultimately back into CouchDB.
Mike Hall
Interviewer, UGtastic
Okay.
Mike Miller
developer community and conference conversations
So that was Big Couch, and that was great. That solved the need for people who were running CouchDB themselves. Mm-hmm. And wanted to, and wanted to be able to, you know, scale beyond, you know, replica sets. And now, actually, just, I think, a month ago, we got to the point where the code bases were close enough that we could then take a lot more of what we had beyond even just Big Couch.
Mike Hall
Interviewer, UGtastic
Right.
Mike Miller
developer community and conference conversations
Everything from, like, how we do compaction with multiple file schemes, you know, auto-indexing, and quite a big chunk of our IP.
Mike Hall
Interviewer, UGtastic
Right.
Mike Miller
developer community and conference conversations
Right, as our board pointed out. So -- And put that back into a branch of CouchDB. So Big Couch is dead. It's no longer being developed on all that work has gone back into a branch of CouchDB, which we call the Nebraska Merge branch.
Mike Hall
Interviewer, UGtastic
Okay.
Mike Miller
developer community and conference conversations
Because we took our best engineers, took them offline for a week, sent them to one of the engineers' homes in Omaha, I think. Paul Davis' house. And then they just heads down, and there's a great blog post where you can follow, I don't know how many commits it was, 500 to 1,000 commits. Wow, they just cranked it up. They got it back to a point where it's like, "Okay, here's something we can give back to the community. " Now the Apache review process began.
Mike Hall
Interviewer, UGtastic
Yeah.
Mike Miller
developer community and conference conversations
So the review process begins, but the hope -- So that's a serious commitment to the community. Serious commitment, yeah. And so the hope is that when CouchDB 2. 0, or if we can do it around that time, comes out, then CouchDB will finally have a fully horizontally clustered story around it. So that kind of goes back to my initial point, like the Postgres style. We tried to do it deliberately and, you know, let the community kind of -- you know, we can say, "Okay, here. Here it is. " You know, sit back, take a poke at it, see if it stands up, and, you know, hopefully the community will accept that as well. Hopefully the community will accept that as a very good thing. So if I'm looking at evaluating a database, I'm looking at all the community options out there. I'm looking at Couch. I'm looking at Mongo. I'm looking at React. I'm looking -- I'm just thinking of some of the ones that are here and are popular, or MySQL.
Mike Hall
Interviewer, UGtastic
Do you have any recommendations for how they can evaluate and look at or get more information? Yeah.
Mike Miller
developer community and conference conversations
I think what we try to do is understand what the needs are from the application perspective. And so the things that we look for are, like, scale, predictability in production, which is a big one, I think, if you look at, you know, systems that pick things in memory and require that versus systems that are really built to be all disk from the beginning.
Mike Hall
Interviewer, UGtastic
And then the really big thing is, is there a distributed nature to this? You know?
Mike Miller
developer community and conference conversations
The CouchDB model that we're really -- And we really love that model. So there's no global right master.
Mike Hall
Interviewer, UGtastic
Right.
Mike Miller
developer community and conference conversations
That's like a huge -- that's like saying the speed of light. Well, I said right as if I really understood what that implication was.
Mike Hall
Interviewer, UGtastic
Yeah.
Mike Miller
developer community and conference conversations
This is just like, let's step back.
Mike Hall
Interviewer, UGtastic
Like, I'm a physicist, right? Yeah.
Mike Miller
developer community and conference conversations
Like, you know, Einstein was awesome because he'd be like, here's this thing we always thought was true. And it turns out it's not.
Mike Hall
Interviewer, UGtastic
Okay.
Mike Miller
developer community and conference conversations
And because of that, we can do amazing things.
Mike Hall
Interviewer, UGtastic
Right?
Mike Miller
developer community and conference conversations
I can launch satellites. I can do GPS. I can, you know, I can build particle accelerators. All of this is true because -- So it breaks some constraints. Nothing can go faster than the speed of light.
Mike Hall
Interviewer, UGtastic
Yeah.
Mike Miller
developer community and conference conversations
And that means time's not constant. That was his big thing. Oh, time's not constant.
Mike Hall
Interviewer, UGtastic
Right?
Mike Miller
developer community and conference conversations
And so in this case, I think developers are so used to assuming they have to have a global right master.
Mike Hall
Interviewer, UGtastic
Okay.
Mike Miller
developer community and conference conversations
But in this disconnected world of mobile devices that are everywhere and, like, you and I travel around the globe, right? Mm-hmm.
Mike Hall
Interviewer, UGtastic
Why do my applications always have to call back to, like, North Virginia?
Mike Miller
developer community and conference conversations
Like -- Okay. All right. That's ridiculous. So why can't my phone be the global -- can be, you know, the place where I write information now?
Mike Hall
Interviewer, UGtastic
And then I can synchronize that later, right? Okay.
Mike Miller
developer community and conference conversations
And so that is the number one thing that should take you to CouchDB.
Mike Hall
Interviewer, UGtastic
Okay.
Mike Miller
developer community and conference conversations
It is the only database that ships with a mobile strategy. So it gets you away from that, I have to have this -- Yeah. -- canonical, this is the -- all that database of record stuff. Three-tier stack, dah, dah, dah.
Mike Hall
Interviewer, UGtastic
Yeah.
Mike Miller
developer community and conference conversations
I know exactly how to do this. I've done this for 30 years.
Mike Hall
Interviewer, UGtastic
Yeah. Exactly.
Mike Miller
developer community and conference conversations
It's -- and in that sense, it's revolutionary. And I think it will take a long time for developers to fully understand the power of that. And that's something that we're trying to help kind of evangelize now. Mm-hmm. But once you release that constraint, it's incredibly free. And you can do some incredible things with it.
Mike Hall
Interviewer, UGtastic
Is CouchDB something that developers can really look at and contribute back to?
Mike Miller
developer community and conference conversations
Is there -- are there opportunities maybe for somebody who's not a data scientist to be able to contribute to Couch?
Mike Hall
Interviewer, UGtastic
Yeah.
Mike Miller
developer community and conference conversations
Absolutely. You don't have to -- you don't even have to be able to code.
Mike Hall
Interviewer, UGtastic
Yeah.
Mike Miller
developer community and conference conversations
So the community is very welcoming. And that's one of the things we really loved about it when we were first looking at kind of API tiers that we could, you know, start to leverage to build this database as a service. And the community continues to be vibrant. There's a great post by, you know, by Noah Slater thanking CouchDB. And he doesn't even -- I don't -- apologies to Noah if he watches and I get this wrong. Because I haven't met him in person.
Mike Hall
Interviewer, UGtastic
Right.
Mike Miller
developer community and conference conversations
We've corresponded a lot, you know, through the community. I don't think he even pushes Erlang code.
Mike Hall
Interviewer, UGtastic
Right?
Mike Miller
developer community and conference conversations
So you can jump in with documentation. You can jump in with, you know, being a part of the community, just answering questions about how to use it on email lists. And there's, I think, a lot of people who are interested in CouchDB. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. And I think that's something that's really important.